lvl: id übergabe

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

--
MfG lvl
  1. 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

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

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    Nur selber lernen macht schlau
    1. 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

      --
      Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
      Nur selber lernen macht schlau