header() - Weiterleitung unterbricht SQL

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

  • header() - Weiterleitung unterbricht SQL

    Hallo,

    ich habe ein Problem und es ist zum verzweifeln.. ich habe eine Funktion, die ein MySQL-INSERT ausführt und anschließend ein übergebenes Array mit Datumswerten in eine Tabelle schreibt. Ich rufe diese Funktion auf der Seite pay.php auf und möchte anschließend ein header() redirect machen.

    Mein Problem ist, dass das redirect sofort nach der ersten Query ausgeführt wird, d.h. dass die Datumswerte nicht per INSERT in die DB geschrieben werden.

    Sobald ich den header() auskommentiere, funktioniert es und die Query mit allen Datumswerten wird ausgeführt.

    Wieso ist das so? Ich dachte immer, dass erst die Funktion inkl. aller DB-Querys erledigt wird, den Returnwert setzt (ich habe hier schon Strings, Zahlen, Boolsche Werte probiert..) und anschließend erst den header() sendet. Leider scheint dem aber nicht so zu sein..

    Vielen Dank für eure Hilfe!

    PHP-Code:
    //Datei pay.php
    if($_GET["method"] == "invoice" AND $buchung->saveBuchung() === true) {
        
    header("Location: ".HTTP_ROOT."/index.php?show=buchungcheckout&buchungid=".$buchung->buchungid."");
        exit;
    }

    //Funktion
    public function saveBuchung() {
        
    //SQL INSERT in Tabelle
        //mysql_insert_id() auslesen und setzen
        //-- ABBRUCH -> er macht mit dem Header() weiter --
        //Array mit Datumswerten erstellen
        //Array auslesen und jeden Eintrag in DB schreiben
        
    return true;


  • #2
    Irgendwas verdrehst du. Datenbankabfragen werden (im Normalfall) nicht asynchron ausgeführt.

    Bau ein paar Debug-Ausgaben ein. Irgendwo macht dein Programm etwas anders, als du denkst, dass es macht.

    Kommentar


    • #3
      irgednwie ist das krass. ich komm und komm nicht drauf.. das problem scheint irgendwo im insert der daten liegen. bitte sagt mir, dass ich hier irgendwo einen fehler habe, das gibts ja nicht.

      er gibt keine mysql_error() aus, sondern gibt die Rückmeldung der query + gut. aber es steht nichts in der DB?! ich mein, WTF? Wenn ich die query einfach 1:1 kopiere und im phpmyadmin einfüge, funktioniert es auch.. hä?!
      PHP-Code:
      public function insertKalender($buchungid) {

              
      $array = array("2011-09-21""2011-09-22""2011-09-23""2011-09-24""2011-09-25" );

              foreach(
      $array as $date) {
                  
      $sql "INSERT INTO buchungskalender SET apartmentid = '1', buchungsdatum = '".$date."', buchungid = '3'";
                      if(
      mysql_query($sql)) {
                          echo 
      $sql." - gut<br>";
                      } else die(
      mysql_error());
              }
              
              return 
      true;

          } 

      Kommentar


      • #4
        Was ergibt mysql_affected_rows()?

        Kommentar


        • #5
          jeweils 1 - aber er trägt es einfach nicht ein... ich hab das geefühl, dass da die DB irgendwie kaputt ist, anders kann ich mir das nicht erklären.. allerdings hab ich den table "buchungskalender" schon einmal neu gemacht, es hat nichts geholfen..

          manchmal löscht er mir sogar alle datensätze aus der tabelle bzw. überschreibt diese, ist mir gerade aufgefallen... -.-

          Kommentar


          • #6
            Dann wird anscheinend noch ein anderes Skript ausgeführt, was dies bewirkt. Von alleine passiert sowas nicht.

            Kommentar


            • #7
              Zitat von h3ll Beitrag anzeigen
              Dann wird anscheinend noch ein anderes Skript ausgeführt, was dies bewirkt. Von alleine passiert sowas nicht.
              tjo, das dachte ich auch immer

              aber danke für deine hilfe erstmal.. ich lass das projekt mal 24h liegen und schau dann noch einmal.

              -------------------

              so, ich hab das projekt bis jetzt ruhen lassen und siehe da, nach 5 minuten war der fehler gefunden.. es ist doch nichts korrupt

              In einer anderen Datei (ich hab das am Fr. wohl nicht fertig gemacht und einfach vergessen) war eine Funktion drinnen, die alle eintragungen zu dieser buchung wieder storniert. :P
              Zuletzt geändert von menasche; 20.09.2011, 16:50.

              Kommentar

              Lädt...
              X