Da_Ill Geschrieben 29. Dezember 2002 Geschrieben 29. Dezember 2002 Hallo Leute, ich hab da ein problem. ich suche da jetzt schon seit längerem nach dem fehler, aber kann ihn nicht finden! helft mir bitte! es geht darum mit php einen datensatz in einen mysql server neu einzufügen! hier ist der quellcode: $sqlab = "insert into user"; $sqlab .= "(vorname, nachname, strasse, plz, ort, email, login_id, pass, id) values"; $sqlab .= "('$vorname', '$nachname', '$strasse', '$postleitzahl', '$ort', '$email', '$login_id', '$pass', '$max_id')"; mysql_db_query("game", $sqlab); mit dem quellcode funktioniert es nicht! WARUM???:confused: :confused: :confused: Zitieren
DFBL-Benjamin Geschrieben 29. Dezember 2002 Geschrieben 29. Dezember 2002 von wo kommen denn die Variablen her? schau mal in diesem Beitrag, da hatte ich das gleiche Problem wie du! http://fachinformatiker-world.de/forums/showthread.php?s=&threadid=36099&werbeid=31 Zitieren
Da_Ill Geschrieben 29. Dezember 2002 Autor Geschrieben 29. Dezember 2002 also der komplette code sieht so aus. und bis zu der zeile echo "MAX ID: $max_id"; funktioniert alles richtig! nur der teil darunter wo es dann um das eigentliche einfügen geht funktioniert nicht! <html> <head> </head> <body bgcolor=#FFFFFF text=#000000 link=#000000 vlink=#000000 alink=#000000> <font face="Lucida Console"> <font size=2> <font color=#000000> <form action = "<?php $PHP_SELF ?>" method="post"> <input size=10 name="vorname" maxlength=30> <br> Vorname* <br> <input size=10 name="nachname" maxlength=30> <br> Nachname* <br> <input size=20 name="strasse" maxlength=40> <br> Strasse* <br> <input size=5 name="postleitzahl" maxlength=5> <input size=10 name="ort" maxlength=30><br> PLZ / Ort* <br> <input size=20 name="email" maxlength=40> <br> Email* <p> <input size=15 name="login_id" maxlength=30> <br> Managername* <br> <input type="password" size=15 name="pass" maxlength=30> <br> Passwort* <br> <input size=20 name="verein" maxlength=30> <br> Vereinsname* <p> <input type="submit" value="Abschicken" name="send"> <input type="reset" name="reset"> <p> </form> <font size=1> Die Felder mit * müssen angeben werden! <p> <font size=2> <font color=#FF0000> <?php if ($send && (strlen($vorname)!=0) && (strlen($nachname)!=0) && (strlen($strasse)!=0) && (strlen($ort)!=0) && (strlen($email)!=0) && (strlen($login_id)!=0) && (strlen($pass)!=0)) { $db = mysql_connect(); $sqlab = "select login_id, email from user"; $res = mysql_db_query("game", $sqlab); $num = mysql_num_rows($res); for($i=0;$i < $res;$i++) { $existing_login = mysql_result($res, $i, "login_id"); $existing_email = mysql_result($res, $i, "email"); if($login_id == $existing_login) { echo "Dieser Login-Name existiert bereits!"; } elseif($email == $existing_email) { echo "Sie haben bereits einen Account mit dieser Email Adresse!"; } else //if($email != $existing_email && $login_id != $existing_login) { $sqlab = "select max(user.id) as id from user"; $res = mysql_db_query("game", $sqlab); $max_id = mysql_result($res, $i, "id")+1; echo "MAX ID: $max_id"; $sqlab = "insert into user"; $sqlab .= "(vorname, nachname, strasse, plz, ort, email, login_id, pass, id) values "; $sqlab .= "('$vorname', '$nachname', '$strasse', '$postleitzahl', '$ort', '$email', '$login_id', '$pass', '$max_id')"; mysql_db_query("game", $sqlab); $num = mysql_affected_rows(); if($num>0) { echo "Die Anfrage wurde abgeschickt. Sie erhalten bald eine Antwort auf Ihre angegebene Email-Adresse!"; break; } else { echo "Es ist ein Fehler aufgetreten! Bitte versuchen Sie es erneut."; break; } } } mysql_close($db); } else { if($send) { echo "Füllen Sie bitte alle * Felder vollständig aus!"; } else { echo ""; } } ?> </body> </html> Zitieren
Jaraz Geschrieben 29. Dezember 2002 Geschrieben 29. Dezember 2002 Hi, -was kommt für ne Fehlermeldung? lass dir den SQL String ausgeben und poste ihn. Versuche ihn dann per Mysql Kommandozeile einzufügen. -mysql_db_query ist deprecated und sollte durch mysql_select_db() und mysql_query() ersetzt werden. -deine maxid Methode ist nicht Multiusersicher. Benutze AUTO_INCREMENT und LAST_INSERT_ID() -Wieso läufst du alle Emailadressen und Login_IDs durch? Setze ein passendes SELECT Statement ab. Gruß Jaraz Zitieren
Tool-Time Geschrieben 30. Dezember 2002 Geschrieben 30. Dezember 2002 Guten morgen Da_Ill , Wird bei dir die Postleitzahl und ID als Int bzw. als Zahl in die DB abgelegt ? Falls diese so ist musst du das Script wie folgt ändern : $sqlab .= "('$vorname', '$nachname', '$strasse', $postleitzahl, '$ort', '$email', '$login_id', '$pass', $max_id)"; [/php] Da Zahlen nicht wie Zeichenketten per ' ' Versehen werden müssen. MfG Tool-Time Zitieren
Da_Ill Geschrieben 31. Dezember 2002 Autor Geschrieben 31. Dezember 2002 also habe nun mysql_db_query durch die genannten befehle ersetzt und die hochkommata weg genommen! Es funktioniert trotzdem nicht! also habe ich mir den string ausgeben lassen, der wie folgt aussieht: insert into user(vorname, nachname, strasse, plz, ort, email, login_id, pass, id) values ('Hans', 'Wurst', 'Hauptstrasse 8', 12345, 'Hauptstadt', 'hans.wurst@web.de', 'Hans-Wurst', 'hans', 2) meiner meinung nach alles korrekt, oder!? viele grüsse da_ill :confused: :confused: :confused: Zitieren
Da_Ill Geschrieben 31. Dezember 2002 Autor Geschrieben 31. Dezember 2002 das thema hat sich gerade soeben erledigt! es lag daran, dass ich hinter dem 'insert into user' noch ein leerzeichen einfügen mußte! dummer fehler! danke trotzdem an alle für die tipps! Zitieren
Da_Ill Geschrieben 7. Januar 2003 Autor Geschrieben 7. Januar 2003 Originally posted by Jaraz Hi, -was kommt für ne Fehlermeldung? lass dir den SQL String ausgeben und poste ihn. Versuche ihn dann per Mysql Kommandozeile einzufügen. -mysql_db_query ist deprecated und sollte durch mysql_select_db() und mysql_query() ersetzt werden. -deine maxid Methode ist nicht Multiusersicher. Benutze AUTO_INCREMENT und LAST_INSERT_ID() -Wieso läufst du alle Emailadressen und Login_IDs durch? Setze ein passendes SELECT Statement ab. Gruß Jaraz hallo jaraz! wie müsste ich denn den quellcode verändern um AUTO_INCREMENT und LAST_INSERT_ID zu benutzen? ich kenn die funktionen leider nicht! Zitieren
Florian_K Geschrieben 7. Januar 2003 Geschrieben 7. Januar 2003 Hallo Da_Ill! AUTO_INCREMENT ist ein Attribut eines Datenbankfeldes, du musst es also in der MySQL Datenbank ändern. (vergl. MySQL Manual) Du brauchst dann beim Eintragen gar keine ID angeben, die wird dann automatisch vergeben. Um die ID im Nachhinein (nach dem Eintragen) zu erfahren fragst du die Datenbank einfach nach dem zuletzt eintetragenen Wert (last_insert_id(), vergl. MySQL-Manual) Gruß, Florian Zitieren
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.