gb problem

zapi

Grünschnabel
hi leute,

ich bin neu auf der seite und hab mich mal ein bisschen durch eure tutorials gelesen. dabei hab ich, weil ich nen php anfänger bin, ein gästebuch zusammengebaut.

hier die file:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Gaestebuch</title>
</head>
<body>

<form action="<?php echo $PHP_SELF ?>" method="post" name="eintragung"> <!-- Anfang des Formulars -->
<!-- eingabefelder -->
<table width="413" height="208" border="0">
<tr>
<td width="133">Name:</td>
<td width="264"><input type="text" name="name" size="25"></td>
</tr>
<tr>
<td>Email:</td>
<td><input type="text" name="email" size="25"></td>
</tr>
<tr>
<td>Homepage:</td>
<td><p>
<input type="text" name="homepage" size="25">
<br>
</p> </td>
</tr>
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<td>Message :</td>
<td><textarea name="message" cols="50" rows="10"></textarea></td>
</tr>
<tr>
<td>&nbsp;</td>
<td> <input type="submit" name="neueintrag" value="Eintragen">
<input name="reset" type="reset" value="L&ouml;schen"></td>
</tr>
</table>
<p>&nbsp; </p>
</form>

<?php
// Zunächst brauchen wir eine Datenbankverbindung:
$verbindung = mysql_pconnect( "xxx", "xx", "xxxx");

if (!$verbindung) // War die verbindung NICHT erfolgreich? -> Wenn ja: Fehler auswerfen und beenden
{
echo "<br><center><b>- Keine Verbindung zur Datenbank -</b></center>";
exit;
}

mysql_select_db("formular"); //Datenbank auswählen in die geschrieben werden soll

//ueberprueft ob der submit button gedrückt wurde
{ //Wenn ja dann daten in den guestbook table eintragen

$id = time(); //time() gibt die zeit seit dem beginn des Unix Zeitalters in sekunden zurück
//wir benutzen id als Datums und Identifikations-Angabe, doch mehr dazu später

$name = addslashes($name); //Zeichen die im Programm Probleme verursachen könnten in PHP Spezialzeichen umwandeln
$email = addslashes($email); // -"-
$homepage = addslashes($homepage); // -"-
$message = addslashes($message); // -"-

$sqlkommando = "INSERT INTO guestbook (id, name, email, homepage, message) VALUES ('$id', '$name', '$email', '$homepage', '$message')";
// Auf gut deutsch: Füge in guestbook bei "id, name, email, homepage, message" die werte der variablen "$id, $name, $email, $homepage, $message" ein

mysql_query($sqlkommando) or die("Error: " . mysql_error()); // Kommando 'sqlkommando' ausfuehren
// bei misserfolg beenden und fehlermeldung ausgeben

echo "Eintragung erfolgreich hinzugefügt"; // Bestätigung ausgeben
}

?>

<?php
$sqlkommando = "SELECT * FROM guestbook ORDER BY id DESC";
// Auf gut deutsch: Nimm aus allen feldern in table 'guestbook' die Daten und sortiere sie absteigend nach 'id'
// Hier haben wir die Wahl zwischen ASC und DESC als Sortierungsreihenfolge
// ASC = von 1-9 und A-Z
// DESC = von Z-A und 9-1
// da 'id' eine zeitangabe beinhaltet werden die felder hier absteigend nach datum sortiert, der neuste eintrag steht also
// folglich ganz oben

$sqlanfrage = mysql_query($sqlkommando) or die("Error: " . mysql_error()); // $sqlanfrage auf das Kommando:" 'sqlkommando' ausfuehren" setzen
// bei misserfolg beenden und fehlermeldung ausgeben

