Mein Script schreibt doppelt in die Datenbank, warum?

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

  • #16
    Original geschrieben von jahlives
    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.
    Hmm, die Form ruft doch das Script auf, ohne Form wird es doch gar nicht aufgerufen, aber zeig mir mal bitte, wie man das isset anwendet, werde ich noch öfter brauchen.

    Gruß Maribel

    Kommentar


    • #17
      also du machst den query halt 2 mal. d.h. er wird von dir 2 mal an die Datenbank geschickt. Beim ersten mal überprüfst du, ob ein Fehler aufgetreten ist, beim 2. mal fetchest du das Ergebnis, das ist aber unnötig.

      statt

      PHP-Code:
      $result mysql_query($sql) or die(mysql_error());
      $qry mysql_query($sql);
      $result mysql_fetch_assoc($qry); 
      ist es viel besser einfach

      PHP-Code:
      $result mysql_query($sql) or die(mysql_error());
      $result_fetched mysql_fetch_assoc($result); 
      zu machen....

      Isset gibt dir eine boolsche variable zurück, je nach dem ob die variable gesetzt ist oder nicht, aber für soetwas gibt es ein Manual !!!
      signed oder unsigned... das ist hier die Frage

      Kommentar


      • #18
        PHP-Code:
        $sql "SELECT  kstatID, kontostand
                    FROM    tblkundenstat
                    WHERE   kundenID ="
        .$_SESSION['kundenID']; 
        Das zum Thema Hochkomma!

        Kropff hat dir ja schon den Link zur Zeichenketten Verknüpfung gezeigt.

        und case das manual zu php.
        Bitte Beachten.
        Foren-Regeln
        Danke

        Kommentar


        • #19
          ...wie man das isset anwendet, werde ich noch öfter brauchen.
          wie bereits erwähnt
          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


          • #20
            Danke Dir, hatte das von isset schon gelesen, leider wurde dabei ein Wert zugewiesen und ich kam damit nicht klar.

            Lese mir das nachher nochmal in Ruhe durch, erstmal ein wenig Schlaf.

            Melde mich wieder, wenn ich das gefixt habe

            Gruß Maribel

            Kommentar


            • #21
              Aja, damit ihr mal seht, wem ihr da helft, habe ich mal ein Foto an gehangen, wo ihr mich und meine süße seht.

              Aber nun bin ich endgültig im Bett, bis später dann

              Gruß Maribel
              Angehängte Dateien

              Kommentar


              • #22
                Nun finde ich öfter Beispiele in dieser Art:

                PHP-Code:
                $result = @mysql_db_query($db
                "INSERT INTO filme 
                        (Titel, Darsteller, Inhalt, Bild, Jahr, R_ID)
                VALUES 
                         ('
                $Titel', '$Darsteller', '$Inhalt', '$Bild', '$Jahr', '$R_ID')");
                $F_ID mysql_insert_id(); 
                auf der anderen Seite lese ich:

                Grundregel

                Variablen werden niemals in Anführungszeichen gesetzt! Wer es trotzdem tut, wird aus der Gemeinschaft der Programmierer ausgeschlossen. Wie all diejenigen, die noch immer mit GOTO arbeiten, wenn es die Sprache erlaubt.
                Also was ist denn nun richtig beim INSERT z.B.

                Gruß Maribel

                Kommentar


                • #23
                  Vergess solche Beispiele, wie das gerade angegebene..

                  schlechter Programmierstil

                  mfg

                  Kommentar


                  • #24
                    Naja, ich will mir ja guten Stil angewöhnen und habe extra ein Beispiel gewählt, welches nichts mit meiner DB zu tun hat.

                    Aber wie sieht das denn in gutem Programmierstiel aus?

                    PHP-Code:
                           $sql "INSERT INTO tblkassenbuch
                                        (
                                        belegnr,
                                        belegart,
                                        mitarbeiterID,
                                        filialID,
                                        betragges,
                                        kundenkonten,
                                        kasse
                                        )
                                    VALUES
                                        (
                                        "'".$_SESSION['
                    belegnr']."'",
                                        2,
                                        "'".$_SESSION['
                    mitarbeiterID']."'",
                                        "'".$_SESSION['
                    filialID']."'",
                                        "'".$_SESSION['
                    cuponpreis']."'",
                                        "'".$_SESSION['
                    cuponpreis']."'",
                                        "'".$_SESSION['
                    cuponpreis']."'"
                                        )
                                        "

                    Leider bringt mir das einen Escape Error in Linie 13.

                    Gruß Maribel
                    Zuletzt geändert von Maribel; 16.05.2008, 22:03.

                    Kommentar


                    • #25
                      PHP-Code:
                      <?php

                      $sql 
                      "INSERT INTO tblkassenbuch
                              (
                                 belegnr,
                                 belegart,
                                 mitarbeiterID,
                                 filialID,
                                 betragges,
                                 kundenkonten,
                                 kasse
                              ) VALUES (
                                 '"
                      .$_SESSION['belegnr']."',
                                 2,
                                 '"
                      .$_SESSION['mitarbeiterID']."',
                                 '"
                      .$_SESSION['filialID']."',
                                 '"
                      .$_SESSION['cuponpreis']."',
                                 '"
                      .$_SESSION['cuponpreis']."',
                                 '"
                      .$_SESSION['cuponpreis']."'
                              )
                              "
                      ;
                      SO wird da ein schuh drauß
                      Gruß
                      Uzu

                      private Homepage

                      Kommentar


                      • #26
                        Richtig, der Fehler ist nun weg.

                        Danke
                        Maribel

                        Edit:

                        Das Script läuft nun fast wie es soll, auch die header Weiterleitungen klappen nun, seit ich die Fehlerausgabe wieder auf normal gestellt habe.

                        Ein klitzekleines Problem, aber dazu siehe neuen Tread.
                        Zuletzt geändert von Maribel; 16.05.2008, 23:15.

                        Kommentar


                        • #27
                          Mein Script schreibt doppelt in die Datenbank, warum?

                          Ja, wie gesagt, es läuft nun gut, aber:

                          Mein Kassenbucheintrag wird doppelt geschrieben, warum das dann?
                          Wo kommt das denn her? Doppelt hält zwar besser, sagt man, macht aber meine Abrechnung kaputt

                          PHP-Code:
                              // Kassenbucheintrag vorbereiten
                                 
                          $sqli "INSERT INTO tblkassenbuch
                                              (
                                              belegnr,
                                              belegart,
                                              mitarbeiterID,
                                              filialID,
                                              betragges,
                                              kundenkonten,
                                              kasse
                                              )
                                          VALUES
                                              (
                                              '"
                          .$_SESSION['belegnr']."',
                                              2,
                                              '"
                          .$_SESSION['mitarbeiterID']."',
                                              '"
                          .$_SESSION['filialID']."',
                                              '"
                          .$_SESSION['cuponpreis']."',
                                              '"
                          .$_SESSION['cuponpreis']."',
                                              '"
                          .$_SESSION['cuponpreis']."'
                                              )
                                              "
                          ;
                                  
                          // Werte schreiben
                                  
                          mysql_query($sqli) or die(mysql_error()); 
                          Gruß Maribel

                          Kommentar


                          • #28
                            So minimalistisch wie Deine Quellcodeangabe ist, wundert es mich, warum du die Zuweisung an $sqli noch mitkopiert hast.

                            An diesen Zeilen liegt's nicht.
                            carpe noctem

                            [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
                            [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

                            Kommentar


                            • #29
                              Hi,

                              wie goth schon sagt kann man an dem Teil nix erkennen. Vielleicht liegt das Ganze in einer Schleife und deswegen wird es mehrfach eingetragen, vielleicht klickst Du auch auf Refresh beim Abschicken des Formulars und es wird deshalb 2 mal eingetragen...

                              Ein wenig mehr müsste man also sehen.

                              Gruss Luka

                              Kommentar


                              • #30
                                Naja, der Rest steht ja mehrfach im anderen Tread.

                                PHP-Code:
                                <?php
                                    session_start
                                ();
                                    include_once(
                                'val_login.inc.php');
                                    include_once(
                                '../connect.inc.php');
                                    
                                // 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());
                                                
                                $result_fetched mysql_fetch_assoc($result);
                                            }
                                    
                                // Variablen fuers Update fuellen
                                    
                                $kstatID = (int)$result_fetched['kstatID'];
                                    
                                $kontostand = (int)$result_fetched['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());
                                    
                                // Kassenbucheintrag vorbereiten
                                       
                                $sqli "INSERT INTO tblkassenbuch
                                                    (
                                                    belegnr,
                                                    belegart,
                                                    mitarbeiterID,
                                                    filialID,
                                                    betragges,
                                                    kundenkonten,
                                                    kasse
                                                    )
                                                VALUES
                                                    (
                                                    '"
                                .$_SESSION['belegnr']."',
                                                    2,
                                                    '"
                                .$_SESSION['mitarbeiterID']."',
                                                    '"
                                .$_SESSION['filialID']."',
                                                    '"
                                .$_SESSION['cuponpreis']."',
                                                    '"
                                .$_SESSION['cuponpreis']."',
                                                    '"
                                .$_SESSION['cuponpreis']."'
                                                    )
                                                    "
                                ;
                                        
                                // Werte schreiben
                                        
                                mysql_query($sqli) or die(mysql_error());
                                    
                                // Script beenden und zurueck zur Cajero Seite
                                    
                                header('Location: http://orenidle.org/intra/intern/cajero.php');
                                ?>
                                aber hier nochmal komplett.

                                Gruß Maribel

                                Kommentar

                                Lädt...
                                X