PHP Wo muss ich den Wert eintragen?

xanthos1

Lt. Junior Grade
Registriert
Juli 2008
Beiträge
311
Hallo,

und zwar habe ich gerade mein erstes kleines Gästebuch zusammengebastelt.

Am Anfang verlangte ich von dem , der was in das Gästebuch schreiben will, seinen Namen, seine E-Mail und seine Nachricht.

Jetzt habe ich zum testen auch mal ein "Alter" hinzugefügt.

Jetzt weiß ich aber nicht genau wo ich den Befehl:
PHP:
$_POST[alter]
eintragen soll.


Auf den Link klicken, um mein Code einzusehen:
http://nopaste.biz/53902


Danke für eure Hilfe im voraus !
 
Zuletzt bearbeitet:
Sehr kurz und unverständlich beschrieben, dementsprechend wenig hilfreich evtl. die Antwort:

Im HTML-Dokument kannst du folgenden Code "zum Einlesen" des Alters verwenden:

HTML:
<input name="alter" type="text" />

In PHP kannst du dann auf den im input "alter" eingegebenen Wert mithilfe von $_POST['alter'] zugreifen.
 
Du solltest übrigens - wie auch in nem anderen Thread schon erwähnt - auf leere Felder mit ODER überprüfen, nicht mit UND.

UND:
PHP:
if(empty($name) && empty($email) && empty($eintrag) && empty($alter))
ODER:
PHP:
if(empty($name) || empty($email) || empty($eintrag) || empty($alter))
Denn es soll ja ein Hinweis kommen, wenn irgendein Feld oder auch mehrere leer sind und nicht nur dann, wenn alle Felder leer sind.
 
@roker002:
So wirdst du nicht sicher sein ob alle Indexe des Arrays gesetzt sind die du haben möchtest.
Wenn$_POST z.B. ein String ist(was eigentlich nicht vorkommen soll), wirst du ein True zurückbekommen.
Deshalb muss jeder Index den du benötigst einzelt überprüft werden.

Grüße

krizzel
 
Hallo zusammen,

ja das mit den OR habe ich jetzt kapiert, danke nochmal für den Hinweis.

Also hier mein PHP-Code:

PHP:
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Unbenanntes Dokument</title>
</head>

<body>
<?php

$name = $_POST["name"];
$email = $_POST["email"];
$eintrag = $_POST["eintrag"];
$alter = $_POST["alter"];

$daten = $_POST[eintrag]."<br>von <a href=mailto:".$_POST[email].">".$_POST[name].$_POST[alter]"</a><br><br>";  // Daten werden zusammengeaffst, dass der Name auf die eingegebene E-Mail Adresse verlinkt wird
$datenbank = "daten.dat"; // Die Datei zum Speichern der Einträge wird in eine Variable gepackt.
$datei = fopen($datenbank,"a"); // Die Datei wird mit dem Wert "a" geöffnet.
fwrite($datei, $daten); // Mit fwrite, werden die Daten in der Textdatei gespeichert

if(empty($name) || empty($email) || empty($eintrag) || empty($alter))
 {
 echo "Bitte füllen Sie alle Felder aus!";
 }
else
 {
 echo "Ihre Daten wurden gespeichert!";
 }


?>
<a href="guestbook.php"><p>Züruck zum Gästebuch</p></a>
</body>
</html>


Wie ihr sehen konnt fasse ich alle Daten zusammen. ($_POST[eintrag], $_POST, $_POST[name]). Dann habe ich auch $_POST[alter] gemacht. Aber wenn ich das dann mache gibt er mir folgende Fehlermeldung:

[QUOTE]
Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING in /usr/export/www/vhosts/funnetwork/hosting/lolpi14/gb.php on line 16
[/QUOTE]


Da hat dann einer gesagt, dass ich die Hochkommas an ['alter'] setzen muss. Aber das ist bei den anderen doch nicht so. Warum sollte ich das jetzt bei Alter auch so machen?

@ComputerFreak

