Dies ist eine statische Kopie unseres alten Forums. Es sind keine Interaktionen möglich.
This is a static copy of our old forum. Interactions are not possible.

Markus

the one and only Unterstrich!

  • "Markus" started this thread

Posts: 2,571

Date of registration: Oct 9th 2003

1

Friday, February 25th 2005, 12:15pm

Probleme mit html und/oder php

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.
Bin jetzt seid mehr als einer Stunde am testen, vielleicht weiß ja jemand von euch, wo mein Fehler ist.

HTML Code: (Auszug)

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     ">&nbsp;&nbsp;
 		<input type="reset" value="Nee, doch nicht">
 	   </td>
 	  </tr>
	 </table>

	 </div>

	 </form>

	 </td>
	 </tr>
</table>


Der Code an und für sich ist HTML 4.01 Transitional valid.

Code erzeugender PHP Quelltext:

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     ">&nbsp;&nbsp;<input type="reset" value="Nee, doch nicht">
 </td></tr>
</table>
</div>
</form>
");


wobei die Funktion "entry" lediglich eine Echo-Funktion ist, die die Varibalen in eine Tabelle einbettet, mit der ersten Variable als Title und der 2. Variable als Tabellen-body.

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!
Charmant sein? Hab ich längst aufgegeben. Glaubt mir doch eh keiner...

Matthias

Praktikant

  • "Matthias" is male

Posts: 7

Date of registration: Oct 17th 2004

Location: Hannover

2

Friday, February 25th 2005, 12:33pm

RE: Probleme mit html und/oder php

Ich könnte mir vorstellen, dass es daran liegt, dass "Submit" in der Zeile
<input type="Submit" value=" Eintragen ">
groß geschrieben ist, es müsste doch eigentlich "submit" heißen, glaube ich.
It`s not a bug, it`s a feature. (Jack Tramiel, Atari Corp.)

Markus

the one and only Unterstrich!

  • "Markus" started this thread

Posts: 2,571

Date of registration: Oct 9th 2003

3

Friday, February 25th 2005, 12:52pm

negativ, daran lag es nicht
Charmant sein? Hab ich längst aufgegeben. Glaubt mir doch eh keiner...

migu

free rider

  • "migu" is male

Posts: 2,643

Date of registration: Dec 11th 2001

Occupation: Developer

4

Friday, February 25th 2005, 1:06pm

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!


Bei der POST-Methode werden die Variablen nicht in der URL übergeben (GET-Methode), sondern über den, für den Benutzer unsichtbaren, Standardeingabe-Kanal. (siehe http://de.selfhtml.org/html/formulare/definieren.htm)

PHP stellt drei Array-Variablen zum Zugriff zur Verfügung:
1. $_GET
2. $_POST
3. $_REQUEST (das sowohl die POST-, als auch die GET-Daten enthält)
(siehe PHP-Dokumentation)

HTH, migu
tar: Anlegen eines leeren Archivs wird feige verweigert.

This post has been edited 2 times, last edit by "migu" (Feb 25th 2005, 1:08pm)


  • "Joachim" is male

Posts: 2,863

Date of registration: Dec 11th 2001

Location: Hämelerwald

Occupation: Wissenschaftlicher Mitarbeiter (Forschungszentrum L3S, TU Braunschweig)

5

Friday, February 25th 2005, 1:07pm

RE: Probleme mit html und/oder php

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.
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?

(siehe auch http://www.w3.org/TR/html4/interact/forms.html#h-17.13.1)
The purpose of computing is insight, not numbers.
Richard Hamming, 1962

Markus

the one and only Unterstrich!

  • "Markus" started this thread

Posts: 2,571

Date of registration: Oct 9th 2003

6

Friday, February 25th 2005, 1:40pm

Aaaaah, ich könnte sowas von kotzen!!!!!!!!!!!

Erstmal danke euch beiden, natürlich lag es an dem Post, was ich unbedingt dahinschreiben musste, anstatt einfach das get zu nehem (was gar der default Wert ist). (Ich hasse es, da sucht und sucht man....)

Allerdings bin ich grade bei der Suche nach einer Lösung ebenfalls auf die Lösung mit
1. $_GET
2. $_POST
3. $_REQUEST
gekommen.
Problem: Wenn ich
<form ... method="get" ...
schreibe, bekomme ich zB bei echo $_GET['action'] das richtige value, wenn ich hingegen
<form ... method="post" ...
schreibe, komme ich irgendwie nicht an die Variablen ran, egal ob ich 1. $_GET, $_POST oder $_REQUEST benutzte.

Eine Ahnung, woran dass jetzt wieder liegen könnte (@Migu), dann könnte ich die die Adress Zeile 'sauber' halten. (:
Wenn nicht ist auch egal, erstmal komme ich weiter, daher nochmals thx für den Zaunpfahlwink.

Edit: Das Post funktioniert irgendwie absolut nicht. Ich habe gerade mal eine entsprechende Formularvorlage von einer php Seite gezogen und getestet, und da werden bei der Auswertung die Variablen ebenfalls als nicht vorhanden behandelt.
Vielleicht sollte ich es bei Gelegenheit ja mal mit einem neuen Apache versuchen ...
Charmant sein? Hab ich längst aufgegeben. Glaubt mir doch eh keiner...

This post has been edited 1 times, last edit by "Markus" (Feb 25th 2005, 1:51pm)


oixio

Senior Schreiberling

  • "oixio" is male

Posts: 517

Date of registration: Oct 3rd 2004

7

Friday, February 25th 2005, 2:00pm

Ich kopier hier jetzt einfach mal was aus dem kleinen Tut raus, mit dem ich mal bei PHP angefangen hab:

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&auml;hrst du, wenn du das
Fenster wieder schlie&szlig;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;
?>



Ich hoffe das hilft dir weiter.

mfg
oixio
Dieser Post wurde aus 100 % chlorfrei gebleichten, handelsüblichen, freilaufenden, glücklichen Elektronen erzeugt!

This post has been edited 1 times, last edit by "oixio" (Feb 25th 2005, 2:02pm)