Übergabe von Inhalten per POST

Stelo

Erfahrenes Mitglied
Hallo liebe Community,

ich wollte gerade nur ein kleines Gästebuch programmieren. Damit hatte ich bis jetzt noch NIE Probleme.
Doch nun erhalte ich immer folgende Fehlermeldung wenn ich den Submit-Button klicke:
Notice: Undefined index: name in /var/www/web94/html/Sound/PHP/guestbook_save.php on line 8
Notice: Undefined index: email in /var/www/web94/html/Sound/PHP/guestbook_save.php on line 9
Notice: Undefined index: art in /var/www/web94/html/Sound/PHP/guestbook_save.php on line 10
Notice: Undefined index: text in /var/www/web94/html/Sound/PHP/guestbook_save.php on line 11

Meine Codes dazu:
HTML:
<form action="index.php?section=guestbooksave" method="POST" enctype="text/plain" >
<table>
<tr>
<td>
<table>
<tr>
	<td>Name:</td>
	<td><input type="text" class="suche" name="name" /></td>
</tr>
<tr>
	<td>E-Mail:</td>
	<td><input type="text" class="suche" name="email" /></td>
</tr>
<tr>
	<td>Art:</td>
	<td><select size="1" class="suche" name="art">
	<option value="kritik & lob">Kritik & Lob</option>
	<option value="werbung">Werbung</option>
</select></td>
</tr>
<tr>
	<td>3*3 = </td>
	<td><input type="text" class="suche" name="zahl" size="3" /></td>
</tr>
</table>
</td>
<td>
<table>
<tr>
	<td>Nachricht:</td>
	<td><textarea cols="22" rows="6" name="text" style="font-family: Tahoma;  font-size:11px;"></textarea></td>
</tr>
</table>
</td>
<td>
<input type="submit" value="Abschicken" class="button"/> <input type="reset" class="button" />
</td>
</tr>
</table>
</form>
Und der Anfang der PHP Datei in dem ich die übergebenen Werte auslesen möchte:
PHP:
$name = htmlentities($_POST['name']);
$email = $_POST['email'];
$art = $_POST['art'];
$text = htmlentities($_POST['text']);
$datum = time();
$zahl = $_POST['zahl'];

Ich kann mir diese Fehlermeldung leider überhaupt nicht erklären.
Ich habe auch schon die schreibweise $_POST["name"] probiert, oder auch $_post[] hat jedoch beides nichts geändert.

phpinfo() vllt. hilft das ja bei der Fehlresuche.

Ich wäre wirklich über jeden Tipp sehr dankbar, ich bin nämlich wirklich ratlos.
 
Das Problem ist dass Du nicht ueberpruefst ob die Indizes denn ueberhaupt existieren.
Wenn Du also nichts uebergibst und dennoch ausgibst greifst Du auf nicht-existente Indizes zu, was Dir die von Dir gezeigte Message wirft.
 
Ja ok, würde ich vorher überprüfen ob die Varaible überhaupt exestiert würde ich die Fehlermeldung umgehen.
Doch das ändert ja dann nichts an meinem Problem, dass NICHTS in die Datenbank eingetragen wird, da die Variablen leer sind, obwohl das Formular ausgefüllt wurde.
Ich verstehe nämlich nicht ganz, warum $_POST['name'] und Co. nicht exestieren obwohl die Inhalte doch aus demFormular übergeben werden müssten.
 
Hmm, also wenn das Formular abgeschickt wurde sollten die Daten ja eigentlich da sein.

Probier mal
PHP:
var_dump($_POST);
Da solltest Du sehen was kommt.
 
Also das ist wirklich seltsam ... :-O

Obwohl ich das Formular ausgefüllt habe.
Ich habs auch extra bei 2 Formularen probiert. Bei keinem funktioniert es.
Ich bin langsam echt ratlos.
Aber vielen Dank schon einmal für deine Hilfe. :)
 
wie sieht es mit $_REQUEST aus ?

oder ist das etwa alt und wird nicht mehr benutzt ?

mfg chmee
 
wie sieht es mit $_REQUEST aus ?

oder ist das etwa alt und wird nicht mehr benutzt ?

mfg chmee
Hm ... damit habe ich noch nie gearbeitet.
Ich hab gerade mal var_dump($_REQUEST) ausprobiert, doch das liest mir irgendwie nur das aus, was per GET übergeben wurde.
array(1) { ["section"]=> string(13) "guestbooksave" }

Code:
$name = htmlentities($_REQUEST["name"]);
echo $name;
Das funktioniert leider auch nicht. :(
 
Nimm einfach mal das enctype-Attribut aus dem Formular heraus :)

POST-Formulare gehören mit application/x-www-form-urlencoded(Standardeinstellung) oder multipart/form-data(bei Dateiupload) kodiert.
 
Hallo Steffi,
der enctype ist das Problem. Ersetze
PHP:
enctype="text/plain"
durch
PHP:
enctype="multipart/form-data"

LG
Nomad
 
Mir wurde mein Fehler so eben per ICQ mitgeteilt.
Ich musste einfach nur enctype="text/plain" löschen bzw. durch enctype="multipart/form-data" ersetzen und schon funktioniert es.
Ach .. solche fiesen Fehler immer.
Vielen Dank aber für eure Mühe und Hilfe. :)
 
Zurück