FinalFantasy Geschrieben 21. Januar 2004 Teilen Geschrieben 21. Januar 2004 Sieht hier jemand vielleicht, wieso ich immer nur die erste POST-Serie in die DB krieg, aber die anderen 4 nicht? Die inserts an sich gehen in der DB, hab ich schon getestet. Die Schleife läuft auch richtig durch, weil ich ja die Ausgaben bekomme. <?php session_start(); include('opendatabase.php'); //Kampf in Tabelle einfügen for($i = 0; $i < 5; $i++) { //Name in Vorname und Name zerlegen $pos = strpos($_POST["schuetze".$i], " "); $name = substr($_POST["schuetze".$i], 0, $pos); $vorname = substr($_POST["schuetze".$i], $pos+1, strlen($_POST["schuetze".$i])-$pos); //SchützenID aus DB holen $result = mysql_query(sprintf( "SELECT ID FROM Schuetze WHERE name=\"%s\" AND vorname=\"%s\"", $name, $vorname)); $schuetzeID = mysql_fetch_array($result); //Schütze in Ergebniss Tabelle eintragen $query = sprintf( "INSERT INTO Ergebnisse VALUES (LAST_INSERT_ID( ), \"%s\", \"%s\", \"%s\")", $schuetzeID['ID'], $_POST['KampfID'], $_POST["s".$i."erg"]); //DEBUG: echo $query."<br>"; mysql_query($query); } echo '<b>Daten wurden gespeichert!</b>'; ?> [/PHP] Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
kLeiner_HobBes Geschrieben 23. Januar 2004 Teilen Geschrieben 23. Januar 2004 Der Code sieht an sich in Ordnung aus. Hast du mal mit print_r() deine $_POST-Variable ausgegeben und geschaut, was drinsteht? Vielleicht liegts ja nur an irgendeinem falschen Index oder so. Und lass dir auf jeden Fall mal die Fehlermeldung von MySQL zurückgeben, falls da eine ist. mfg kLeiner_HobBes Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
robotto7831a Geschrieben 23. Januar 2004 Teilen Geschrieben 23. Januar 2004 Hast Du einen besseren Vorschlag? Frank Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
kLeiner_HobBes Geschrieben 23. Januar 2004 Teilen Geschrieben 23. Januar 2004 @pavloeglyi Wen meinst du? Mich oder anonymousal?? mfG kLeiner_HobBes Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
robotto7831a Geschrieben 23. Januar 2004 Teilen Geschrieben 23. Januar 2004 Ich meinte anonymousal. Aber der Beitrag ist ja Moderatoren sei Dank schon gelöscht worden. Deine Vorschläge sind doch alle gut zur Fehlersuche. Frank Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
FinalFantasy Geschrieben 23. Januar 2004 Autor Teilen Geschrieben 23. Januar 2004 Ich lasse mir ja unten nach dem //DEBUG: den komplett fertig zusammengebauten Query-String ausgeben, und der ist ja in Ordnung. Wenn ich die Ausgabe aus dem Browser kopiere und in MySQL direkt einfüge, geht das ja auch. Und der Code oben, stellt bei mir immer nur den INSERT im ersten Schleifen durchlauf in die DB, die nächsten aber nicht mehr. Hab auch schonmal ne Pause (mit sleep(x)) eingebaut, weil ich dacht, die inserts kommen vielleicht zu schnell, aber das hat auch nichts gebracht. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
robotto7831a Geschrieben 23. Januar 2004 Teilen Geschrieben 23. Januar 2004 Kommt die insert Anweisung nur einmal oder mehrmals? Wenn Sie mehrfach kommen, sind die SQL Statements richtig? Frank Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
FinalFantasy Geschrieben 23. Januar 2004 Autor Teilen Geschrieben 23. Januar 2004 wie kommt die anweisung mehrmals? Die sql statements sind richtig, die ausgaben kann ich ja 1:1 in sql kopieren und ausführen, dann gehts ja auch Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
kLeiner_HobBes Geschrieben 23. Januar 2004 Teilen Geschrieben 23. Januar 2004 *ratlosschaut Also, mir kommen jetzt nur noch zwei Ideen: 1. Lass mal das LAST_INSERT_ID() weg und ersetze es durch eine 0. Hierbei gehe ich jedoch davon aus, dass du das entsprechende Feld mit auto_increment deklariert hast. 2. ersetze mal den zweiten mysql_query mit folgendem Aufruf: mysql_query($query) or die(mysql_error() ); und schaue, ob er immer noch keine Fehlermeldung bringt HTH Benjamin Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
robotto7831a Geschrieben 24. Januar 2004 Teilen Geschrieben 24. Januar 2004 Original geschrieben von FinalFantasy wie kommt die anweisung mehrmals? Die SQL Statements müßten ja 5 mal ausgegeben werden laut der for-Schleife. Werden auch 5 insert Statements mit den richtigen Werten ausgegeben die auch in die DB sollen? Frank Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
FinalFantasy Geschrieben 24. Januar 2004 Autor Teilen Geschrieben 24. Januar 2004 Wie oft denn noch? Die SQL Statements die ich da zusammen baue, werden alle 5 korrekt ausgegeben, und ich kann auch alle 5 in der Datenbank einzeln ausführen! (per copy & paste) @ kleiner Hobbes: Das mit dem INSERT_LAST_ID() werd ich mal testen. Das Feld ist mit autoincrement declariert. Wenn ich die Seite öfter aufrufe, wird ja korrekt durchnummeriert, nur halt immer nur das erste Statement ausgeführt. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
computercrustie Geschrieben 27. Januar 2004 Teilen Geschrieben 27. Januar 2004 Das Problem liegt hier ja auch bei LAST_INSERT_ID(). Beim ersten Mal funktionierts, weil noch keine ID zuvor eingefügt wurde. Jeder folgende Aufruf versucht nun, die zuletzt eingefügte ID als ID zu verwenden, was bei einem Primary Key zu Konflikten führt. Davon abgesehen kannst du dir in PHP sprintf() sparen, da du die Variablen direkt in den String eintragen kannst: $sql="INSERT INTO tabelle (feld1,feld2,feld3) VALUES('$feld1','$feld2','$feld3')" [/PHP] Des weiteren solltest du bei einem Insert immer die jeweiligen Felder (wie im Beispiel) angeben, damit du später bei einer Strukturänderung die Tabelle auch immer noch richtig füllst. Wenn du das so machst, dann lass das Feld der ID weg und schon müssten alle 5 Abfragen (bzw Inserts) funktionieren. Versuchs mal so: [PHP] <?php session_start(); include('opendatabase.php'); for($i = 0; $i < 5; $i++) { $pos = strpos($_POST["schuetze".$i], " "); $name = substr($_POST["schuetze".$i], 0, $pos); $vorname = substr( $_POST["schuetze".$i], $pos+1, strlen($_POST["schuetze".$i])-$pos); $result = mysql_query("SELECT ID FROM Schuetze WHERE name='$name' AND vorname='$vorname'"); if ($result && mysql_num_rows($result)) { list($schuetzeID)=mysql_fetch_row($result); mysql_free_result($result); $query = "INSERT INTO Ergebnisse (schuetzeID, KampfID, Ergebnis) VALUES ('$schuetzeID[ID]', '$_POST[KampfID]', '$_POST[s{$i}erg]')"; mysql_query($query); } echo $query."<br>"; echo mysql_error(),'<br/>'; } echo '<b>Daten wurden gespeichert!</b>'; ?> Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
FinalFantasy Geschrieben 27. Januar 2004 Autor Teilen Geschrieben 27. Januar 2004 Hab ich auch schon rausgefunden. Trotzdem danke. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.