Datenbankanbindung mit php und mysql geht nicht
Hallo,
ich hab ein kleines Porblem mit php und mysql. Vorweg ich bin blutiger Anfänger was die beiden Sachen betrifft. Folgendes Problem habe ich. Ich möchte die eingegeben Daten auf einer php Seite in eine Datenbank senden. Leider bekomme ich die Meldung Seite kann nicht angezeigt werden. Ich finde aber den Fehler nicht. Vielleicht kann einer von euch den Fehler finden?
Vielen Dank für eure Hilfe
Sebastian
ich hab ein kleines Porblem mit php und mysql. Vorweg ich bin blutiger Anfänger was die beiden Sachen betrifft. Folgendes Problem habe ich. Ich möchte die eingegeben Daten auf einer php Seite in eine Datenbank senden. Leider bekomme ich die Meldung Seite kann nicht angezeigt werden. Ich finde aber den Fehler nicht. Vielleicht kann einer von euch den Fehler finden?
<form method="post" action="p-3-1.php">
<?php
$hostname = "Server";
$username = "username";
$password = "passwort";
function check_mysql() {
if (mysql_errno() > 0) {
die("<br> MySQL-Fehler " . mysql_errno() . ": " .
mysql_error());
}
}
$db = mysql_connect($hostname, $username, $password);
//$db=mysql_connect("localhost", "root", "");
if (!$db) {
die("Öffnen der Verbindung zum MySQL-Server " .
"gescheitert");
}
// mysql_select_db("test");
mysql_select_db("assistant_roles");
check_mysql();
if(!isset($id)) {
$id=0;
}
if (!isset($_POST['add'])) {
$query = "INSERT INTO anwender (name, novellname)" .
" VALUES ($_POST['name'], $_POST['novellname'])";
$result = mysql_query($query);
check_mysql();
$id = mysql_insert_id();
$message = "Datensatz (id=$id) hinzugefuegt";
}
?>
<br>Name, Vorname:
<br><input type="text" name="name"
<?php echo "value=\"$name\""?>>
<br>Novellname:
<br><input type="text" name="novellname"
<?php echo "value=\"$novellname\""?>>
<br>
<br>
<br><input type="submit" name="add" value="Daten abschicken">
<input type="hidden" name="id"
<?php echo "valve=\"$id\""?>>
<?php
if (isset($message)){
echo "<br><br>$message";
}
?>
Vielen Dank für eure Hilfe
Sebastian
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 84349
Url: https://administrator.de/contentid/84349
Ausgedruckt am: 25.11.2024 um 12:11 Uhr
18 Kommentare
Neuester Kommentar
Hi Sebastian,
also das Script ist ja mit sehr vielen Kommentaren versehen. Das du als "Anfänger" doch durchblickst, kann ich mir nicht vorstellen.
Vorallem, was genau so das Script machen?! Deine Beschreibung ist mehr als dürftig! Meine Glaskugel sitzt noch in Lodon auf dem Airport "Heathrow " fest (Terminal 5) - also keine Chance.
Grüße
Dani
also das Script ist ja mit sehr vielen Kommentaren versehen. Das du als "Anfänger" doch durchblickst, kann ich mir nicht vorstellen.
Vorallem, was genau so das Script machen?! Deine Beschreibung ist mehr als dürftig! Meine Glaskugel sitzt noch in Lodon auf dem Airport "Heathrow " fest (Terminal 5) - also keine Chance.
Grüße
Dani
Hi!
Dann probiere es mal so:
Ungetestete Skizze und ähnelt sehr deinem Code.
Grüße
Dani
Dann probiere es mal so:
<?php
// Triff zu, wenn das Formular gesendet worden ist
if(isset($_GET['add']))
{
$hostname = "Server";
$username = "username";
$password = "passwort";
$database = "assistant_roles";
$db = mysql_connect($hostname, $username, $password);
if (!$db) die("Öffnen der Verbindung zum MySQL-Server " ."gescheitert");
mysql_select_db($database);
$query = "INSERT INTO anwender (id, name, novellname) VALUES (NULL, '".$_POST['name']."', '".$_POST['novellname']."');";
$result = mysql_query($query);
echo "Datensatz Nr. ".mysql_insert_id();." hinzugefuegt";
}
else
{?>
<form method="post" name="xxx">
<br>Name, Vorname:
<br><input type="text" name="name">
<br>Novellname:
<br><input type="text" name="novellname">
<br>
<br>
<br><input type="submit" name="add" value="Daten abschicken">
}
?>
Grüße
Dani
folgendes zum testen, ob deine Daten überhaupt ankommen:
print_r($_POST);
Mit dem Befehl kannst du dir alle Daten ausgeben lassen, die mit dem Formular gesendet wurden.
Nun kannst du hingehen und die Vars im SQL-Query mit den Daten des $_POST-Arrays anpassen.
Nebenbei kannst du die Reihe:
$result = mysql_query($query);
erstmal mit // auskommentieren und den $query mit einem echo ausgeben lassen. Damit kannst du nachschauen, ob auch alles soweit korrekt aussieht und ausgefüllt wird.
Wenn du dir mit dem $query nicht sicher bist, dann geh ins phpmyadmin und mach in den Table einen manuellen INSERT. phpmyadmin generiert so einen Query und gibt da auch aus. Den kannst du dann einfach kopieren und die Variablen, die eingefügt werden einfach anpassen. Damit sollte es dann auch gewesen sein.
print_r($_POST);
Mit dem Befehl kannst du dir alle Daten ausgeben lassen, die mit dem Formular gesendet wurden.
Nun kannst du hingehen und die Vars im SQL-Query mit den Daten des $_POST-Arrays anpassen.
Nebenbei kannst du die Reihe:
$result = mysql_query($query);
erstmal mit // auskommentieren und den $query mit einem echo ausgeben lassen. Damit kannst du nachschauen, ob auch alles soweit korrekt aussieht und ausgefüllt wird.
Wenn du dir mit dem $query nicht sicher bist, dann geh ins phpmyadmin und mach in den Table einen manuellen INSERT. phpmyadmin generiert so einen Query und gibt da auch aus. Den kannst du dann einfach kopieren und die Variablen, die eingefügt werden einfach anpassen. Damit sollte es dann auch gewesen sein.
Also erstmal fehlt dir der mysql_query-Aufruf.
Hier mal die Version, wo ich meine, dass sie funzen sollte:
Wenn ich das auch so sehe, wird ID wohl ein auto_increment-Wert sein, der sich bei jedem Eintrag um eins erhöht. Diese Werte braucht man in den Insert's nicht einsetzen, daher habe ich ID rausgenommen.
Den name="add" aus dem input submit habe ich ebenfalls entfernt, da dieser sonst im $_POST-Array auftaucht. Der hat aber da nichts zu suchen.
In dem $_POST-Array sind alle Variablen enthalten, die beim Formular angegeben sind. Ob das Input-Tags mit text, hidden,password sind oder was auch immer.
Normal sollte das Script so jetzt arbeiten.
Hier mal die Version, wo ich meine, dass sie funzen sollte:
<form method="post" action="p-3-1.php">
<br>Name, Vorname:
<br><input type="text" name="name">
<br>Novellname:
<br><input type="text" name="novellname">
<br>
<br>
<br><input type="submit" value="Daten abschicken">
<input type="hidden" name="id">
</from>
<?php
//Verbindung zur Datenenbank
$verbindung = mysql_connect("", "", "") or die ("keine Verbindung möglich");
mysql_select_db("") or die ("Die Datenbank existiert nicht");
?>
<?php
//Daten senden
if(isset($_POST)) {
$eintrag = "INSERT INTO anwender (name, novellname) VALUES ('".$_POST['name']."', '".$_POST['novellname']."')";
$result=mysql_query($eintrag);
if($result) { echo "Eintrag in Tabelle erfolgreich!"; }
print_r($_POST);
}
mysql_close();
Wenn ich das auch so sehe, wird ID wohl ein auto_increment-Wert sein, der sich bei jedem Eintrag um eins erhöht. Diese Werte braucht man in den Insert's nicht einsetzen, daher habe ich ID rausgenommen.
Den name="add" aus dem input submit habe ich ebenfalls entfernt, da dieser sonst im $_POST-Array auftaucht. Der hat aber da nichts zu suchen.
In dem $_POST-Array sind alle Variablen enthalten, die beim Formular angegeben sind. Ob das Input-Tags mit text, hidden,password sind oder was auch immer.
Normal sollte das Script so jetzt arbeiten.
Oh, jetzt sehe ich den fehler. Peinlich!!!
Das ! bei "if(!isset($_POST) {" musste weg. Der alte Befehl hatte die Aufgabe, den Code auszuführen, wenn kein Formular gesendet wurde. Ohne das ! wird der Code nur ausgefüllt, wenn das Array $_POST vorhanden ist.
Ausserdem fehlte eine )-Klammer in der gleichen Zeile. Bei PHP müssen alle () wieder geschlossen werden, egal, welche es sind. (), {} oder .
Ein Editor, der PHP-Syntax beherrscht, hilft dir da sehr weiter. Der meldet soetwas entweder mit farbiger Markierung, oder er fügt automatisch beim Öffnen den Schliessklammer mit hinzu.
Ich kann die da PSPad empfehlen. Ist kostenlos und umfangreich. PHP Coder Pro geht auch. PHP Designer gibt es auch in einer kostenlosen Version.
if(isset($_POST)) {
$eintrag = "INSERT INTO anwender (name, novellname) VALUES ('".$_POST['name']."', '".$_POST['novellname']."')";
$result = mysql_query($eintrag);
if($result) {echo "Eintrag erfolgreich";
print_r($_POST); }
Das ! bei "if(!isset($_POST) {" musste weg. Der alte Befehl hatte die Aufgabe, den Code auszuführen, wenn kein Formular gesendet wurde. Ohne das ! wird der Code nur ausgefüllt, wenn das Array $_POST vorhanden ist.
Ausserdem fehlte eine )-Klammer in der gleichen Zeile. Bei PHP müssen alle () wieder geschlossen werden, egal, welche es sind. (), {} oder .
Ein Editor, der PHP-Syntax beherrscht, hilft dir da sehr weiter. Der meldet soetwas entweder mit farbiger Markierung, oder er fügt automatisch beim Öffnen den Schliessklammer mit hinzu.
Ich kann die da PSPad empfehlen. Ist kostenlos und umfangreich. PHP Coder Pro geht auch. PHP Designer gibt es auch in einer kostenlosen Version.