Nach DELETE Query wird kein INSERT ausgeführt

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

  • Nach DELETE Query wird kein INSERT ausgeführt

    Servus Leute,

    ich bin am Rande der Verzweiflung.

    In einem Projekt muss ich zunächst Datensätze löschen und hinterher neue Datensätze in der gleichen Tabelle anlegen. Nicht das ich das nicht schon tausende mal gemacht hätte.

    mysql_query("DELETE FROM KV_Pos WHERE kopfid = $id AND jobid = $job");

    ...

    mysql_query("INSERT INTO KV_Pos (jobid,kopfid,kst,coopa,kontonr,anteil,anteiltyp,betrag) values (\"$job\", \"$kv_kopfid\", \"$kostenstelle[$kontzaehler]\", \"$COOPA[$kontzaehler]\", \"$kontonummer[$kontzaehler]\", \"$poseinzbetrag[$kontzaehler]\", \"$Art\", \"$Betrag\")");

    Soweit die SQL-Statements. Die stimmen auch jeder für sich und wenn ich die DELETE Anweisung auf Kommentar setze, fügt er auch munter die neuen Zeilen ein. Habe ich die DELETE-Anweisung jedoch scharf geschaltet, löscht er ganz brav die alten Datensätze, fügt jedoch nicht einen neu ein.

    Wenn jemand weiss wie ich das umgehen kann, dann immer her damit. Ich habe nichts in der Richtung gefunden.

  • #2
    Was sagt mysql_error()?

    Kommentar


    • #3
      mysql_error()?, php print? mehr code? Denkst Du man kann erraten wies drumherum aussieht?

      -------------- Edit -----------
      OffTopic:
      [COLOR=darkblue]Mein Gott! Nur drei Minuten und 4 Posts mit einemal und keine Aussage -- Wie die Geier, Wie die Geier ... [/COLOR]
      Zuletzt geändert von chansel0049; 08.07.2005, 14:15.
      chansel0049
      ----------------------------------------------------
      if you've reached the bottomline - dig further!
      Übersetzer gesucht? http://www.babelport.com

      Kommentar


      • #4
        ein wenig mehr code würde helfen. und bitte formatieren.

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

        Kommentar


        • #5
          was sagt denn mysql_error() ? und das delete ist schon vor dem insert oder? Ansonsten: mehr code wär nice!

          EDIT:
          Ach Jottchen, Kinnas.... Da überlegt man mal 2 Minuten und schreibt was langsamer dann sind direkt 3 Posts drüber und alle sagen das gleiche... super...
          Für alle die Fehler suchen, gibts gratis tolle Debuggingmöglichkeiten:
          var_dump(), print_r(), debug_backtrace und echo.
          Außerdem gibt es für unsere Neueinsteiger ein hervorragendes PHP Tutorial zu PHP 4 und PHP 5 (OOP)
          Es heißt $array['index'] und nicht $array[index]! Und nein, das ist nicht egal!
          Dieses Thema lesen, um Ärger im Forum und verzögerte Hilfen zu vermeiden.

          Kommentar


          • #6
            was sagt denn mysql_error() ? und das delete ist schon vor dem insert oder? Ansonsten: mehr code wär nice!
            mysql_error sagt nichts - null komma nichts - mysql_query gibt auch nur eine 1 aus. Mir kommt es so vor, als ob MySQL die INSERTs verschluckt, wenn davor ein DELETE kam.

            Und das verstehe ich nicht. Wiederhole ich die INSERT mit einem simplen echo und kopier die Ausgabe im HTML in bspw. phpMyAdmin fügt er das normal ein.

            Lasse ich den DELETE weg arbeitet er auch korrekt.

            Hier der Code:

            PHP-Code:
                mysql_query("DELETE FROM KV_Pos WHERE kopfid = $id AND jobid = $job");
                


            for (
            $kontzaehler 0$kontzaehler $anzkontierungen $positionen 1$kontzaehler++) {

              
            $posnummeralt $poszaehler;
              if ((
            $zupos[$kontzaehler] == ($posnummeralt+1)) && 
            (
            $zupos[$kontzaehler] != "") && ($poseinzbetrag[$kontzaehler] != "")) {
                
            $kontpos++;
                
            $Betrag 0;
                if (
            $posart[$kontzaehler] == "betrag") {
                  
            $Betrag $poseinzbetrag[$kontzaehler];
                  
            $Art 1;
                } else {
                  
            $Betrag = ($poseinzbetrag[$kontzaehler] * $aposbetrag 100);
                  
            $Art 2;
                }
                
            $Betrag str_replace(".","",$Betrag);
                
            $Betrag str_replace(",",".",$Betrag);
                
            $Restbetrag $Restbetrag $Betrag;
                
            mysql_query("INSERT INTO KV_Pos (jobid,kopfid,kst,coopa,kontonr,anteil,anteiltyp,betrag) values 
            (\"
            $job\", \"$kv_kopfid\", \"$kostenstelle[$kontzaehler]\", 
            \"
            $COOPA[$kontzaehler]\", \"$kontonummer[$kontzaehler]\", 
            \"
            $poseinzbetrag[$kontzaehler]\", \"$Art\", \"$Betrag\")");
                
            $allekontzaehler++;
              }

            Zuletzt geändert von skunert; 08.07.2005, 14:20.

            Kommentar


            • #7
              setz mal hinter
              PHP-Code:
               if (($zupos[$kontzaehler] == ($posnummeralt+1)) && ($zupos[$kontzaehler] != "") && ($poseinzbetrag[$kontzaehler] != "")) { 
              einfach mal ein
              PHP-Code:
              print "Schleife $kontzaehler"

              Und brich deinen Code um!
              chansel0049
              ----------------------------------------------------
              if you've reached the bottomline - dig further!
              Übersetzer gesucht? http://www.babelport.com

              Kommentar


              • #8
                Ich habe umgebrochen.

                Die Ausgabe ist nur "Schleife 0" - also falls Du auf die Erfüllung der If-Bedingung abzielst - die funktioniert sauber - wäre ja das gleiche als wenn ich die erste Zeile mit der SQL-Anweisung DELETE einfach weg lasse.

                Dann läuft der Rest ja auch - er führt ja auch den ganzen Müll aus, es wird dennoch nicht in der Datenbank gespeichert - solange ich ein DELETE drin habe zumindest.

                Kommentar


                • #9
                  Warum versuchst Du deinem INSERT (ebendrein in einer Schleife!) permanent die PK eines gelöschten Records zu übergeben?

                  Anders gefragt : Wo wird $kv_kopfid definiert wenn $job nicht PK ist ? Ist der PK evtl null?
                  chansel0049
                  ----------------------------------------------------
                  if you've reached the bottomline - dig further!
                  Übersetzer gesucht? http://www.babelport.com

                  Kommentar


                  • #10
                    pack mal das SQL-Statement in eine Variable und gib die aus per print...
                    chansel0049
                    ----------------------------------------------------
                    if you've reached the bottomline - dig further!
                    Übersetzer gesucht? http://www.babelport.com

                    Kommentar


                    • #11
                      Evtl. wird das etwas klarer, wenn ich noch ein paar Worte dazu verliere um was es hier eigentlich geht.

                      Es handelt sich um einen Kostenvoranschlag, der auf verschiedene Konten kontiert werden kann.

                      Ich befinde mich an der Ecke im Änderungsmodus für die Kontierung. Da ich nie sagen kann, ob der alte Datensatz sich überhaupt geändert hat, ob er entfallen ist, ob einer neu hinzugekommen ist etc. wird einfach alles, was zu einem Job (übergeordnete Einheit - jobid) und zu einem Kostenvoranschlag (Kopfdaten - kopfid) als Kontierungsdaten gehören gelöscht und es wird komplett neu gespeichert.

                      Primary Key ist ein anderes Feld, das nicht explizit gespeichert wird, da es per auto_increment von der Datenbank vergeben wird.

                      Wenn man $irgendwas = mysql_query(...) einträgt und das ausgibt erscheint jedesmal eine 1.

                      Kommentar


                      • #12
                        Wenn man $irgendwas = mysql_query(...) einträgt und das ausgibt erscheint jedesmal eine 1.
                        was bedeuted das MySQL Query ein True zurück gibt (was jedoch nichts über den erfolg der Query aussagt)

                        mach bitte mal aus
                        PHP-Code:
                        mysql_query("INSERT INTO KV_Pos (jobid,kopfid,kst,coopa,kontonr,anteil,anteiltyp,betrag) values 
                        (\"
                        $job\", \"$kv_kopfid\", \"$kostenstelle[$kontzaehler]\", 
                        \"
                        $COOPA[$kontzaehler]\", \"$kontonummer[$kontzaehler]\", 
                        \"
                        $poseinzbetrag[$kontzaehler]\", \"$Art\", \"$Betrag\")"); 
                        das
                        PHP-Code:
                        $sql "INSERT INTO KV_Pos (jobid,kopfid,kst,coopa,kontonr,anteil,anteiltyp,betrag) values 
                        (\"
                        $job\", \"$kv_kopfid\", \"$kostenstelle[$kontzaehler]\", 
                        \"
                        $COOPA[$kontzaehler]\", \"$kontonummer[$kontzaehler]\", 
                        \"
                        $poseinzbetrag[$kontzaehler]\", \"$Art\", \"$Betrag\")";
                        print 
                        $sql;
                        mysql_query($sql);
                        print 
                        "\n IID "mysql_insert_id();
                        print 
                        "\n SERR " mysql_error(); 
                        und sag mal was da raus kommt
                        Zuletzt geändert von chansel0049; 08.07.2005, 15:36.
                        chansel0049
                        ----------------------------------------------------
                        if you've reached the bottomline - dig further!
                        Übersetzer gesucht? http://www.babelport.com

                        Kommentar


                        • #13
                          PHP-Code:
                          INSERT INTO KV_Pos 
                          (jobid,kopfid,kst,coopa,kontonr,anteil,anteiltyp,betragvalues 
                          ("331""1477""96420""1CGNB94""74000""2000.00""1""2000.00"
                          IID 0
                          SERR 

                          Kommentar


                          • #14
                            Wird zwar das Problem nicht lösen, aber sind das wirklich alles Varchar-Spalten?

                            @chansel: Sollte mysql_insert_id() nicht ein mysql_query("INSERT ...") vorausgehen?
                            "Return Values
                            The ID generated for an AUTO_INCREMENT column by the previous INSERT query on success, 0 if the previous query does not generate an AUTO_INCREMENT value, or FALSE if no MySQL connection was established."

                            Kommentar


                            • #15
                              @onemorenerd

                              Hast freilich recht... Habs schlichtweg vergessen (nach dem Edit nun drin)

                              @skunert

                              Ist die Ausgabe mit oder ohne mysql_query($sql)? Hat ich nämlich vergessen
                              chansel0049
                              ----------------------------------------------------
                              if you've reached the bottomline - dig further!
                              Übersetzer gesucht? http://www.babelport.com

                              Kommentar

                              Lädt...
                              X