Zum Inhalt springen

PHP - Problem beim einfügen eines neuen Datensatzes


Empfohlene Beiträge

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:

Link zu diesem Kommentar
Auf anderen Seiten teilen

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>

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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 :)

Link zu diesem Kommentar
Auf anderen Seiten teilen

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:

Link zu diesem Kommentar
Auf anderen Seiten teilen

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!

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...