PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Method="pot" / superglobale $_POST


Christel
17.04.2005, 11:19:13
Hallo - das ist mir alles noch viel zu hoch! Ich brauche als Anfänger einen Ansatzpunkt.

Wer kann mir bitte das exakte listing für folgende Situation geben:

Übernahme einer Variablen aus einem Formular mit method="post"

form
method="post", name ="Dateninhalt"

php
echo "Es wurden folgende Daten: $_POST['Dateninhlat'] eingegeben.";

Kann mir evtl. jemand einen Tipp geben, wo ich fertige listings mit superglobalen erhalten kann? Ich will kein Experte werden, sondern lediglich wissen, um was es hier geht.

Vielen heißen Dank und einen schönen Sonntag.
Christel

xabbuh
17.04.2005, 12:42:53
Die Eingabefelder und nicht das Formular müssen Namen zugewiesen bekommen, damit du darauf mit dem $_POST-Array zugreifen kannst.

Christel
19.04.2005, 11:01:09
Hallo Xabbuh,

ich finde Dein persönliches Engagement in diesem Forum super!

Dein Hinweis hat mir leider nicht geholfen. Meine bisherigen Kenntnisse sind gleich Null.

Meine letzten Eingaben, bei denen das Formular funktioniert, die Übergabe in die php-Datei aber nicht: (Eigentlich müsste doch "value" übergeben werden?)

Formular:
<?
$Dateninhalt="test_Dateninhalt";
echo "input type=text name=[$Dateninhalt]";

php-Datei
<?
$Dateninhalt="";
echo "Daten: $_POST['Dateninhalt']";

Kannst Du mir vielleicht eine Internetadresse nennen, wo ich ein paar scripte mit superglobalen finde?

Einen schönen Tag,
Christel

xabbuh
19.04.2005, 11:42:01
Formular:
<?
$Dateninhalt="test_Dateninhalt";
echo "input type=text name=[$Dateninhalt]";
Wofür hast du denn da die eckigen Klammern? Schau dir mal an, wie der HTML-Quelltext des Formulars im Browser jetzt aussieht.