Ja das weiß ich doch ! Schau dir doch mein Code an, den ich in meinem ersten Post verlinkt habe!
 
Hallo xanthos1

es liegt an der Zeile.
PHP:
$daten = $_POST[eintrag]."<br>von <a href=mailto:".$_POST[email].">".$_POST[name].$_POST[alter]"</a><br><br>";  // Daten werden zusammengeaffst, dass der Name auf die eingegebene E-Mail Adresse verlinkt wird
Dort sind keine Anführungszeichen oder Hochkommatar um die Indexe gesetzt.
Also ist das für PHP eine Constante, die nicht Definiert ist.

Grüße
 
Ahh jetzt hab ich die Hochkommas gesetzt und jetzt gehts ! Danke !

Aber was ich nicht verstehe:

In dem Tutorial das ich durchgenommen habe, war das auch ohne Hochkommas gesetzt. Und da ich ja Alter nicht gesetzt habe, ging das auch problemlos. Als ichs dann mit Alter versucht habe, ging das alles plötzlich nicht mehr. Komisch.
 
Dann wurde in dem Turorial vermutlich irgendwo die Konstante "eintrag" Definiert.
Wie ist denn der Link zum Tutorial?
 
Zuletzt bearbeitet:
PHP:
if(empty($name) || empty($email) || empty($eintrag) || empty($alter))
 {
 echo "Bitte füllen Sie alle Felder aus!";
 }
else
 {
 echo "Ihre Daten wurden gespeichert!";
 }

Das würd ich sowieso auch nochmal überdenken. Nur weil alle datensätze gefüllt sind heißt es noch lange nicht nicht das sie auch richtig gespeichert wurden. du funktion fwrite($datei, $daten); gibt auch nen true bzw false zurück soweit ich weiß. Nur mal so als denkansatz ;)
 
krizzelfix schrieb:
Dann wurde in dem Turorial vermutlich irgendwo die Konstante "eintrag" Definiert.
Wie ist denn der Ling zum Tutorial?

Sorry, hab den Link leider nicht mehr :-(

Aber wenn dann muss das als Konstante definiert sein oder ? also z.B. define("EINTRAG", 'eintrag', oder ? Das finde ich nicht. Es sind ja 3 Dateien.

guestbook.php
gb.php und
eintragen.html

Da gibt es keine Konstante(n).

Hanni2k schrieb:
PHP:
if(empty($name) || empty($email) || empty($eintrag) || empty($alter))
 {
 echo "Bitte füllen Sie alle Felder aus!";
 }
else
 {
 echo "Ihre Daten wurden gespeichert!";
 }

Das würd ich sowieso auch nochmal überdenken. Nur weil alle datensätze gefüllt sind heißt es noch lange nicht nicht das sie auch richtig gespeichert wurden. du funktion fwrite($datei, $daten); gibt auch nen true bzw false zurück soweit ich weiß. Nur mal so als denkansatz ;)

Was meinst du mit "richtig gespeichert sind" ? Versteh ich nicht so ganz ...
 
xanthos1 schrieb:
Aber wenn dann muss das als Konstante definiert sein oder ? also z.B. define("EINTRAG", 'eintrag', oder ? Das finde ich nicht. Es sind ja 3 Dateien.
Mh, komisch. Aber auf jedenfall müssen um die Indexe Hochkommatar, wenn es Strings sein sollen.

Was meinst du mit "richtig gespeichert sind" ? Versteh ich nicht so ganz ...
Er will damit sagen, das nur weil der Benutzer alle Daten übergeben hat, nicht umbeding auch alles in die Datei geschrieben wurden. Es kann immer mal was schief gehen.

Und ausserdem schreibst du erst alles in die Datei und dann überprüfst du, ob der Benutzer auch alles übergeben hat.
D.H. wenn ein Benutzer nichts eingegeben hat, wird das ganze "<a href=" etc. in die Datei geschieben, und das jedes mal, wenn das Formular abgesendet wird.
 
Zurück
Oben