Undefinierter Index obwohl eigentlich vorhanden

  • Hallo zusammen,


    ich sitze gerade an http://www.youtube.com/watch?v=ejjuMdqncHo und versuche diesen Terminfinder nach zu bauen.


    Und soweit bin ich auch schon gekommen:
    Mein Formular:

    PHP
    1. <form action="terminauswertung.php" method="post">
    2. <p>Name:<br />
    3. <input type="text" size="20" name="teilnehmer" /></p>
    4. <p>Terminvorschl&auml;ge:<br />
    5. <input type="checkbox" name="termin1" value="X" /> &nbsp; Terminoption #1<br />
    6. <input type="checkbox" name="termin2" value="X" /> &nbsp; Terminoption #2<br />
    7. <input type="checkbox" name="termin3" value="X" /> &nbsp; Terminoption #3</p>
    8. <p><input type="submit" value="Und ab daf&uuml;r" name="absenden"/></p>
    9. </form>


    und meine Auswertung:


    Mein Problem ist jetzt folgendes:

    Zitat

    Notice: Undefined index: termin2 in Z:\PROGRAMME\xampp\htdocs\arbeitsbereich\terminauswertung.php on line 4


    Ludwig kann an folgenden Tagen:
    Termin #1: X
    Termin #2: -
    Termin #3: X

    Heißt: Er meckert zwar dass ich die Variable "$termin2" nicht gesetzt habe, führt aber die Anweisung richtig aus. Kann mir einer nen tipp geben, wieso ich diese Notice erhalte obwohl der angemeckerte index sehr wohl definiert ist?


    Danke!
    Silver

  • Nur zum besseren Verständnis:


    PHP meckert nicht weil $termin2 nicht definiert ist, sondern weil $_POST['termin2'] leer ist, was der Fall ist wenn in deinem Formular der entsprechende Punkt einfach nicht angeklickt wurde.


    Dann prüfst du ob:

    PHP
    1. $termin2 <> "X"


    Und nichts ist eben nicht X, von daher wird $termin2 einfach mit - besetzt.

  • "

    Zitat

    Heißt: Er meckert zwar dass ich die Variable "$termin2" nicht gesetzt habe, führt aber die Anweisung richtig aus. Kann mir einer nen tipp geben, wieso ich diese Notice erhalte obwohl der angemeckerte index sehr wohl definiert ist?

    "


    falsch -> es geht um den index und nicht um die variable - unterschied


    du sagst deinem script es soll $_POST['termin2'] der var $termin2 zuweisen -> wenn $_POST['termin2'] nun leer ist ... dann fragst du weiter unten ob $termin2 ungleich 'x' ist ... und da haben wir es
    du auch? ;)



    gruß peter

  • hallo zusammen,


    was habe ich denn falsch gemacht?
    ich habe das Script nach der Vorlage aus dem Video gebastelt und dort gibbet auch keine Fehlermeldung...


    LG
    Silver

  • Du kannst Fehlermeldungen unterdrücken (wie es im Video wahrscheinlich der Fall ist):


    PHP
    1. error_reporting(0);


    Für mehr Parameter schau mal hier.


    Dein Code ist an sich komplett richtig, keine Sorge.

  • Danke Basiii ;)


    mir kommt da gerade noch eine Alternative in den Kopf:
    wenn ich an statt

    PHP
    1. if ( $termin2 <> "X")
    2. {
    3. $termin2 = "-";
    4. }


    einfach die Abfrage umstelle mittels


    PHP
    1. if ($termin2 == "")
    2. {
    3. $termin2 = "-";
    4. }


    sollte diese Notice doch verschwinden, oder? Oder verstehe ich das gerade falsch? Ich prüfe doch damit ab, ob die Variable leer ist und sollte so zumindest schon mal eine Antwort bekommen, oder?

    Dieser Beitrag wurde bereits 2 Mal editiert, zuletzt von SilverScripting ()

  • nein - nur wenn der browser den index sendet ist er da.
    du musst fragen ob die var gesetzt ist
    zB:

    PHP
    1. function gesetzt($index){
    2. return (isset($_POST[$index]))?$_POST[$index]:false;
    3. }


    und dann:

    PHP
    1. $termin2 = gesetzt('termin2');