Kannst Du mir vielleicht eine Internetadresse nennen, wo ich ein paar scripte mit superglobalen finde?
Im Tutorial (http://tut.php-q.net) gibt es ein Kapitel über Formularverarbeitung (http://tut.php-q.net/formulare.html). Vielleicht hilft dir das weiter.

Christel
19.04.2005, 14:27:11
Hallo Xabbuh,

vielen Dank. Die eckigen Klammern sind ein Resultat meiner stundenlangen Probiererei. Ohne Klammer gehts auch, wie ich gesehen habe. Das Formular ist also ok.

Aber was ist am Listing in der PHP-Datei falsch? Wäre super, wenn Du mir das sagen könntest. Meldung ist: Parse Error .....T-String.... Ich denke, Du kennst diese Fehlermeldungen, sonst schaue ich noch einmal genau nach. Ist die Variable so richtig? Muss sie im Formular und in der PHP-Datei enthalten sein?

Auf der genannten Internetseite werde ich mich erneut umschauen. Bisher hatte ich nichts für mich Verwendbares gefunden. Vielen Dank für den Hinweis.

Einen schönen Nachmittag
Christel

xabbuh
19.04.2005, 14:30:10
Wie sieht dein Script aus, wenn du diese Fehlermeldung erhälst?

Christel
19.04.2005, 19:44:02
Hallo Xabbuh,

ganz simpel:

<?php
$Dateninhalt="";
echo "Datenübernahme";
echo "Folgende Daten wurden übernommen: $_POST['Dateninhalt']";
?>

Fehlermeldung:
parse error, unexpected T-ENCAPSED ..... expecting T_STRING or
T_VARIABLE or .....

Danke, dass Du mir hilfst. Ich weiß, Anfänger sind eine Zumutung, aber im Moment fehlt mir einfach aktuelle Fachliteratur. Ich bin heilfroh, dass Du mich darauf aufmerksam gemacht hast, dass die von mir angewendete Methode nach Fachbuch mit register_global=On überholt ist.
Grüße
Christel

feuervogel
19.04.2005, 20:08:42
probiers mal so:

echo "Folgende Daten wurden übernommen: {$_POST['Dateninhalt']}";

Christel
19.04.2005, 20:43:46
Hallo Feuervogel, nett, Dich kennen zu lernen und vielen Dank!

Die geschweifte Klammer war schon mal gut. Die php-Datei wird geöffnet, aber leider interpretiert der Browser nur den Text, nicht aber den Übergabewert. Es erscheint auch keine Fehlermeldung. Der Wert fehlt ganz einfach. Bringt Dich das auf eine weitere Idee? Könnte das Nichtfunktionieren eventuell an der php.ini liegen? Oder an der httpd.conf des Apache? Ohne Superglobale funktioniert der Server mit PHP, MySQL und Formularen einwandfrei.

Grüße
Christel

xabbuh
19.04.2005, 21:50:09
DIe Frage ist ja, ob der Schlüssel Dateninhalt überhaupt im $_POST-Array existiert.
Setz mal error_reporting(E_ALL) an den Anfang deines Scriptes. Dann solltest du eine entsprechende Bemerkung erhalten, falls es dementsprechend Probleme gibt.

Christel
20.04.2005, 07:49:26
Guten Morgen Xabbuh,

Script:
<?php
error_reporting(E_All) //ohne ;
echo "Folgende Daten wurden übernommen: $_POST['Dateninhalt']";
?>

Fehlermeldung: parse error, unexpected T_ECHO.....line 3

Sagt Dir das, wo der Fehler liegt? Ich komme mir, ehrlich gestanden, ziemlich bescheuert vor, dass ich das nicht hinkriege. Ich werde heute in die Stadt fahren und schauen, ob ich aktuelle PHP-Scripts kaufen kann. Für den Moment kann ich Dir nur noch einmal ganz herzlich für Deine Hilfe danken.

Einen schönen Tag
und Gruß Christel

|Coding
20.04.2005, 08:44:55
Guten Morgen Christel,

Du muesstest es so scheiben:

<?php
error_reporting(E_All);
echo "Folgende Daten wurden übernommen: {$_POST['Dateninhalt']}";
?>

Christel
20.04.2005, 09:14:29
Guten Morgen Coding,
vielen Dank für Deinen Tipp. Habe ich gemacht. Ergebnis:

Browser interpretiert den echo-Befehl ohne Variable und ohne Fehlermeldung. Die Variable $_POST scheint er nicht zu kennen. Muss ich im Formular eine Variable definieren? Wenn ja, kannst Du mir bitte schreiben wie?

Mein Formular enthält neben den üblichen Eingaben lediglich folgende Angaben für das Eingabefeld "Dateninhalt".

<input type="text" name="Dateninhalt">

Könnte es sich eventuell um ein Versionsproblem mit PHP handeln? Ich habe PHP 4.3.3.3 installiert. Ich komme darauf, weil ein Buchscript, das mit PHP_SELF (nicht $_SERVER['PHP_SELF']) arbeitet, ebenfalls nicht geöffnet wird.

Gruß Christel

xabbuh
20.04.2005, 09:30:51
Browser interpretiert den echo-Befehl ohne Variable und ohne Fehlermeldung. Die Variable $_POST scheint er nicht zu kennen.
Was für eine Meldung erhälst du denn, aus der du das schließt?

Mein Formular enthält neben den üblichen Eingaben lediglich folgende Angaben für das Eingabefeld "Dateninhalt".
Du hast aber schon method="POST" im form-Tag stehen?

Könnte es sich eventuell um ein Versionsproblem mit PHP handeln? Ich habe PHP 4.3.3.3 installiert.
Das ist kein Problem. Die Superglobalen stehen seit PHP-Version 4.1.0 zur Verfügung.

Ich komme darauf, weil ein Buchscript, das mit PHP_SELF (nicht $_SERVER['PHP_SELF']) arbeitet, ebenfalls nicht geöffnet wird.
Das wird daran liegen, dass register_globals (http://de2.php.net/manual/en/ini.core.php#ini.register-globals) deaktiviert ist und du deswegen mit $_SERVER['PHP_SELF'] (http://www.php.net/manual/de/reserved.variables.php#reserved.variables.server) arbeiten musst.

Christel
20.04.2005, 13:58:45
Hallo Xabbuh,

ja, ich habe method="Post" im Formular,
register_globals=On, ist also aktiviert,

ich habe weiter probiert:

Formular ohne Variable, method="Post"
<input type="text" name="Dateninhalt">

php-Datei
<?php
error_reporting(E_All);
$_POST="Dateninhalt";
echo "Folgende Daten wurden übernommen: {$_POST['Dateninhalt']";
?>

Ergebnis: php-Datei wird geöffnet, der Text wird ausgegeben, und von der Variablen erscheint nur das D (von Dateninhalt). Keine Fehlermeldung.

Wie kann ich erreichen, dass der Wert "value" des Formularfeldes, der ja übernommen werden soll, an dieser Stelle ausgelesen wird? Ist dazu eine Variable für "value" des Formularfeldes notwendig? Wenn ja, in der PHP-Datei oder im Formular? Und wie?

Gruß Christel

|Coding
20.04.2005, 14:13:03
Hi,

kannst Du mal das komplette Formular und den kompletten PHP-Code posten?
Der Fehler liegt anders wo, das habe ich im Urin :-)

Christel
20.04.2005, 17:36:45
Hallo an alle, die mir geholfen haben!

Problem ist gelöst! Ich hatte in meiner Unwissenheit auf diesem Gebiet im Formular das Tag enctype="text/plain", das war der Fehler. Das konntet Ihr natürlich nicht wissen, weil ich es nie erwähnt habe.

Ich danke Euch allen sehr für Eure Geduld mit mir und die vielen Hinweise, die letztlich zur Lösung des Problems geführt haben. Ich habe viel gelernt.

Viele Grüße
Christel