while($daten = mysql_fetch_object($sqlanfrage)) // Solange wie daten ausgelesen werden können sollen
{ // sie in das Objekt '$daten' geladen und die folgende
// schleife ausgegeben werden
$datum = getdate($daten->id); // Datum aus 'id' konvertieren und in das 'datum' array packen

echo "Eintrag von ". stripslashes($daten->name) ."\n<br>"; // PHP sonderzeichen entfernen und name ausgeben
echo "Email: <a href=\"mailto:".stripslashes($daten->email)."\">".stripslashes($daten->email)."</a>\n<br>";
echo "Homepage: ".stripslashes($daten->homepage)."\n<br>";
echo "Geschrieben: $ndate[weekday] - $ndate[mday]/$ndate[mon]/$ndate[year] $ndate[hours]:$ndate[minutes]"; // Datum ausgeben (Englisch siehe Moartel Tutorial)
echo "<br>";
echo "Kommentar: <br>";
echo nl2br(stripslashes($daten->message)); //nl2br = Zeilenumbrüche in HTML-Umbrüche (<br>) umwandeln
echo "\n<br><br>\n";
}
?>


</body>
</html>


die probleme die dabei auftreten sind folgende:

- wenn man die seite aufruft erstellt sich immer wieder ein leerer eintrag = nervig - wie bekommt man das weg? (bitte für anfänger erklärt ;)

- und vll eine abfrage einbauen, ob die felder leer sind ...

es wäre nett wenn ihr mir so schnell wie möglich antworten könntet, will da weiter machen ;)

mfg
 
Hallo

du hast die eigentliche Überprüfung nicht drin. Das Kommentar dazu aber schon xD

