PHP Gästebuch mit MYSQL Datenbank

Zneaf

Erfahrenes Mitglied
Hi Leute ;)

momentan arbeite ich an einem Gästebuch für meine Website.

Leider ergiebt sich mir bereits zu Beginn ein Problem :(

Und zwar versuche ich gerade, die in das Formular eingegebenen Daten in die Datenbank eintragen zu lassen. Allerdings tut sich nix, wenn man auf "schreiben" klickt :(

Hier mein bisheriger Code der "gbook.php":
PHP:
<?php
session_start();

// Überprüfen, ob der User eingeloggt ist.
// Wenn nicht, Fehlermeldung anzeigen.
if($_SESSION['loggedIn'] != true){
	echo "<meta http-equiv='refresh' content='0; url=index.php?site=accessdenied'>";
}else{
?>

<html>
<head>
<title>Gästebuch</title>
</head>
<body link="#000D88" vlink="#000000" alink="#000000">
<img src="/images/gbook_head.jpg" width="526" height="26"><br><br>

<!-- Eingegebene Daten auslesen -->
<?php
if ( array_key_exists('submit', $_POST) ) {

	require_once("gbookconfig.php");
	
	// Der Name des Users soll automatisch übernommen werden,
	// da man zum schreiben sowieso eingeloggt sein muss.
	$name = $_SESSION['username'];
	
	// Das Datum wird ebenfalls automatisch erzeugt.
	$date = date("Y.m.d H:i:s");
	$eintrag = trim(strip_tags(stripslashes($_POST['eintrag'])));

// SQL-Anweisung basteln, um den Eintrag in der DB-Tabelle einzufuegen.
	if ($eintrag == "") {
		echo "Bitte schreibe einen Beitrag" ;
	}else {
		// Datenbankverbindung wird hergestellt
		require_once("gbookconfig.php");
		
		// Daten in Datenbank einfügen.
		$sql = "INSERT INTO gbook
			(
			name, date, eintrag
			) VALUES (
			'". mysql_escape_string($name) ."',
			'". mysql_escape_string($date) ."',
			'". mysql_escape_string($eintrag) ."'
			)";

			// SQL-Anweisung an die DB schicken und im Fehlerfall eine Meldung ausgeben
			$res = mysql_query($sql) or exit( __LINE__.', '.__FILE__.'<br />' .mysql_error());
				
			// Wenn kein Fehler aufgetreten ist, auf die Startseite weiterleiten
			echo "<meta http-equiv='refresh' content='0; url=index.php?site=home'>" ;
	}
}
?>

<!-- Eingabemaske des Gästebuchs -->
<center>
<form action="<?php $_SERVER['PHP_SELF']; ?>" method="post">
<table width="500" table="0" cellspacing="0" cellpadding="2">
	<tr>
		<td width="10"></td>
		<td><font face="Arial" color="#333333">Gästebucheintrag schreiben:</font></td>
	</tr>
	<tr>
		<td width="10"></td>
		<td><textarea name="eintrag" rows="5" cols="55"></textarea></td>
	</tr>
	<tr>
		<td width="10"></td>
		<td><input type="submit" value="schreiben">&nbsp;<input type="reset" value="abbrechen"></td>
	</tr>
	<tr>
		<td>&nbsp;</td>
	</tr>
</table>
<hr>
</form>
</center>
</body>
</html>

<?php
}
?>

Hier noch die datei "gbookconfig.php" (zur Datenbankverbindung):

PHP:
<?php

// DB-Zugriffsdaten
$db_config = array(
    'server'        => '',
    'user'          => '',
    'password'      => '',
    'database_name' => '' 
);


// Verbindung zum DB-Server herstellen und im Fehlerfall eine Meldung ausgeben
$connection = mysql_connect(
    $db_config['server'], 
    $db_config['user'], 
    $db_config['password']
) or exit( __LINE__.', '.__FILE__.'<br />' .mysql_error());

// Verbindung zur Datenbank herstellen und im Fehlerfall eine Meldung ausgeben
$db_select = mysql_select_db(
    $db_config['database_name'], 
    $connection
) or exit( __LINE__.', '.__FILE__.'<br />' .mysql_error());

?>
(natürlich habe ich die Daten der Datenbank angegeben^^)

Für eventuelle Einrückfehler entschuldige ich mich bereits jetzt, da es sein kann, dass der explorer nicht alles so übernimmt, wie es hier in meinem script ist.

Hoffe ihr kommt trotzdem damit klar ;)

Ich möchte an dieser Stelle noch erwähnen, dass ich rein Hobbymäßig programmiere und ihr bitte etwas nachsichtig mit mir sein solltet, wenn ich nicht direkt alles verstehe :D

Solltet ihr noch irgendwelche Fragen haben, so zögert nicht, nach zu hacken^^

Vielen Dank für eure Hilfe im Voraus ;)

