Gästebuch Script PHP
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
anzeigen
attribut
aufruf
bau
blocken
code
datum
eintrag
eintragen
email
fehler
feld
form
inhalt
problem
sache
testen
text
url
zeichen
-
Hi !
Ich habe einige Probleme mit PHP.
Das hier ist mein Gästebuch:
<?php require('../admin/sql.php'); $name = mysql_real_escape_string($_POST['name']); $email = mysql_real_escape_string($_POST['email']); $inhalt = mysql_real_escape_string($_POST['text']); $datum = time(); $aktiv = 1; //1: Einträge werden aktiviert gespeichert, 2: Einträge werden deaktiviert gespeichert // eintragen //Wurden die benötigten Felder ausgefüllt? if($name == "" OR $inhalt == "") { echo "<font face=\"Arial\">Bitte die Felder \"Name\" und \"Inhalt\" ausfüllen<br></font>"; exit; //Script Ablauf wird unterbrochen, Eintrag wird nicht gespeichert } $eintrag = "INSERT INTO guestbook (datum, name, email, inhalt, aktiv) VALUES ('".htmlentities($datum)."', '".htmlentities($name)."', '".htmlentities($email)."', '".htmlentities($inhalt)."', '".htmlentities($aktiv)."')"; $eintragen = mysql_query($eintrag); //Wurde der Eintrag erfolgreich gespeichert? if($eintragen == true) { echo "<p align=\"center\"><font face=\"Arial\">Dein Beitrag wurde erfolgreich gespeichert.<br><br><a href=\"index.php\">Zurück zum Gästebuch</a></font></p> "; header('index.php?neu=1'); } else { echo "<font face=\"Arial\">Fehler beim Speichern.<br></font>"; } } ?> <form action="" method="post"> ... <font size="2">Wenn sie das hier lesen können, lassen sie das nachfolgende Feld bitte leer:<br> <br> </font> <font face="Arial"><input type="text" name="url" size="20"></font><font size="2"> </font> ...
Wenn ich auf den Submit Button vom Formular klicke, passiert garnichts. Es sollte aber das obige PHP Script dann aufgerufen werden und der Eintrag sollte gespeichert werden.
Auch will ich noch, dass wenn das Input Feld "url" einen Inhalt hat, soll ein Fehler kommen. Also der Eintrag soll nur gespeichert werden, wenn das Feld leer bleibt. -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Baue mal bitte folgendes ein:
if(isset($_POST['name']))
und erst dann dem mysql_real_escape_string.
Außerdem solltest du solche Sachen wie exit; lassen und das lieber in einem if else Konstrukt umbauen.
Also ungefähr so:
if($name = "" OR $inhalt = "")
echo "Sie haben nichts eingetragen";
else
// dein SQL Code
echo "Erfolgreich eingetragen"; -
midwar schrieb:
Baue mal bitte folgendes ein:
if(isset($_POST['name']))
und erst dann dem mysql_real_escape_string.
Außerdem solltest du solche Sachen wie exit; lassen und das lieber in einem if else Konstrukt umbauen.
Also ungefähr so:
if($name = "" OR $inhalt = "")
echo "Sie haben nichts eingetragen";
else
// dein SQL Code
echo "Erfolgreich eingetragen";
Was bewirkt
??if(isset($_POST['name']))
-
davy schrieb:
midwar schrieb:
Baue mal bitte folgendes ein:
if(isset($_POST['name']))
und erst dann dem mysql_real_escape_string.
Außerdem solltest du solche Sachen wie exit; lassen und das lieber in einem if else Konstrukt umbauen.
Also ungefähr so:
if($name = "" OR $inhalt = "")
echo "Sie haben nichts eingetragen";
else
// dein SQL Code
echo "Erfolgreich eingetragen";
Was bewirkt
??if(isset($_POST['name']))
Das bedeutet soviel wie "Wenn $_POST['name'] überhaupt existier" - d.h. wenn da überhaupt was eingegeben wurde. ;) -
OK.
Jetzt habe ich noch ein Problem.
Mein aktuelles Script:
... <script type="text/javascript" language="JavaScript"> <!-- function seticon(Zeichen) { document.form.text.value = document.form.text.value + Zeichen; } //--> </script> </head> ... <?php if(!isset($_POST['submit'])) { require('../admin/sql.php'); $name = mysql_real_escape_string($_POST['name']); $email = mysql_real_escape_string($_POST['email']); $inhalt = mysql_real_escape_string($_POST['text']); $datum = time(); $aktiv = 1; //1: Einträge werden aktiviert gespeichert, 2: Einträge werden deaktiviert gespeichert if($name == "" OR $inhalt == "") { echo "Bitte die Felder \"Name\" und \"Inhalt\" ausfüllen<br>"; } else { $eintrag = "INSERT INTO guestbook (datum, name, email, inhalt, aktiv) VALUES ('".htmlentities($datum)."', '".htmlentities($name)."', '".htmlentities($email)."', '".htmlentities($inhalt)."', '".htmlentities($aktiv)."')"; $eintragen = mysql_query($eintrag); } if($eintragen == true) { echo "<p align=\"center\"><font face=\"Arial\">Dein Beitrag wurde erfolgreich gespeichert.<br><br><a href=\"index.php\">Zurück zum Gästebuch</a></font></p> "; } else { echo "Fehler beim Speichern.<br>"; } } ?> <form method="POST" action="eintragen.php"> <div align="center"> <center> <table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="73%" height="492"> <tr> <td width="21%" height="22"><b>Ihr Name:</b></td> <td width="79%" height="22"><input type="text" name="name" size="20"></td> </tr> <tr> <td width="21%" height="1"><b>Ihre Email-Adresse:</b></td> <td width="79%" height="1"><input type="text" name="email" size="20"></td> </tr> <tr> <td width="21%" height="30"> </td> <td width="79%" height="30"><font size="2">Dies ist eine freiwillige Angabe. Wenn sie ihre Email-Adresse nicht angeben möchten, lassen sie das Feld einfach leer.</font></td> </tr> <tr> <td width="21%" height="22"><b>Ihre Homepage:</b></td> <td width="79%" height="22"> <input type="text" name="homepage" size="20" value="http://"></td> </tr> <tr> <td width="21%" height="30"> </td> <td width="79%" height="30"><font size="2">Dies ist eine freiwillige Angabe. Wenn sie ihre Homepage nicht angeben möchten, lassen sie das Feld einfach leer.</font></td> </tr> <tr> <td width="21%" height="332" valign="top"><b>Ihr Eintrag:</b></td> <td width="79%" height="332"><textarea rows="16" name="text" cols="38"></textarea><p> <font size="2">Für den Eintrag stehen ihnen maximal <b>600 Zeichen zur Verfügung</b>.</font></p> <p> <a href="javascript:seticon(':)')"><img src="images\smilies\1.gif" border="0"><a> <a href="javascript:seticon(':(')"><img src='images\smilies\2.gif' border='0'><a> <a href="javascript:seticon(':D')"><img src='images\smilies\3.gif' border='0'><a> <a href="javascript:seticon(':P')"><img src='images\smilies\4.gif' border='0'><a> <a href="javascript:seticon(':o')"><img src='images\smilies\5.gif' border='0'><a> <a href="javascript:seticon(';-)')"><img src='images\smilies\6.gif' border='0'><a> <a href="javascript:seticon(':8')"><img src='images\smilies\7.gif' border='0'><a> <a href="javascript:seticon(':-(')"><img src='images\smilies\8.gif' border='0'><a> <a href="javascript:seticon(':-o')"><img src='images\smilies\9.gif' border='0'><a> <a href="javascript:seticon(':love:')"><img src='images\smilies\10.gif' border='0'><a> <a href="javascript:seticon(':kiss:')"><img src='images\smilies\11.gif' border='0'><a> <a href="javascript:seticon(':-D')"><img src='images\smilies\12.gif' border='0'><a> </td> </tr> <tr> <td width="21%" height="19"> </td> <td colspan="2"> <div class="some_body"> Wenn sie das hier lesen können, lassen sie das nachfolgende Feld bitte leer:<br> <br> <input type="text" name="url" size="20"> </div> </td> </tr> <tr> <td width="21%" height="19"> </td> <td width="79%" height="19"> </td> </tr> <tr> <td width="21%" height="26"> <input type="submit" name="submit" value="Eintrag absenden"></td> <td width="79%" height="26"> </td> </tr> </table> </center> </div> </form> <p align="center"><font size="2"><br> <a href="index.php">Zurück zum Gästebuch</a><br> <br> </p> </font> <br>
Hier zum Testen: http://davidlohmann.de/guestbook/eintragen.php
1. Die Smilies werden nicht angezeigt, obwohl der Pfad stimmt.
2. Wenn ich auf die Smilies klicke, wird der Code nicht in die Textarea eingefügt.
3. Oben steht schon beim Aufruf, dass die Felder leer sind, es soll aber erst da stehen, wenn man wirklich gesendet hat. -
Verwende mal anstatt
document.form.text.value = document.form.text.value + Zeichen;
einfach
document.getElementById("text").value += Zeichen;
Was das anzeigen angeht, dass obwohl man noch nicht abgeschickt hat, da schon steht die Felder seien leer, achte bitte dringend darauf, in welchem If oder Else block das auch steht. Du musst einfach aufpassen, dass das echo "ist nicht ausgefüllt" (oder wie auch immer) nur dann ausgeführt wird, wenn auch wirklich abgeschickt wurde. In deinem Fall also if(isset($_POST['submit'])). Deinen Code sich durchzulesen macht nicht wirklich Spaß, da du komplett auf einrückungen verzichtest. Änder das dann schau ich mal genauer. Wenn nicht such alleine nach, ob das auch wirklich im richtigen if Block steht. -
midwar schrieb:
Verwende mal anstatt
document.form.text.value = document.form.text.value + Zeichen;
einfach
document.getElementById("text").value += Zeichen;
Was das anzeigen angeht, dass obwohl man noch nicht abgeschickt hat, da schon steht die Felder seien leer, achte bitte dringend darauf, in welchem If oder Else block das auch steht. Du musst einfach aufpassen, dass das echo "ist nicht ausgefüllt" (oder wie auch immer) nur dann ausgeführt wird, wenn auch wirklich abgeschickt wurde. In deinem Fall also if(isset($_POST['submit'])). Deinen Code sich durchzulesen macht nicht wirklich Spaß, da du komplett auf einrückungen verzichtest. Änder das dann schau ich mal genauer. Wenn nicht such alleine nach, ob das auch wirklich im richtigen if Block steht.
Das der Fehlertext nicht mehr nach dem Aufruf angezeigt wird, hab ich geschafft.
Das Javascript funktioniert noch nicht, und die Bilder (Smilies) werden auch noch nicht angezeigt.
EDIT: Das mit dem Anzeigen habe ich nun auch geschafft. Nur das Javascript geht noch nicht. Ihr könnt es auch mal testen auf meiner Seite http://davidlohmann.de/guestbook/eintragen.php
Beitrag zuletzt geändert: 8.5.2010 17:48:15 von davy -
Zum Javascript-Problem:
document.form.text.value
gibt es in deinem Quelltext nicht.
Entweder du gibst dem form-Tag das Attribut name="form" oder du musst
document.forms[0].text.value
nutzen.
Gruß,
dex -
qap2 schrieb:
Zum Javascript-Problem:
document.form.text.value
gibt es in deinem Quelltext nicht.
Entweder du gibst dem form-Tag das Attribut name="form" oder du musst
document.forms[0].text.value
nutzen.
Gruß,
dex
Danke, das geht nun auch ! -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage