Fehler: Undefined Index. Warum wird die Variable nicht gefunden?

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Fehler: Undefined Index. Warum wird die Variable nicht gefunden?

    Hallo!!

    Habe schon "das halbe Netz" abgegrast, um endlich eine Lösung zu finden, aber mein Problem habe ich nicht direkt damit lösen können. Ich hoffe, einer von Euch kann mit einen Rat geben.

    Habe ein einfaches Formular mit einem Input, einem Select und einen stink normalen Button. Den Inhalt des Selects lese ich aus einer MySQL-DB aus. Im gleichen php-Dokument sollen die eingegeben Werte angezeigt werden. Dazu weise ich den entsprechenden Variablen den Inhalt des Post-Arrays (mit dem Namen des jeweiligen Objektes als Index) zu.

    PHP-Code:
    <form action="index.php" method=post>
    <table border="1">
    <tr>
     <td>Zahl:</td>
     <td>
    <?php //FORM-ZAHL
        
    $fdatum=date("Y-m-d");
        echo 
    "<input type='Text' name=zahl value='$fdatum' size='40' maxlength='10'>"?></td>
    </tr>
    <tr>
     <td>Studiengang 2:</td>
     <td><select name=stda3 size='1'>
         <option value='k.A.'>Bitte w&auml;hlen!</option>
    <?php //FORM-STDA
        
    error_reporting(E_ALL);
        @
    mysql_connect("localhost""user""*******");
        
    mysql_select_db("stub");
        
    $result=mysql_query("SELECT * FROM studiengaenge;");
        while(
    $row mysql_fetch_assoc($result))
          {echo 
    "<option value='" .$row['sg_stabk']. "'>" .$row['sg_stabk']. " <=> " .$row['sg_studg']. "</option>";}?>
     </select></td>
    </tr>
    </table>
    <input type=submit value="Eingabe abschicken"><br><br>
    </form>

    <p></p>
    <p></p>

    Die Eingabe:
    <table border="1">
    <tr>
     <td>Zahl:</td>
     <td width="500">
         <?php //PHP-ZAHL
              
    @$zahl $_POST["zahl"];
              echo 
    "$zahl<br>";?></td>
    </tr>
    <tr>
     <td>Stda3:</td>
     <td width="500">
         <?php //PHP-STDA
              
    $stda3 $_POST["stda3"];
              echo 
    "$stda3<br>";?></td>
    </tr>
    </table>
    Der eigentliche Quelltext ist viel länger, aber durch langes Herumprobieren konnte ich den Fehler reproduzieren und das Beispiel schrumpfen lassen.

    Ich vermute, dass das Problem im Formularteil steckt, da dort ein PHP-Code ausgeführt wird (?). Aber sicher bin ich mit absolut nicht.

    Eines noch: Der besagte Fehler tritt nur beim ersten Laden der Seite auf. Sobald ich einmal Daten in die Felder eingetragen und sie "abgeschickt" habe, habe die Variablen (eigentlich die Variable, "stda" macht hier die Probleme) einen Wert und "meckern" nicht mehr rum (?).

    Vielen Dank schon einmal.

  • #2
    Re: Fehler: Undefined Index. Warum wird die Variable nicht gefunden?

    Original geschrieben von cayn82
    Eines noch: Der besagte Fehler tritt nur beim ersten Laden der Seite auf.
    Natürlich.
    Dabei wurde dein Formular noch nicht abgeschickt, also ist $_POST noch leer - und die Indices, auf die du darin zuzugreifen versuchst, existieren nicht, sind also "undefined".
    Sobald ich einmal Daten in die Felder eingetragen und sie "abgeschickt" habe, habe die Variablen (eigentlich die Variable, "stda" macht hier die Probleme) einen Wert und "meckern" nicht mehr rum (?).
    Formular wurde abgeschickt, Daten wurden übergeben, Indices sind vorhanden - kein Grund mehr zum "meckern".


    Überprüfe also mit isset() oder empty(), ob es die jeweiligen Werte gibt - bevor du versuchst, sie auszugeben.
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      name=zahl

      fehlen da nicht die ' ?

      Kommentar


      • #4
        Wie wäre es, wenn du mit isset prüfst, ob die Variable vorhanden ist?

        Alles, was in $_POST steht, kommt von PHP autromatisch rein, wenn du ein Formular mit method="post" abschickst.
        Beim ersten Laden der Seite hast du das Formular nicht abgeschickt, $_POST ist also leer.
        PHP macht dich mit der Meldung darauf aufmerksam, dass du auf ein Feld eines Arrays zugreifen willst, dass es nicht gibt; ist doch nett von PHP, nicht?
        Ich denke, also bin ich. - Einige sind trotzdem...

        Kommentar


        • #5
          sinnvoll wäre es, schon vor dem <form> die Variabeln zu setzen, als da sind. Dann gibt es sich einen robusterernAufbau des skript.

          if (isset($_POST['zahl'])) $zahl=$_POST['zahl']; else $zahl='';
          if (isset($_POST['stda3'])) $stda3=$_POST['stda3']; else $stda3='';
          ....
          <form>

          Dann kann ausserdem bei einer Wiederholung in den input-Feldern ein value angegeben werden, und in der select-Liste ein selected gesetzt sein.

          Kommentar


          • #6
            Habs jetzt mit der isset()-Fkt. ausprobiert. Es funzt.

            Danke danke.

            Kommentar

            Lädt...
            X