munsi1
Goto Top

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?
<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

Content-ID: 84349

Url: https://administrator.de/contentid/84349

Ausgedruckt am: 25.11.2024 um 12:11 Uhr

Dani
Dani 31.03.2008 um 19:06:17 Uhr
Goto Top
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
Munsi1
Munsi1 31.03.2008 um 19:36:29 Uhr
Goto Top
Hi Dani,

okay dann versuche ich mal zu erklären was genau ich machen möchte. Also ich habe zwei Testfelder Name und Novellname. In die werden Daten eingegeben und über den Button add an die Datenbank gesendet. So soll es sein. Problem ist das er nichts in die Datenbank einträgt ich aber auch keine Fehlermeldung bekomme. Ja das Script ist nicht so schön aber ich hoffe doch das ich es mit Hilfe des Forums hinbekomme dann wird es besser werden bei nächsten mal.

Gruß
Sebastian
Dani
Dani 31.03.2008 um 20:41:42 Uhr
Goto Top
Hi!
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">  
	}
?>
Ungetestete Skizze und ähnelt sehr deinem Code. face-smile


Grüße
Dani
Munsi1
Munsi1 31.03.2008 um 22:19:07 Uhr
Goto Top
Hallo Dani,

danke für den Code, leider ist folgende Zeile fehlerhaft
VALUES (NULL, '".$_POST['name']."', '".$_POST['novellname']."');";  
Das ein " fehlt habe ich gesehen aber auch damit bekomme ich die Fehlmeldung Parse error:syntax error, unexpected T_CONSTANT_ENCAPSED_STRING
Hab jetzt alle möglichkeiten versucht die mir und google eingefallen sind ohne Erfolg. Vielleicht hast du noch eine Idee?

Danke und Gruß
Sebastian
Dani
Dani 31.03.2008 um 22:43:57 Uhr
Goto Top
Schön, dass du dich damit auseinandersetzt. Aber wenn du nicht weißt, wo suchen kannst du lange Google befragen.

$query = "INSERT INTO anwender (id, name, novellname) VALUES (NULL, '".$_POST['name']."', '".$_POST['novellname']."');";  
$result = mysql_query($query);

/Dani
Munsi1
Munsi1 01.04.2008 um 09:34:07 Uhr
Goto Top
Hallo Dani,

danke für die Hilfe, kann es leider im Moment nicht testen da Stress auf Arbeit. Werde es heute Abend ausprobieren und eine Rückinfo geben.

Danke und Grüße
Sebastian
Munsi1
Munsi1 03.04.2008 um 12:46:41 Uhr
Goto Top
Hallo Dani,

leider geht es immer noch nicht. Ich erhalte die Meldung das er mit den Variablen nichts anfangen kann. Undefined variable: novelname in C:\\ und so weiter lautet die Meldung.
Hast du noch eine Idee woran es liegen kann?

Danke und Gruß
Sebastian
Hawk18x
Hawk18x 04.04.2008 um 10:28:36 Uhr
Goto Top
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.
Munsi1
Munsi1 04.04.2008 um 15:06:08 Uhr
Goto Top
Hallo,

danke für deine Hilfe, mittlerweile habe ich alles noch mal neu geschrieben.
Hier noch mal der Code
<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" name="add" value="Daten abschicken">  
<input type="hidden" name="id">  

</from>
<?php
//Verbindung zur Datenenbank
 $verbindung = mysql_connect("servername", "Nutzer", "passwort") or die ("keine Verbindung möglich");  
 mysql_select_db("assistant_roles") or die ("Die Datenbank existiert nicht");  
 ?>

<?php
//Daten senden
if(!isset($_POST['add']))  
$eintrag = "INSERT INTO anwender (ID, name, novellname) VALUES (NULL, '".$_POST['name']."', '".$_POST['novellname']."');";  

?>
<?php
print_r($_POST);
?>
Ich bin jetzt schon soweit das ich keinen Fehlercode im log mehr erhalte allerdings bekomme ich keine Daten in die Datenbank.
So wie du es beschrieben hast habe ich es mal getestet die Daten gibt er mir mir print_r($_POST); auch zurück also das stimmt schon mal. Leider werde ich aus dem Rest nicht ganz schlau. Kannst du mir das noch mal näher erklären?
Vielen Dank
Sebastian
Hawk18x
Hawk18x 04.04.2008 um 15:16:55 Uhr
Goto Top
Also erstmal fehlt dir der mysql_query-Aufruf.

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.
Munsi1
Munsi1 04.04.2008 um 15:44:12 Uhr
Goto Top
du warst leider schneller als ich kannst du bitte die mysql_connect Zeile ändern. Ich habe aus versehen die Daten darin nicht bearbeitet face-sad
Danke
Hawk18x
Hawk18x 04.04.2008 um 15:47:48 Uhr
Goto Top
und was ist nun? Gehts, oder gehts nicht?
Munsi1
Munsi1 04.04.2008 um 15:54:59 Uhr
Goto Top
bekomme einen Fehler in der Log PHP Parse error: syntax error, unexpected '{ es liegt an der Zeile
if(!isset($_POST) {   
muss die { sein?
Hawk18x
Hawk18x 04.04.2008 um 16:18:30 Uhr
Goto Top
Ein alles was in einem "if" ausgeführt wird, oder zb while, for, foreach, do...while muss mit { und } umschlossen sein, sonst weiss php ja nicht, was es machen soll, wenn die angegebenen Punkte erfüllt sind.
Munsi1
Munsi1 07.04.2008 um 10:00:24 Uhr
Goto Top
Hallo,

leider habe ich schon alles so gemacht wie du es mir vorgegeben hast, trotzdem stört er sich daran hier der Code
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); }
siehst du irgendwo noch den Fehler?
Hawk18x
Hawk18x 07.04.2008 um 10:05:23 Uhr
Goto Top
Gibt er denn eintrag erfolgreich aus oder gibt er fehlermeldung?

So sehe ich jetzt ehrlich keinen Fehler. Man könnte noch aus anwender `anwender` machen. Das ist das SQL-Syntax. Ansonsten brauche ich da Fehlermeldungen.
Hawk18x
Hawk18x 07.04.2008 um 10:26:02 Uhr
Goto Top
Oh, jetzt sehe ich den fehler. Peinlich!!!

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.
Munsi1
Munsi1 07.04.2008 um 11:40:35 Uhr
Goto Top
Hallo,

wahnsinn jetzt läuft es so wie es soll. Vielen Dank. Werde jetzt noch den Rest dazuschreiben der nicht mehr allzu schwer ist. Da ich einfach diese blöde Datenübergabe nicht hinbekommen haben.
Danke auch für die Editoren werde mir gleich mal einen runterladen nutzte im Moment Phase5 aber markiert mir den php Code leider nicht farblich.
Also Danke noch mal
Grüße
Sebastian