id übergabe
lvl
- php
0 Martin Hölter0 Tom0 Tom
Hi,
ich weiß nicht wo mein fehler ist... aber es muss einen geben.
Folgendes Script:
<table width="100%" border="0" cellpadding="2" cellspacing="0">
<tr>
<td>Zum betrachten eines Lehrgangs, geben Sie bitte die
Lehrgangs ID ein,<br> oder klicken Sie auf den Lehrgang.</td>
</tr>
<tr>
<td><br>
<form name="form1" method="post" action="index.php?page=view&id=<?php echo $_POST['id'];?>">
<b>ID Eingabe:</b> <input type="text" name="id" size="5" maxlength="9">
<input name="" type="submit" value="OK">
</form></td>
</tr>
</table>
Auf der nächsten Seite, bzw. in der Adresszeile:
http://fs_mma/webdb/index.php?page=view_lehrgang&id=%3Cbr%20/%3E%3Cb%3ENotice%3C/b%3E:%20%20Undefined%20index:%20%20id%20in%20%3Cb%3ED:\Webserver\WWW\html\webdb\page\view_auswahl.php%3C/b%3E%20on%20line%20%3Cb%3E8%3C/b%3E%3Cbr%20/%3E
Auf Deutsch: Notice: Undefined index: id in D:\Webserver\WWW\html\webdb\page\view_auswahl.php on line 8
muss wohl irgend was mit dem <?php echo $_POST['id'];?> zu tun haben, aber was?
Ich seh kein Fehler.
Habs auch schon mit &_GET['id'] probiert, ging auch nicht... gleiches in grün
Hi!
Auf Deutsch: Notice: Undefined index: id in D:\Webserver\WWW\html\webdb\page\view_auswahl.php on line 8
muss wohl irgend was mit dem <?php echo $_POST['id'];?> zu tun haben, aber was?
Logisch. Du sagst ihm, er soll $_POST['id'] ausgeben, was er aber nicht kann, da es $_POST['id'] ja nur gibt, wenn per Post die Variable id gesetzt wird. Also kriegst du eine Notice.
Besser wäre hier
if isset($_POST['id']){
$id = $_POST['id'];
}
else{
$id = '';
}
echo $id;
hier wird zuerst geprüft, ob der Wert existiert, wenn ja, wird er der Variable $id zugewiesen, ansonsten kriegt $id den Leerstring und verursacht so keine Notice mehr.
Gruß
Martin
Hello,
<form name="form1" method="post" action="index.php?page=view&id=<?php echo $_POST['id'];?>">
<b>ID Eingabe:</b> <input type="text" name="id" size="5" maxlength="9">
<input name="" type="submit" value="OK">
</form></td>
Mir dünkt, dass Du eventuell (!) den Mechanismus noch nicht verstanden hast.
Du hast Das Dokument, das das Formular enthält. Und das sendest Du nun dem Client.
Der User sieht das Form, und clickt irgendwas darin an.
Wer soll denn diesen neuen Request (durch das Klicken auf einen Submit-Button im Formular) nun beantworten? Ist dafür das Script ** index.php?page=view&id=<?php echo $_POST['id'];?> ** zuständig?
Oder entscheidest Du erst in diesem Formular, welche ID an daw Script "index.php" übertragen weden soll? Dann musst Du sie im Formular "verdrahten", z.B. durch den Namen eines Submit-Buttons:#
<form action="index.php" ...>
<input ...>
<input type="submit" name="btn[form][1]" value="Formular 1">
<input type="submit" name="btn[form][2]" value="Formular 2">
</form>
und dann in der index.php:
$btn = 0; # default
if(isset($_POST['btn']) and is_array($_POST['btn']))
{
$btn = key($_POST['btn']);
}
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
Hello,
<input type="submit" name="btn[form][2]" value="Formular 2">
und dann in der index.php:
$btn = 0; # default
if(isset($_POST['btn']) and is_array($_POST['btn']))
{
$btn = key($_POST['btn']);
}
Da habe ich nun eine Stufe vergessen...
in $_POST['btn'] sollte jetzt z.B. form[1] drinstehen.
Das kannst Du dann an die Subroutine 'form' weiterleiten, die dann schaut, was in $btn drinsteht.
Durch diese Arrayunterstützung von PHP kann man auch relativ leicht Formular-Zertifikate (in Zusammenarbeit mit einer Session und/oder DB) vergeben.
Harzliche Grüße aus http://www.annerschbarrich.de
Tom