Probleme mit matzh operatoren und mysql error

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • #31
    Was glaubst du, wie es der Geldautomat deiner Bank macht?

    Einfach vorher den Kontostand prüfen.

    Kommentar


    • #32
      also erst den kono stand abfragen und dann gucken ob der wert der abgehoben werden soll größer ist als dieser wert. und wenn ja, dann sagen: Du kasnnst nicht mehr geld abheben. eigentlich ganz einfach.

      Kommentar


      • #33
        Ja, ne!

        Kommentar


        • #34
          Ohne jetzt gross auf den Rest einzugehen:
          PHP-Code:
          $result mysql_query($sql) or die (mysql_error());
          if(
          $result == "true")

          wird wohl nie zutreffen. Wäre mir auf jeden Fall neu, dass mysql_query() einen String zurück gibt.
          Gruss
          H2O

          Kommentar


          • #35
            Original geschrieben von H2O
            Ohne jetzt gross auf den Rest einzugehen:
            PHP-Code:
            $result mysql_query($sql) or die (mysql_error());
            if(
            $result == "true")

            wird wohl nie zutreffen. Wäre mir auf jeden Fall neu, dass mysql_query() einen String zurück gibt.
            Bei (unter anderem) UPDATE-Queries gibt mysql_query() im Erfolgsfall bool true zurück. Da PHP allerdings eine schwach typisierte Sprache ist, trifft $result == 'true' ('true' ist eine nicht leere Zeichenkette und dadurch nicht false) durchaus zu. $result === 'true' hingegen würde fehlschlagen.

            Grüße
            Zuletzt geändert von Griecherus; 16.06.2008, 12:55.
            Nieder mit der Camel Case-Konvention

            Kommentar


            • #36
              Ihr berücksichtigt beide nicht, dass der Code gar nicht mehr ausgeführt wird, falls "false" zurückgegeben wird.

              Kommentar


              • #37
                Original geschrieben von TobiaZ
                Ihr berücksichtigt beide nicht, dass der Code gar nicht mehr ausgeführt wird, falls "false" zurückgegeben wird.
                Ich zumindest bewusst nicht. Es ging mir nur darum klarzustellen, dass eine solche Bedigung durchaus true ergeben könnte, wenn...

                Grüße
                Nieder mit der Camel Case-Konvention

                Kommentar


                • #38
                  aber warum funzt folgender code nicht:
                  PHP-Code:
                  function geldauszahlen($auszahl)
                  {
                      
                  $sql="SELECT bankgeld
                      FROM users
                      WHERE UserSession='"
                  .session_id()."'
                      LIMIT 1"
                  ;
                  $result=mysql_query($sql) or die (mysql_error());
                      
                  $konto=mysql_fetch_object($result);
                      
                  $konto=$konto->bankgeld;
                      if(
                  $konto<$auszahl)
                      {
                      
                  $sql "UPDATE users SET bankgeld=bankgeld-" intval $auszahl ) .
                  " WHERE UserSession = '" mysql_real_escape_string session_id () ) . "'";
                  $result=mysql_query($sql) or die (mysql_error());

                  $sql "UPDATE users SET geld=geld+" intval $auszahl ) .
                  " WHERE UserSession = '" mysql_real_escape_string session_id ( ) ) . "'";
                  $result=mysql_query($sql) or die (mysql_error());
                  if(
                  $result=="true")
                  {
                  echo 
                  "<br>Das Geld wurde dir in dein Inventar ausgezahlt!";
                  }
                  else
                  {
                  echo 
                  "<br>Es gab einen Fehler bei der Transaktion! Bitte versuche es erneut mit einer anderen Summe!";
                  }
                      }
                  else
                      {
                  echo 
                  "Du hast nicht genug Geld auf der Bank!";
                      }

                  Kommentar


                  • #39
                    Falsche Frage!!!
                    Wie oft muss man noch erwähnen, dass "funzt nicht" keine Problembeschreibung ist.

                    Kommentar


                    • #40
                      Mit der nicht vorhandenen Problembeschreibung ist es, wie TobiaZ schon gesagt hat, nicht möglich, den Fehler zu sehen.
                      Aber einfach noch ein paar Anmerkungen:
                      • UPDATE's können mehr als ein Feld ändern:
                        PHP-Code:
                        $sql "
                            UPDATE 
                                users 
                            SET 
                                bankgeld = bankgeld - " 
                        intval($auszahl) . ", 
                                geld = geld + " 
                        intval($auszahl) . "
                            WHERE 
                                UserSession = '" 
                        mysql_real_escape_string(session_id()) . "'"
                      • Die Abfrage heisst nicht
                        PHP-Code:
                        if($result == "true"){ 
                        sondern
                        PHP-Code:
                        if($result == true){ 
                      • Wie TobiaZ aber auch schon richtig bemerkt hat, ist diese Abfrage sowieso überflüssig, denn wenn nicht true zurückgegeben wird, wird das Script vorher beendet(die(...))
                      • Wenn du deinen Code etwas besser formatieren würdest, würde das auch die Hilfe erleichtern.
                      Gruss
                      H2O

                      Kommentar


                      • #41
                        Dann aber besser gleich
                        PHP-Code:
                        $result === true 
                        bzw.
                        PHP-Code:
                        $result === false 
                        Grüße
                        Nieder mit der Camel Case-Konvention

                        Kommentar


                        • #42
                          Problembeschreibung:
                          Es wir dienfach die Textstelle übersprungen und ich kann trotzdem so viel abheben wie ich will.
                          zu updates:
                          das wurde schon erwähnt, ich hatte nur noch nicht die zeit das zu ändern.

                          und hieß es nicht vorgestern dass ich
                          PHP-Code:
                          if($rsult===true
                          nicht nutzen sollP?
                          Zuletzt geändert von Champ Wasili; 17.06.2008, 17:04.

                          Kommentar


                          • #43
                            Problembeschreibung:
                            Es wir dienfach die Textstelle übersprungen und ich kann trotzdem so viel abheben wie ich will.
                            Klasse, ich geb mir mit meinen Antworten auch mal so viel Mühe: "Machs doch alleine weiter!

                            zu updates:
                            das wurde schon erwähnt, ich hatte nur noch nicht die zeit das zu ändern.
                            Wenn du nicht die Zeit hast korrekturen einzubauen (ganz zu schweigen davon, dass du längst den code formatieren solltest), dann solltest du auch nicht unsere Zeit "stehlen", indem du uns durch deinen Murks suchen lässt...

                            und hieß es nicht vorgestern dass ich
                            if($rsult===true)
                            nicht nutzen sollP?
                            Die Frage beantwortest du dir am besten, indem du den Thread nochmal durchliest und nachvollziehst.

                            Viel Spaß!

                            Kommentar


                            • #44
                              achso. das wurde geschrieben:
                              PHP-Code:
                              $result === 'true' 
                              #hingegen würde fehlschlagen. 
                              und wenn ich das richtig interpretiere muss das
                              PHP-Code:
                              $result === true 
                              heißen, richtig?

                              hab das mit den zwei queries eingebaut, aber dann kommfunction die meldung:

                              Parse error: syntax error, unexpected T_STRING in ...sessionhelpers.inc.php on line 205

                              und die problembeschreibung:
                              Ich habe in mein script eingebaut, das wenn $auszahl, also die summe die ausgezahlt werden soll, größer ist als die summe die noch auf dem konto ist, dass dann die meldung kommen soll: dein Kponto weißt nicht genügend deckung auf! Aber Dies passiert nicht, auch wenn ich 9millionen $ zuviel abhebe.

                              CODEmit einem Query):
                              PHP-Code:
                              function geldauszahlen($auszahl)
                              {
                                  
                              $sql="SELECT bankgeld
                                  FROM users
                                  WHERE UserSession='"
                              .session_id()."'
                                  LIMIT 1"
                              ;
                              $result=mysql_query($sql) or die (mysql_error());
                                  
                              $konto=mysql_fetch_object($result);
                                  
                              $konto=$konto->bankgeld;
                                  if(
                              $konto<$auszahl)
                                  {
                                  
                              $sql "UPDATE users SET 
                                              bankgeld=bankgeld-' . 
                              $auszahl . ',
                                              geld=geld+' . 
                              $auszahl . '
                              WHERE UserSession '" . mysql_real_escape_string ( session_id () ) . "'";
                              $result=mysql_query($sql) or die (mysql_error());
                              if(
                              $result=="true")
                              {
                              echo "
                              <br>Das Geld wurde dir in dein Inventar ausgezahlt!";
                              }
                              else
                              {
                              echo "
                              <br>Es gab einen Fehler bei der TransaktionBitte versuche es erneut mit einer anderen Summe!";
                              }
                                  }
                              else
                                  {
                              echo "
                              Du hast nicht genug Geld auf der Bank!";
                                  }

                              CODE(mit zwei Querys):
                              PHP-Code:
                              function geldauszahlen($auszahl)
                              {
                                  
                              $sql="SELECT bankgeld
                                  FROM users
                                  WHERE UserSession='"
                              .session_id()."'
                                  LIMIT 1"
                              ;
                              $result=mysql_query($sql) or die (mysql_error());
                                  
                              $konto=mysql_fetch_object($result);
                                  
                              $konto=$konto->bankgeld;
                                  if(
                              $konto<$auszahl)
                                  {
                                  
                              $sql "UPDATE users SET 
                                  bankgeld=bankgeld-" 
                              intval $auszahl ) .
                              " WHERE UserSession = '" mysql_real_escape_string session_id () ) . "'";
                              $result=mysql_query($sql) or die (mysql_error());

                              $sql "UPDATE users SET geld=geld+" intval $auszahl ) .
                              " WHERE UserSession = '" mysql_real_escape_string session_id ( ) ) . "'";
                              $result=mysql_query($sql) or die (mysql_error());
                              if(
                              $result=="true")
                              {
                              echo 
                              "<br>Das Geld wurde dir in dein Inventar ausgezahlt!";
                              }
                              else
                              {
                              echo 
                              "<br>Es gab einen Fehler bei der Transaktion! Bitte versuche es erneut mit einer anderen Summe!";
                              }
                                  }
                              else
                                  {
                              echo 
                              "Du hast nicht genug Geld auf der Bank!";
                                  }

                              UND jetzt kommts:
                              ICH HABE EINEN FEHLER GEFUNDEN!!!!!!!!!!!!!!!!!!
                              ich hatte größer kleiner vertauscht
                              ABER es funktioniert immer noch nicht(Beschreibung sie he oben)

                              Kommentar


                              • #45
                                und wenn ich das richtig interpretiere muss das
                                $result === true
                                heißen, richtig?
                                Ja, wobei ich auch bereits darauf hingewiesen habe, dass $result an dieser Stelle NIEMALS false sein wird. Folglich ist die Abfrage absolut überflüssig.

                                hab das mit den zwei queries eingebaut, aber dann kommfunction die meldung:

                                Parse error: syntax error, unexpected T_STRING in ...sessionhelpers.inc.php on line 205
                                Komisch, weil die Meldung sich eigentlich auf eine ganz andere Datei bezieht.

                                Naja, dennoch solltest du deinen Fehler eigentlich recht deutlich am Code-Highlighting erkennen:
                                PHP-Code:
                                $sql "UPDATE users SET 
                                                bankgeld=bankgeld-' . 
                                $auszahl . ',
                                                geld=geld+' . 
                                $auszahl . '
                                WHERE UserSession '" . mysql_real_escape_string ( session_id () ) . "'"; 
                                Kontrollier doch einfach mal die Anzahl der Anführungszeichen. Eine Ungerade Anzahl ist fast immer falsch. So viel Grundverständnis sollte so langsam vorhanden sein.

                                Kommentar

                                Lädt...
                                X