Source code |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
<table class="main" border="0" cellpadding="1" cellspacing="2" width="95%" align="center"> <tr> <th class="main" align="left" bgcolor="#00a0ff">Neuen Eintrag erzeugen </th> </tr> <tr> <td class="main" bgcolor="#000000"> <form action="/homepage/home.php" method="post" enctype="text/plain"> <div> <table border="0" cellpadding="0" cellspacing="0" width="100%"> <tr> <td> <table border="0" cellpadding="1" cellspacing="2" width="100%"> <tr><td>Name: <br><input type="Text" name="name" value=""></td></tr> <tr><td>E-Mail: <br><input type="Text" name="email" value=""></td></tr> <tr><td>Homepage: <br><input type="Text" name="homepage" value=""></td></tr> <tr><td>ICQ: <br><input type="Text" name="ICQ" value=""></td></tr> </table> </td> <td> <textarea name="text" cols="50" rows="10"></textarea><br><br> <input type="hidden" name="zaehler" value="8"> <input type="hidden" name="action" value="eintrag"> <input type="Submit" value=" Eintragen "> <input type="reset" value="Nee, doch nicht"> </td> </tr> </table> </div> </form> </td> </tr> </table> |
Source code |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
call_user_func("entry","Neuen Eintrag erzeugen", " <form action="".$PHP_SELF."" method="post" enctype="text/plain"> <div> <table border="0" cellpadding="0" cellspacing="0" width="100%"> <tr><td> <table border="0" cellpadding="1" cellspacing="2" width="100%"> <tr><td>Name: <br><input type="Text" name="name" value=""></td></tr> <tr><td>E-Mail: <br><input type="Text" name="email" value=""></td></tr> <tr><td>Homepage: <br><input type="Text" name="homepage" value=""></td></tr> <tr><td>ICQ: <br><input type="Text" name="ICQ" value=""></td></tr> </table> </td> <td> <textarea name="text" cols="50" rows="10"></textarea><br><br> <input type="hidden" name="zaehler" value="".$zaehler.""> <input type="hidden" name="action" value="eintrag"> <input type="Submit" value=" Eintragen "> <input type="reset" value="Nee, doch nicht"> </td></tr> </table> </div> </form> "); |
Source code |
|
1 |
<form action="/homepage/home.php" method="post" enctype="text/plain"> |
Quoted
Original von Markus
Das Problem: Anstatt die Seite 'homepage/home.php?zaehler=8&action=eintrag&[usw.]' aufzurufen, wird lediglich die Seite homepage/home.php aufgerufen, und die Variablen werden nicht übergeben. In meiner früheren Version des Gästebuch hat alles funktioniert, daher bin ich grade so ratlos. Wahrscheinlich nur ein dummer Fehler - aber ich sehe ihn nicht!
This post has been edited 2 times, last edit by "migu" (Feb 25th 2005, 1:08pm)
Guru
Date of registration: Dec 11th 2001
Location: Hämelerwald
Occupation: Wissenschaftlicher Mitarbeiter (Forschungszentrum L3S, TU Braunschweig)
Das liegt daran, daß Du die Forumulardaten mittels HTTP-POST- statt -GET-Request übermittelst. Bei einem POST werden die Daten im HTTP-Header verschickt und nicht über Parameter in der URL. In beiden Fällen sollten PHP jedoch in der Lage sein, die Parameter zu verarbeiten. Klappt es denn, wenn Du method="get" verwendest?Quoted
Original von Markus
Ich habe gerade ein Problem mit Formularen in html bzw. php.
Und zwar soll bei klick auf den Button "eintragen" entsprechend die eingegebenen Daten weiter gesendet werden. Werden sie aber nicht.
HTML Code: (Auszug)
Source code
1 <form action="/homepage/home.php" method="post" enctype="text/plain">
Das Problem: Anstatt die Seite 'homepage/home.php?zaehler=8&action=eintrag&[usw.]' aufzurufen, wird lediglich die Seite homepage/home.php aufgerufen, und die Variablen werden nicht übergeben.
This post has been edited 1 times, last edit by "Markus" (Feb 25th 2005, 1:51pm)
Quoted
von: http://www.schattenbaum.net/php/
Aber wie kann ich denn ...
... die Variablen übergeben?
So, wie wir bisher mit Variablen gearbeitet haben, müssen diese von Anfang an festgelegt sein. Es kann jetzt aber auch der Fall sein, dass wir die Variablen erst später festlegen wollen, bzw. diese durch eine Benutzereingabe füllen wollen.
Bei diesem Script wird durch ein Formular der Inhalt des Feldes übergeben und auf der darauf folgenden Seite ausgegeben.
Ganz wichtig ist es hierbei, dass die Formularfelder einen eindeutigen Namen bekommen, da dieser Name als Variablenname verwendet wird.
Die erste Seite, die beim Beispiel angezeigt wird sieht so aus (nur das Formular ohne CSS-Anweisungen):
<form action="form2.html" method="post">
<input type="text" size="17" name="Inhalt">
<br><br>
<center>
<input type="submit" value="OK">
</center>
</form>
Die erste Zeile ruft ein Formular auf, bei dem durch das action festgelegt wird, welche Datei nach dem Absenden aufgerufen werden soll. Du kennst das vielleicht mit cgi-Programmen. Dort steht dann action="sendmail.cgi" oder Ähnliches. Ebenfalls wird hier festgelegt, dass als method post verwendet werden soll.
---------------------------------------------------------------------------------
post contra get
Als Übertragungsmethoden hast du prinzipiell post und get zur Verfügung. Bei PHP werden wir fast immer post verwenden. Der Unterschied besteht darin, dass durch get eine Url aufgerufen wird, an die sämtliche Formulardaten angehängt werden. Nun ist aber die maximale Länge von Urls beschränkt und wenn zuviel Inhalt mitgeschickt werden soll funktioniert es daher nicht mehr.
So würde in unserem Fall diese Url so aussehen (falls "Claudia" in das Feld eingetragen wurde):
http://www.schattenbaum.net/php/form2.html?Inhalt=Claudia
Überträgt man die Daten jedoch mittels post können beliebig lange Inhalte mit übertragen werden, da diese nicht in eine Url umgewandelt werden, sondern durch Steuerungsanweisungen des Browsers übermittelt werden.
Das Umstellen auf get kann jedoch dann sinnvoll sein, wenn überprüfen möchte ob und welche Daten übertragen werden.
---------------------------------------------------------------------------------
Durch die folgende Zeile wird ein Text-Input-Feld mit einer Größe von 17 definiert und diesem Feld wird der Name Inhalt zugewiesen.
Danach kommt nur noch ein Zeilenabstand und ein zentrierter Submitbutton.
Aber was steht jetzt in der form2.html, die ja durch unser Formular aufgerufen wird?
Und jetzt kann ich deinen Namen (oder das, was du in
das Feld geschrieben hast) anzeigen lassen:
<br><br>
<?
echo $Inhalt;
?>
<br><br>
Wie das funktioniert erfährst du, wenn du das
Fenster wieder schließt.
Du erinnerst dich daran, dass unser Input-Feld den Namen Inhalt hatte? Genau dieses Feld (bzw. der Inhalt des Feldes) wird jetzt ausgegeben. Das "Inhalt" wird zum Namen der Variable (ohne, dass diese von uns extra zugewiesen werden müsste) und ist dadurch über $Inhalt ansprechbar.
Verwendest du jedoch bei Feldname (in form1.html) und Variablenname (in form2.html) eine unterschiedliche Schreibweise (zB große bzw. kleine Anfangsbuchstaben) so bekommst du einfach nichts angezeigt.
Jedes Feld in deinem Formular ist über den Namen, den du ihm gegeben hast ansprechbar. Du musst allerdings auch hier beachten, dass du keine Zahlen an den Anfang stellen darfst. Der Name "01Absender" ist daher nicht möglich. Du solltest daher darauf achten, dass du keinen Feldnamen doppelt verwendest.
Da du aber nicht immer ein Formularfeld verwenden kannst, wenn du Daten übergeben willst, kannst du dies auch mittels einer Url machen.
Dabei gibst du zunächst ganz normal den Namen der Datei an ...
test.html
... und verbindest damit durch ein Fragezeichen den Namen der 1. Variable ...
test.html?Vorname
... auch hier erfolgt die Zuweisung des Inhaltes durch ein Ist-Gleich ...
test.html?Vorname=Claudia
... Weitere Variablen kannst du mit einem kaufmännischen Und (&) anhängen (dabei brauchst du kein weiteres Fragezeichen) ...
test.html?Vorname=Claudia&Nachname
... und auch dieser Variable wird ein Inhalt zugeordnet ...
test.html?Vorname=Claudia&Nachname=Schaffarik
In der Datei test.html kannst du jetzt durch $Vorname und $Nachname auf die Inhalte (Claudia bzw. Schaffarik) der Variablen zugreifen.
Das sieht dann zB so aus:
<?
echo "Vorname: ", $Vorname;
echo "<br>";
echo "Nachname: ", $Nachname;
?>
This post has been edited 1 times, last edit by "oixio" (Feb 25th 2005, 2:02pm)