Ankündigung

Einklappen
Keine Ankündigung bisher.

Notice: Undefined index

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

  • Notice: Undefined index

    Hallo

    ich bekomme für diese Codezeile :
    PHP-Code:
    $korr1dat $_POST['korr1dat']; 
    Die Fehlermeldung :
    Notice: Undefined index: korr1dat in .... on line 38
    Laut php-fehlermeldungen liegt der Fehler hier :
    -Ursache: da der Arrayschlüssel eine Variable ist, darf dieser Schlüssel nicht in Anführungszeichen stehen, da er dadurch von PHP nicht ausgewertet werden kann.
    Wenn ich aber die Anführungszeichen weg mache bekomme ich natürlich auch eine Fehlermeldung like :
    Notice: Use of undefined constant korr1dat - assumed 'korr1dat'
    Wie löse ich das Problem ?


  • #2
    $_POST['korr1dat']; gibt's halt nicht.

    Kommentar


    • #3
      Offenbar existiert der Schlüssel 'korr1dat' nicht im Array weshalb die Warnung ausgegeben wird.

      Ich vermute, dass du ein Formular auswerten willst und nicht abfragst, ob dieses überhaupt abgesendet wurde.

      PHP-Code:
      if ( isset($_POST['Senden']) {
        
      $korr1dat $_POST['korr1dat'];

      (wenn dein Sendebutton den value "Senden" hat).
      :
      if ($var != 0) {
        
      $var 0;

      Kommentar


      • #4
        Und was spricht dagegen, direkt den richtigen Index anzusprechen?

        PHP-Code:
        $korr1dat = (isset($_POST['korr1dat'])) ? $_POST['korr1dat'] : ""

        Kommentar


        • #5
          das mit dem Arrayschlüssel als Variable betrifft doch diesen Fall

          $key='korr1dat';

          $korr1dat=$_POST[$key]; <-- hier ist es wichtig, das $key nicht in Quotes kommt.


          für das andere Problem ... frag halt einfach mit isset ab
          PHP-Code:
          if (isset($_POST['korr1dat']))
             
          $korr1dat=$_POST['korr1dat'];
          else
             
          $korr1dat=''
          - allerdings musst du dann im Zweifelsfall immer nachgucken, ob in $korr1dat nur ein Leerstring enthalten ist, oder aber richtiger Inhalt
          "Irren ist männlich", sprach der Igel und stieg von der Drahtbürste
          Dieses Forum ist gehackt und versucht per XSS dein Passwort zu stehlen - und deine Privaten Nachrichten

          Kommentar


          • #6
            Zitat von bandit600 Beitrag anzeigen
            Und was spricht dagegen, direkt den richtigen Index anzusprechen?

            PHP-Code:
            $korr1dat = (isset($_POST['korr1dat'])) ? $_POST['korr1dat'] : ""
            Wenn der Kollege ein Formular mit 50 Feldern hat, dann müsste er überflüssigerweise 50 mal diese eh schon unübersichtliche Ternär-Syntax hinschreiben.

            Ferner würde er überflüssigerweise Eingabeprüfungen für nicht gemachte Eingaben machen.

            Nein, der richtige Weg ist der, zunächst zu prüfen, ob überhaupt was in $_POST stehen kann weil ein Formular geschickt wurde.

            Mehr weiß man allerdings erst, wenn man mehr Code sieht. Ich hatte ja oben auch nur eine Vermutung geäußert, tippe aber darauf, dass ich zu 99% richtig liege.
            :
            if ($var != 0) {
              
            $var 0;

            Kommentar


            • #7
              Es kann aber sein das "Senden" mitgeschickt wird im POST aber ein anderes Feld dann nicht, von daher würde dann wieder der selbe Fehler auftreten. Eigentlich sollte man jeden Wert prüfen bevor man ihn anspricht.

              Kommentar


              • #8
                Genau. Checkboxen oder Radiobuttons muss man gesondert betrachten.
                :
                if ($var != 0) {
                  
                $var 0;

                Kommentar


                • #9
                  Das sind viele Antworten - ich werde mal versuchen auf alle einzugehen !

                  Es wird geprüft, ob was gesendet wird. Die Variablenbelegung mit POST Werten beginnt mit
                  PHP-Code:
                  if ($_POST['POST']) { 
                  Ich habe nun auch erkannt, wo der Fehler liegt.
                  Und zwar handelt es sich um insgesamt 10 Radiobutton-Kombinationen wobei nicht jede davon belegt ist. Ich müsste also wohl in der Tat vorher prüfen welche der Buttons wirklich genutzt wurde. Gibt es da eine kurze Variante - es sind immerhin fast 100 Werte - oder muss ich das für jede Variable einzeln machen ?

                  Kommentar


                  • #10
                    Wenn es mehrere Formularfelder geben würde, bekäme man mehrere Notice-Meldungen. Also kann man in diesem Fall von einem Formularfeld ausgehen und alles andere ist reine Spekulation. Und somit kann man auch die keineswegs unübersichtliche Ternär-Syntax benutzen.

                    <edit>
                    Lesen des Threads und meine Antwort sind vor der Antwort von themk# entstanden (leider war ich wohl etwaszu langsam), also bitte so beachten, als wenn dies hier Posting #9 wäre


                    Nach neuer Sachlage sieht das jetzt etwas anders aus
                    </edit>
                    Zuletzt geändert von bandit600; 12.11.2010, 12:42.

                    Kommentar


                    • #11
                      Die anderen - identischen - Fehlermeldungen habe ich nur nicht gepostet

                      Da es sich immer wieder um "identischen" Code handelt der identische Fehlermeldungen ausgibt ging ich davon aus, dass der Fehler auch überall der gleiche ist womit ich ja auch Recht hatte.

                      Es sind also ca. 100 dieser Meldungen weswegen ich über eine "Luxus-Lösung" dankbar wäre =)

                      Kommentar


                      • #12
                        Du musst leider jede Gruppe Checkboxen/Radiobutton prüfen, anders geht's nicht.

                        Kommentar


                        • #13
                          für diesen Zweck - wenn die Radiobuttons / Checkboxen sowieso thematisch zusammengehören,. dann gib ihnen ein Array als namen

                          <input type="checkbox" name="check[]" ....

                          dann kannst du sie auch testen ... noch besser, wenn du ihnen nicht nur das array als namen gibst, sondern gleich auch den betreffenden Schlüssel mit angibst

                          <input type="checkbox" name="check[1]" - dann kannst du das einfach in einer Schleife abarbeiten

                          PHP-Code:
                          for($i=1;$i<=Anzahl Checkboxen;$i++)
                            if (isset(
                          $_POST['check['.$i.']']))
                               ... 
                          // ok weiter gehts 
                          "Irren ist männlich", sprach der Igel und stieg von der Drahtbürste
                          Dieses Forum ist gehackt und versucht per XSS dein Passwort zu stehlen - und deine Privaten Nachrichten

                          Kommentar


                          • #14
                            irrtum
                            :
                            if ($var != 0) {
                              
                            $var 0;

                            Kommentar


                            • #15
                              <input type="radio" name="test" value="ok">
                              <input type="radio" name="test" value="fehler">
                              So sehen die Felder zB aus. Vorbelegt ist kein's der beiden da es sein kann, dass keins zutrifft. Kann ich für diesen Fall eine Standartbelegung "NULL" einbauen ?

                              Kommentar

                              Lädt...
                              X