Admin funktion für mein Gästebuch

  • Themenstarter Themenstarter Thorsten Ball
  • Beginndatum Beginndatum
T

Thorsten Ball

Hallo! :)

Also, ich bin PHP Anfänger und habe mir als Startprojekt ein Gästebuch mit Admin Funktion vorgenommen das mit einer MySQL DB arbeitet.
Das Gästebuch läuft einwandfrei, doch nun häng ich bei dem Admin Panel.
Ich stelle mir das so vor, dass es die ganzen Einträge aus der MySQL Db ausliest und dann in einem Formular dasteht.
Also für jeden Eintrag ein Formular.
Das Problem sind die Fehler die ich von PHP bekomme:

Notice: Undefined index: id in C:\wampp2\htdocs\test\gbadmin.php on line 47
No Database Selected

Und hier mal mein Code:

PHP:
<?php

    include("inc/config.php");
	$db_link = @mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS);
	if(isset($_POST['form1']))
	{
		
		@mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS) OR        
			die("Keine Verbindung zur Datenbank. Fehlermeldung:".mysql_error());
   		mysql_select_db(MYSQL_DATABASE) OR        
			die("Konnte Datenbank nicht benutzen, Fehlermeldung: ".mysql_error());
	
		$update = "UPDATE
            		guestbook
			  	   SET
    				name = '".addslashes(htmlspecialchars($_POST['name']))."',
					email = '".addslashes(htmlspecialchars($_POST['email']))."',
					homepage = '".addslashes(htmlspecialchars($_POST['homepage']))."',
					message = '".addslashes(htmlspecialchars($_POST['message']))."'
				  WHERE
    				id = '$_POST[id]';";
	}
	if(isset($_POST['form1']))
	{
		if($_POST['aendern'])                                  
		{
			mysql_query($update,$db_link)  OR die(mysql_error()); 
			echo "Eintrag geändert";
		}
	}
	$result = mysql_query("SELECT * FROM guestbook where id = '$_GET[id]'",$db_link)  OR die(mysql_error());  // ZEILE 47 --------------
	
	while($daten = mysql_fetch_array($result))
    { 
		echo "<form name=\"form1\" method=\"POST\" action=\"".$_SERVER['PHP_SELF'].'id='.$_GET['id']."\">\n";
  		echo "	<input type=\"text\" name=\"name\" value=\"".$daten['name']."\" class=\"input\">  Name <br />\n";
  		echo "	<input type=\"text\" name=\"email\" value=\"".$daten['email']."\" class=\"input\">  E-Mail <br />\n";
  		echo "	<input type=\"text\" name=\"homepage\" value=\"".$daten['homepage']."\" class=\"input\">  Homepage <br />\n";
  		echo "	Kommentar <br />\n";
  		echo "	<textarea name=\"message\" cols=\"50\" rows=\"10\" type=\"text\" class=\"input\">".$daten['message']."</textarea><br />\n";
  		echo "	<input type=\"hidden\" name=\"id\" value=\"".$daten['id']."\">\n";
  		echo "	<input type=\"submit\" name=\"aendern\" value=\"&Auml;ndern\" class=\"input\">\n";
  		echo "	<input type=\"submit\" name=\"loeschen\" value=\"L&ouml;schen\" class=\"input\">\n";
	    echo "</form><br /><br />\n";
	}
?>
 
Zuletzt bearbeitet von einem Moderator:
Hallo,
wie schon in der Fehlermeldung steht, besteht keine Verbindung zur Datenbank. Wenn
PHP:
if(isset($_POST['form1']))
FALSE ergibt, dann wird auch keine Verbindung zur Datenbank hergestellt.

Aber in jedem Fall fragst Du mit
PHP:
$result = mysql_query("SELECT * FROM guestbook where id = '$_GET[id]'",$db_link)  OR die(mysql_error());
die Datenbank ab, auch wenn keine Verbindung besteht.

Gruß, snuu
 
Danke für die Antwort, ich hab nun den Anfang so geändert:

PHP:
<?php

    include("inc/config.php");
	$db_link = @mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS);		
	@mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS) OR        
		die("Keine Verbindung zur Datenbank. Fehlermeldung:".mysql_error());
   	mysql_select_db(MYSQL_DATABASE) OR        
		die("Konnte Datenbank nicht benutzen, Fehlermeldung: ".mysql_error());
	if(isset($_POST['form1']))
	{

Aber er bringt mir wieder einen fehler und zwar:

Code:
Notice: Undefined index: id in C:\wampp2\htdocs\test\gbadmin.php on line 45

Und Zeile 45 ist diese hier:

PHP:
$result = mysql_query("SELECT * FROM guestbook where id = '$_GET[id]'",$db_link)  OR die(mysql_error());

//edit:

Wenn ich gbadmin.php?id=1 aufrufen zeigt es mir den ersten Eintrag an.
Aber ich möchte doch dass es alle anzeigt, und mit dieser Variante funktioniert das editieren auch nicht.
 
Zuletzt bearbeitet von einem Moderator:
Wenn du die Zeile folgendermaßen änderst
PHP:
$result = mysql_query("SELECT * FROM guestbook",$db_link) OR die(mysql_error());
dann liest er alle Einträge aus der DB aus. Vorher hätte er nur den ausgelesen, dessen id du beim Aufrufen der Seite mit ...?id=1 (in diesem Falle den mit der id 1) weitergegeben hast.
 
Ok, danke erstmal, nun zeigt es die Einträge an,
aber zwichen den Einträgen bekomm ich folgenden Fehler:

Code:
Notice: Undefined index: id in C:\wampp2\htdocs\test\gbadmin.php on line 49

Dann änder ich zB einen Eintrag und schicke ab, es ruft dann gbadmin.php?id= auf und die Fehler sind weg, doch verändert hat es die Beiträge nicht.
 
Notice: Undefined index: id in C:\wampp2\htdocs\test\gbadmin.php on line 49

da stellt sich doch die große frage: was steht da drin?

diese notiz sagt dir einfach nur, dass das Indiz, welches gerade aufgerufen wird, nicht vorhanden ist. Ist es ja auch nicht, wenn du es per GET nicht übergibst.

da du die id aber nicht mehr brauchst, kannst du es auch einfach löschen! :)
 
PHP:
echo "<form name=\"form1\" method=\"POST\" action=\"".$_SERVER['PHP_SELF']."\">\n";


So hab ichs nun dastehen, und juchuu, keine Fehler! Das ist doch schonmal was, leider werden die Änderungen nicht richtig gespeichert.
Es läd einfach neu, ohne dass es was abspeichert, es resettet es praktisch zum alten wert.
 
So, ich hab es dank der Hilfe in #tutorials.de geschafft :)

Man muss diese Schleife:

PHP:
if(isset($_POST['form1']))

Einfach in folgendes umändern:

PHP:
if(isset($_POST['aendern']))

Oder je nach dem welchen Namen der Submit Button trägt.

Es grüßt,

MrNugget
 
Zurück