Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

PHP - Problem beim einfügen eines neuen Datensatzes

Empfohlene Antworten

Veröffentlicht

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:

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>

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

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

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:

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!

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!

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

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.