So stehts bei dir:
PHP:
//ueberprueft ob der submit button gedrückt wurde
{ //Wenn ja dann daten in den guestbook table eintragen

und so gehörts
PHP:
//ueberprueft ob der submit button gedrückt wurde
if( $_POST["neueintrag"] == "Eintragen" )
{ //Wenn ja dann daten in den guestbook table eintragen

hast du die eine Zeile mitm if vergessen, soweit ich das mit meinen bereits schlafenden Augen sehen kann.

Gruß Manuel
 
hi leute,

ich bin neu auf der seite und hab mich mal ein bisschen durch eure tutorials gelesen. [...]

Wie es scheint, hast du dich aber weder "durch die Netiquette" gelesen, noch den dicken roten Hinweis beachtet, der dir beim Erstellen eines neuen Threads förmlich ins Auge springt.
Was ich eigentlich sagen will... Bitte halte dich an Groß- und Kleinschreibung. Und wenn du php-Code postest, dann kannst du dafür die entsprechenden Tags ([ php] [ /php], ohne die Leerzeichen) verwenden.
 
Funktioniert so nicht, leider. ES ist dadurch nichts weiter passiert. Also keine Verbesserung. Trozdem DANKE. Sollte dir etwas anderes dazu einfallen wäre ich froh.
 
Kleinere Fehler waren in deinem Script.
  1. Bein PHP-Code bei dem action-Attribut des Formulartags fehlte ein Semikolon
  2. Vermutlich ist register_globals (Forensuche oder Google bemühen!) ausgeschaltet, daher musst du auf superglobale Variablen alá $_POST und $_GET zurückgreifen
Jetzt sollte es klappen...
PHP:
<?php
/* Alle Fehler anzeigen lassen */
error_reporting(E_ALL);
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Gaestebuch</title>
</head>
<body>

<form action="<?php echo $PHP_SELF; # Hier hat ein Semikolon gefehlt ?>" method="post" name="eintragung"> <!-- Anfang des Formulars -->
<!-- eingabefelder -->
<table width="413" height="208" border="0">
<tr>
<td width="133">Name:</td>
<td width="264"><input type="text" name="name" size="25"></td>
</tr>
<tr>
<td>Email:</td>
<td><input type="text" name="email" size="25"></td>
</tr>
<tr>
<td>Homepage:</td>
<td><p>
<input type="text" name="homepage" size="25">
<br>
</p> </td>
</tr>
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<td>Message :</td>
<td><textarea name="message" cols="50" rows="10"></textarea></td>
</tr>
<tr>
<td>&nbsp;</td>
<td> <input type="submit" name="neueintrag" value="Eintragen">
<input name="reset" type="reset" value="L&ouml;schen"></td>
</tr>
</table>
<p>&nbsp; </p>
</form>

<?php
// Zunächst brauchen wir eine Datenbankverbindung:
$verbindung = mysql_pconnect("xxx", "xx", "xxxx") or die('Konnte keine Verbindung zur Datenbank herstellen!');
mysql_select_db("formular") or die('Datenbank nicht gefunden!'); //Datenbank auswählen in die geschrieben werden soll

//ueberprueft ob der submit button gedrückt wurde
if(isset($_POST['neueintrag']))
{ //Wenn ja dann daten in den guestbook table eintragen

$id = time(); //time() gibt die zeit seit dem beginn des Unix Zeitalters in sekunden zurück
//wir benutzen id als Datums und Identifikations-Angabe, doch mehr dazu später

$name = addslashes($_POST['name']); //Zeichen die im Programm Probleme verursachen könnten in PHP Spezialzeichen umwandeln
$email = addslashes($_POST['email']); // -"-
$homepage = addslashes($_POST['homepage']); // -"-
$message = addslashes($_POST['message']); // -"-

$sqlkommando = "INSERT INTO guestbook (id, name, email, homepage, message) VALUES ('$id', '$name', '$email', '$homepage', '$message')";
// Auf gut deutsch: Füge in guestbook bei "id, name, email, homepage, message" die werte der variablen "$id, $name, $email, $homepage, $message" ein

mysql_query($sqlkommando) or die("Error: " . mysql_error()); // Kommando 'sqlkommando' ausfuehren
// bei misserfolg beenden und fehlermeldung ausgeben

echo "Eintragung erfolgreich hinzugefügt"; // Bestätigung ausgeben
}

?>

<?php
$sqlkommando = "SELECT * FROM guestbook ORDER BY id DESC";
// Auf gut deutsch: Nimm aus allen feldern in table 'guestbook' die Daten und sortiere sie absteigend nach 'id'
// Hier haben wir die Wahl zwischen ASC und DESC als Sortierungsreihenfolge
// ASC = von 1-9 und A-Z
// DESC = von Z-A und 9-1
// da 'id' eine zeitangabe beinhaltet werden die felder hier absteigend nach datum sortiert, der neuste eintrag steht also
// folglich ganz oben

$sqlanfrage = mysql_query($sqlkommando) or die("Error: " . mysql_error()); // $sqlanfrage auf das Kommando:" 'sqlkommando' ausfuehren" setzen
// bei misserfolg beenden und fehlermeldung ausgeben

while($daten = mysql_fetch_object($sqlanfrage)) // Solange wie daten ausgelesen werden können sollen
{ // sie in das Objekt '$daten' geladen und die folgende
// schleife ausgegeben werden
$datum = getdate($daten->id); // Datum aus 'id' konvertieren und in das 'datum' array packen

echo "Eintrag von ". stripslashes($daten->name) ."\n<br>"; // PHP sonderzeichen entfernen und name ausgeben
echo "Email: <a href=\"mailto:".stripslashes($daten->email)."\">".stripslashes($daten->email)."</a>\n<br>";
echo "Homepage: ".stripslashes($daten->homepage)."\n<br>";
echo "Geschrieben: $ndate[weekday] - $ndate[mday]/$ndate[mon]/$ndate[year] $ndate[hours]:$ndate[minutes]"; // Datum ausgeben (Englisch siehe Moartel Tutorial)
echo "<br>";
echo "Kommentar: <br>";
echo nl2br(stripslashes($daten->message)); //nl2br = Zeilenumbrüche in HTML-Umbrüche (<br>) umwandeln
echo "\n<br><br>\n";
}
?>


</body>
</html>
 
Klasse :---)))))
Wenn ich jetzt auf die Gästebuch Seite gehe, macht das kein leer EINTRAG. "Super"
Jetzt bräuchte ich nur noch eine Abfrage ob die felder leer sind, damit beim anklicken des Abschick-Button kein leerfeld entsteht. Wäre auch SONDER Super.
 
Alles klar ich DANKE dir für deine schnelle HILFE.
Wenn ihr alle das so aus dem HUT Zaubert, diese schnelle Fehler suche... WAHNSINN
Klasse...
 
Zurück