LG Zneaf :)
 
Sieht erstmal plausibel aus. Hast du denn in diesen Block auch die jeweiligen Daten eingegeben?

"// DB-Zugriffsdaten
$db_config = array(
'server' => '',
'user' => '',
'password' => '',
'database_name' => ''
); "
 
Sorry zu schnell gelesen...:)

dein Problem liegt hier " array_key_exists('submit', $_POST)" ! Du prüfst auf etwas, was nicht im $_POST Array enthalten ist, selbst wenn du in deinen Html den Button, das Attribut "name" mitgeben würdest, funktioniert es z.B. in Safari nicht.

beste Grüße
 
Heyho ;)

vielen Dank für Deinen Tip! =)

Das ich da nicht selbst drauf gekommen bin xD....

Ich lass das Thema mal noch offen, da ich warscheinlich bald die nächsten Probleme haben werde :D

Vielen Dank nochmal =)

LG Zneaf
 
Hey Leute ;)

wie bereits erwähnt....
kaum lößt man das eine Problem, so folgt sogleich das nächste :D

Und zwar habe ich derzeit folgendes Problem:

Die Einträge werden nun wie gewünscht, in der Datenbank abgespeichert, aber beim Anzeigen der Einträge habe ich so meine Probleme...
Ich erhalte lediglich eine leere Zeile :(

Hier der Code zum Ausgeben der Einträge:
PHP:
<?php

	require_once("gbookconfig.php");
	// Daten aus Datenbank abholen und absteigend nach id sortieren.
	$sqlerg = "SELECT * FROM gbook
			ORDER BY id DESC";
	
	$sqlres = mysql_query($sqlerg) or die("Error: " . mysql_error());
	
	// Solange wie daten ausgelesen werden können,
	// sollen sie in der Variablen "$daten" gespeichert werden
	// und über eine while - schleife ausgegeben werden.
	while($daten = mysql_fetch_object($sqlres)){
        echo "<table border=\"0\" width=\"500\" cellspacing=\"0\" cellpadding=\"0\">
				<tr>
					<td width=\"425\"><font face=\"Arial\" color=\"#33333\"><b>$name</b></font></td>
					<td width=\"75\"><font face=\"Arial\" color=\"#33333\"><b>#$id</b></font></td>
				</tr>
			</table>
			<table border=\"0\" width=\"500\" cellspacing=\"0\" cellpadding=\"0\">
				<tr>
					<td width=\"425\"><font face=\"Arial\" color=\"#33333\"><b>$date</b></font></td>
				</tr>
				<tr>
					<td width=\"425\"><font face=\"Arial\" color=\"#33333\"><b>$eintrag</b></font></td>
				</tr>
			</table>
			<hr>
		";
    } 
?>

Habt ihr vielleicht ne Idee, wo diesesmal der Wurm steckt? =)

Hoffe ihr könnt mir helfen.

Vielen Dank im Voraus ;)

LG Zneaf
 
Hey Leute ;)

hab den Fehler grad selbst gefunden....

und zwar hab ich das ganze in der schleife falsch ausgegeben^^

hier ein Beispiel wies sein sollte:
PHP:
echo "$daten->name";

Dann bleibt mir noch ein einziges Problem =)

Habt ihr vielleicht eine Ahnung, wie ich das anstellen kann, dass pro Seite nur 10 Einträge angezeigt werden und dass alle anderen jeweils auf eine 2te und 3te (usw.) Seite geladen werden und ein Link unten entsteht mit dem man vorwärts bzw rückwärts blättern kann? :D

Ich krieg das iwie nich hin xD

Hoffe ihr könnt mir dabei helfen ;)

Vielen Dank jetzt schonmal =)

LG Zneaf =)
 
Zurück