Mein Script schreibt doppelt in die Datenbank, warum?

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

  • Mein Script schreibt doppelt in die Datenbank, warum?

    Manchmal macht mir PHP graue Haare, diesmal funktioniert header - location zu gut:

    PHP-Code:
    <?php
        session_start
    ();
        include_once(
    'val_login.inc.php');
        include_once(
    '../connect.inc.php');
        
    // Radiobutten abfragen
        
    if($_POST[radio] == 0)
            {
                
    // nicht bestaetigt, zurueck zur Seite cajero
                
    header("location: http://orenidle.org/intra/intern/cajero.php");
                exit();
            }
            else
                {
                    
    // bestaetigt, Kundenkonto holen
                    
    $sql "SELECT  kontostand
                            FROM    tblkundenstat
                            WHERE   kundenID = 
    $_SESSION[kundenID]";
                    
    $result mysql_query($sql) or die(mysql_error());
                }
        
        
    echo 
    "<pre>";
    print_r($_POST);
    echo 
    "</pre>";

    echo 
    "<pre>";
    print_r($result);
    echo 
    "</pre>";
    ?>
    also ich lande in beiden Fällen auf der cajero Seite, solange ich die Weiterleitung drin habe. Gebe ich statt dessen eine echo aus (mit dem jeweiligen Wert von result zum Beispiel), läuft alles wie geplant und ich bin immer im richtigen Zweig.

    Warum leitet mich der header immer weiter, auch wenn radio == 1 ist?

    Gruß Maribel

  • #2
    Ok, einen Fehler habe ich selber gefunden, das Ergebnis kommt ja als String zurück und ist damit nie gleich einer Zahl.

    PHP-Code:
    $radio = (int)$_POST[radio];     
    if (
    $radio == 0
    nun ist $radio integer und trotzdem leitet es mich in beiden Fällen auf die Cajero Seite.

    Was ist denn da nun noch faul?

    Gruß Maribel
    Zuletzt geändert von Maribel; 16.05.2008, 01:53.

    Kommentar


    • #3
      Dreh mal dein error_reporting auf!

      Kommentar


      • #4
        Notice: Use of undefined constant radio - assumed 'radio' in /home/adm3031/public_html/db/intra/intern/verkauf2.php on line 10

        Warning: Cannot modify header information - headers already sent by (output started at /home/adm3031/public_html/db/intra/intern/verkauf2.php:10) in /home/adm3031/public_html/db/intra/intern/verkauf2.php on line 14
        Was das erste heißen soll, keine Ahnung, auch nicht, wie man es abstellt

        Der zweite Fehler kommt nun wegen der Notice:, das leuchtet mir noch ein.

        Gruß Maribel

        Kommentar


        • #5
          Ok, warum einfach, wenn es auch kompliziert geht:

          Übergebe nun einfach "si" oder "no" bei den radio butten und frage nun auch einen String ab:

          PHP-Code:
          if ($_POST[radio] == "no"
          Aber die Fehlermeldungen bleiben trotzdem.

          Kommentar


          • #6
            $_POST['radio'], nachzulesen unter types.array im Abschnitt do's and don'ts.

            Kommentar


            • #7
              Ei ei, danke Dir. mal sehen ob es nun funktioniert.

              Naja, am Anfang waren es Semikolons und Klammern, nun sind es Anführungszeichen und Hochkommas.

              Gruß Maribel

              Edit:

              Ja, soweit funktioniert das nun, bis das nun wieder keine header Weiterleitung mehr geht, aber das kenne ich ja schon
              Zuletzt geändert von Maribel; 16.05.2008, 02:29.

              Kommentar


              • #8
                PHP-Code:
                [...] WHERE kundenID $_SESSION[kundenID]"; 
                PHP-Code:
                [...] WHERE kundenID = {$_SESSION['kundenID']}"; 
                Mein PHP Blog

                Kommentar


                • #9
                  Das bringt mir einen Sytaxerror:

                  Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE,
                  expecting T_STRING or T_VARIABLE or T_NUM_STRING in /home/adm3031/public_html/db/intra/intern/verkauf2.php on line 18
                  kann also so nicht richtig sein.

                  Gruß Maribel

                  Kommentar


                  • #10
                    Zeig mal den aktuellen Code!

                    Kommentar


                    • #11
                      PHP-Code:
                      <?php
                          session_start
                      ();
                          include_once(
                      'val_login.inc.php');
                          include_once(
                      '../connect.inc.php');
                          
                      error_reporting(E_ALL);
                          
                      ini_set('display_errors'1);
                          
                      ini_set('ignore_repeated_source'1);
                          
                      ini_set('html_errors'1);
                          
                      // Radiobutten abfragen  
                          
                      if ($_POST['radio'] == "no")
                              {
                                  
                      // nicht bestaetigt, zurueck zur Seite cajero
                                  
                      header("location: http://orenidle.org/intra/intern/cajero.php");
                                  exit();
                              }
                              else
                                  {
                                      
                      // bestaetigt, Kundenkonto holen
                                      
                      $sql "SELECT  kstatID,
                                                      kontostand
                                              FROM    tblkundenstat
                                              WHERE   kundenID = 
                      $_SESSION[kundenID]";
                                      
                      $result mysql_query($sql) or die(mysql_error());
                                      
                      $qry mysql_query($sql);
                                      
                      $result mysql_fetch_assoc($qry);
                                  }
                          
                      // Variablen fuers Update fuellen
                          
                      $kstatID = (int)$result['kstatID'];
                          
                      $kontostand = (int)$result['kontostand'];
                          
                      $kontostandneu $kontostand + ($_SESSION['cuponpreis']);
                          unset(
                      $kontostand);
                          
                              
                      // Update SQL Befehl aufbauen
                              
                      $sql "UPDATE
                                          tblkundenstat
                                      SET
                                          kontostand = 
                      $kontostandneu
                                      WHERE
                                          kstatID = 
                      $kstatID";
                              
                      // Werte schreiben
                              
                      $mem mysql_query($sql) or die(mysql_error());
                              
                          
                      // Kassebucheintrag vorbereiten
                      ?>
                      soweit bin ich gerade, keine Fehler, alle Variablen stimmen nur Header geht nicht.

                      Gruß Maribel

                      Kommentar


                      • #12
                        Location mit großem L schreiben!

                        Hier ist das RFC zu HTTP. Ab jetzt schaust du erst da rein, wenn mal wieder was mit Header nicht klappt, okay?
                        Jetzt liest du deinen Code noch mal in Ruhe durch.
                        2x die selbe Query ...
                        kundenID nicht in ' ...
                        $result gar nicht definiert, wenn if-Bedingung true (ja ich sehe das exit) ...
                        Zuletzt geändert von onemorenerd; 16.05.2008, 10:32.

                        Kommentar


                        • #13
                          und schau dir auch mal das hier zum thema zeichenkettenverknüpfungen an.

                          gruß
                          peter
                          Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
                          Meine Seite

                          Kommentar


                          • #14
                            Aber die Fehlermeldungen bleiben trotzdem.
                            [...]
                            soweit bin ich gerade, keine Fehler, alle Variablen stimmen nur Header geht nicht.
                            Was passiert wenn die Seite zum ersten Mal aufgerufen wird, sprich das Form noch nicht verschickt wurde? Du machst dann einen Vergleich mit einer nicht-existierenden Variable und das gibt garantiert eine Meldung von PHP. Prüfe erst mit isset() ob die Var überhaupt gesetzt ist, bevor du einen Vergleich damit anstellen willst.
                            Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                            [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                            Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                            Kommentar


                            • #15
                              Ja, ok, ist ja wieder schon fast 5Uhr.

                              Das mit dem $result habe ich eh nicht richtig verstanden, ist es nicht eigentlich egal, welche Variable (array) man da verwendet?

                              Und was meinst Du mit nicht definiert bei true, dann bricht das Script doch ab, wenn man "no" auswählt, das soll ja dann da enden.

                              Ich lege mir den Link mal in die Lesezeichen oder in die Marcadores, wie das hier heißt.

                              Und sobald ich kundenID in Hochkommas setze, kommt oben erwähnte Fehlermeldung, bereits im Editor.

                              Danke für Eure Links und Eure Geduld.

                              Gruß Maribel

                              Kommentar

                              Lädt...
                              X