Sie befinden sich hier im Forenarchiv von phpforum.de wenn Sie direkt ins Forum möchten, klicken Sie bitte hier. Zur Startseite kommen Sie hier.

Gästebuch

Ich bin ein Volldepp, ich weiß. Hier ein Script für ein Gästebuch:


Code:                   In Zwischenablage kopieren (nur IE)
1">



Meine Frage: Ich bekomme den EINTRAGEN Button nicht hin!!! Helft mir, ich weiss, dass ich blöd bin, also helftm ir einfach. BIDDDDE
Hier gehts zum Orginal Eintrag "Gästebuch" im Forum

Antworten

Code:                   In Zwischenablage kopieren (nur IE)
2">




2.

Den Button fügst du folgendermassen ein (Zeile 57):

<textarea name="text" cols="35" rows="5"></textarea>
//Jetzt kommen die Buttons
<input type="submit" name="sub" value="Eintragen">
<input type="reset" name="sub" value="Zurücksetzen">

</form></font>
....

Beim Überfliegen des Codes ist mir noch etwas aufgefallen:
1. Ich weiss nicht, welches PHP du installiert hast, doch ruft man in neueren Versionen die Formularelemente immer über $_GET["Name"] anstatt $Name auf. Dies mag vielleicht lokal bei dir laufen, kann aber Probleme bei anderen Systemen geben.

2. Im Form-Tag benutzt du bei action:
"eintragen.php?action=add"
Eintragen.php ist wohl das selbe skript? Besser ist es, wenn du nur
action="eintragen.php" ohne die Parameter benutzt. Willst du nun prüfen, ob der Button Eintragen gedrückt wurde, reicht es, wenn du überprüfst ob $_GET["sub"] den Wert "Eintragen" besitzt. Ist zwar im Prinzip ähnlich, doch sparst du dir hier eine Variable.

mfg
horsthacker


3.

So hab ich jetzt den Code gemacht:


<html>
<head>
<title>Eintragen</title>
</head>

<body bgcolor="#FFFFFF">
<?php
if ($action == "add"){

if ($name == "" || $mail == "" || $text == ""){
echo "<b>Du hast nicht alle Felder ausgef&uuml;llt !</b><br>";
echo "Klicke auf den Backbutton deines Browsers";
}
else{

if ($www == ""){
$eintrag = "<a href=\"mailto:$mail\">$name</a><br>$text";
}
else{
$eintrag = "<a href=\"mailto:$mail\">$name</a>

<br><a href=\"$www\">$www</a>$text<hr><br><br>";
}

$datei = fopen("gaestebuch.txt","w+");
fputs($datei,$eintrag);
fclose($datei);
echo "Danke <i>$name</i> f&uuml;r deinen Eintrag";

}

}
else{
?>
<font face="Verdana" size="1">
<b>Eintragen in mein G&auml;stebuch</b><br>
<form action="eintragen.php" method="get">
Dein Name: <input type="text" name="name" size="24"><br>
E-Mail: <input type="text" name="mail" size="24"><br>
Homepage: <input type="text" name="www" size="24"><br>
<br>
Dein Eintrag:<br>
<textarea name="text" cols="35" rows="5"></textarea>
<br>

<input type="submit" name="sub" value="Eintragen">
<input type="reset" name="sub" value="Zurücksetzen">

</form></font>
<?php
}
?>
</body>

</html>




4.

Hast du auch eine Frage dazu oder warum postest du das nun?

Ein weiterer Tip:
Benutze den Wert "a" mit fopen. Beim Wert "w+" wird die Datei immer wieder neu überschrieben, mit "a" werden Einträge an die Datei gehängt.

$datei = fopen("gaestebuch.txt","a");
mfg
horsthacker


5.

Wenn ich den Code wie oben stehend (Der FETT geschriebene Code - das gesamte gäastebuch), dann wird kein Eintrag vorgenommen! Bidde helf mir erstmal dabei. danke.


6.

Wie schon im meinem ersten Post gesagt, liegt das daran, dass du die Formularelemente mit $name,... aufrufst. Dies funktioniert bei neueren PHP-Versionen nicht mehr so einfach.
Benutze statt dessen $_GET["name"], $_GET["mail"], $_GET["text"], $_GET["www"], um auf die Elemente zuzugreifen.
Desweiteren würde ich anstatt action=add an die URL des Form-Tags zu setzen lieber ein hidden-Element in das Formular einfügen:
<input type="hidden" name="action" value="add">
Dies Element wird nicht angezeigt und du kannst auch so zugreifen, wie oben beschrieben: $_GET["action"].
Das nächste mal bitte genauer lesen.
mfg
horsthacker


7.

Hier ist der Code überarbeitet. Bitte motz net rum... ich hab einfach so gemacht, wie ich gedacht habe. Sag mir was ich da ändern müsste:


<html>
<head>
<title>Eintragen</title>
</head>

<body bgcolor="#FFFFFF">
<?php
if ($action == "add"){

if ($_GET["name"] || $_GET["mail"] || $_GET["text"]){
echo "<b>Du hast nicht alle Felder ausgef&uuml;llt !</b><br>";
echo "Klicke auf den Backbutton deines Browsers";
}
else{

if ($_GET["www"]){
$eintrag = "<a href=\"mailto:$mail\">$name</a><br>$text";
}
else{
$eintrag = "<a href=\"mailto:$mail\">$name</a>

<br><a href=\"$www\">$www</a>$text<hr><br><br>";
}

$datei = fopen("gaestebuch.txt","w+");
fputs($datei,$eintrag);
fclose($datei);
echo "Danke <i>$_GET["name"]</i> f&uuml;r deinen Eintrag";

}

}
else{
?>
<font face="Verdana" size="1">
<b>Eintragen in mein G&auml;stebuch</b><br>
<input type="hidden" name="action" value="add">
Dein Name: <input type="text" name="name" size="24"><br>
E-Mail: <input type="text" name="mail" size="24"><br>
Homepage: <input type="text" name="www" size="24"><br>
<br>
Dein Eintrag:<br>
<textarea name="text" cols="35" rows="5"></textarea>
<br>

<input type="submit" name="sub" value="Eintragen">
<input type="reset" name="sub" value="Zurücksetzen">

</form></font>
<?php
}
?>
</body>

</html>



8.

Es fehlt nun der form-Tag:
Ausschnitt (Aufbau des Formulars):

Code:                   In Zwischenablage kopieren (nur IE)
3">



dann musst du noch die if-Abfrage ändern:
if ($action == "add"){
in
if ($_GET["action"] == "add"){

und es müssen alle Elemente des Formulars, also "text", "mail", "name", "www" im Script mit $_GET["Formularelement"] aufgerufen werden. (Muss teilweise auch noch geändert werden.

dann sollte es laufen.

mfg
horsthacker


Hier gehts zum Orginal Eintrag "Gästebuch" im Forum
 
phpforum.de | Impressum