Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Fehlermeldung bei get-/post-Atribut

Einklappen

Neue Werbung 2019

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

  • [Erledigt] Fehlermeldung bei get-/post-Atribut

    Hallo,

    ich wollte mich mit PHP auseinandersetzen. Daher habe ich mir die Schulungs-DVD PHP 5.3 und MySQL 5.1 von GalileoComputing zugelegt.
    Für den nötigen Lerneffekt wäre auch ab und an ein kleiner Erfolg von Nöten. Nur leider hapert es gerade an einer Stelle...

    Um genauer zu sein mit dem Abruf von Formulardaten mit dem GET bzw. POST Attribut. Selbst mit dem Listing auf der DVD (welches in einer php-Datei vorlag) gibt mir mein Browser eine Fehlermeldung aus. Nur verstehe ich nicht warum, vielleicht eine falsche Konfiguration von meinem xampp?

    Aber der Reihe nach hier erst mal das Listing des fraglichen Skriptes:
    PHP-Code:
    <html>
        <head>
            <title>Formular</title>
        </head>    
    <body>
        <?php
            
    echo $_GET['vorname'] . ' ' $_GET['nachname'];
        
    ?>

        <form method="get" action="<?php echo $_SERVER['SCRIPT_NAME'?>">
        Vorname:<br/>
        <input type="text" name="vorname"/><br/>
        Nachname:<br/>
        <input type="text" name="nachname"/><br/>
        <input type="submit" value="Suchen" /> 
        </form>
        

    </body>
    </html>
    Soweit so einfach, dachte ich, doch gibt mir Chrome und Firefox beim ersten Aufruf der Seite folgende Fehlermeldungen aus.

    Notice: Undefined index: vorname in C:\xampp\htdocs\Kapitel03\lektion03b.php on line 7
    Notice: Undefined index: nachname in C:\xampp\htdocs\Kapitel03\lektion03b.php on line 7
    (die fragliche Reihe ist die, wo im listing der "echo" Befehl ausgeführt wird.

    Wenn ich Daten in die Textfelder eingegeben haben und auf "Suchen" klicke verschwindet die Fehlermeldung, die eingegeben Daten erscheinen wie erwartet in der Adresszeile des Browsers. In dem Video war das natürlich nicht der fall, dort wurde die Seite aufgerufen ohne das die o.g. Meldungen auftauchten.

    Ich Nutze:
    - Win7 Ultimate x64
    - XAMPP 1.7.4
    - PHP Version 5.3.5
    - Eclipse PDT 2.2.0

    Ich verstehe nur nicht warum dieser Fehler auftritt.
    Zwar ist mir klar das beim ersten Aufruf der Seite noch keine Informationen für Vor-/Nachname hinterlegt sind. Aber wenn echo den Inhalt ausgibt müsste die Ausgabe doch leer sein. Also keine Fehlermeldung bzw. andere Inhalte.

    Vielleicht kann mir jemand einen Tipp geben war ich übersehe.
    Ich wäre jedenfalls sehr dankbar.

    MfG
    HirteDerMeere

  • #2
    Es ist kein Fehler, es ist ein Notice.
    PHP zeigt dir an, dass du auf nicht existente Variablen zugreifen willst. Im Prinzip ist das nur eine "Info". Mich wundert es, dass das error_reporting standartmäßig so hoch ist.

    Prüf bevor du auf die Variablen zugreifst mit isset() ob sie gesetzt sind.

    Kommentar


    • #3
      $_GET['vorname'] und $_GET['nachname'] werden erst initialisiert wenn Werte da sind. Beim ersten Aufruf ist da aber noch nix, erst nachdem das Formular abgesendet wurde.
      Wie tkausl schon sagte, mußt Du mit isset prüfen, ob die Variable initialisiert ist, bevor Du auf sie zugreifst.

      If isset($_GET['vorname'])
      {
      echo $_GET['vorname']
      }

      Den Unterschied von GET und POST solltest Du Dir unbedingt klarmachen.

      Kommentar


      • #4
        Kurz gesagt:
        GET -> URL Parameter
        POST -> versteckte Parameter die im Hintergrund versendet werden

        Installiere mal z. B. live http header im Firefox, dann siehst du was Dein Browser macht

        mit phpinfo(); siehst du alle Umgebungsvariabeln beispielsweise wenn du im script an das du etwas sendest phpinfo() aufrufst

        Kommentar


        • #5
          Das waren schnelle Antworten.
          Vielen Dank an alle!!!

          Der Tipp mit isset() hat mich ein ganzes Stück weiter gebracht. Ebenso die Unterschiede zwischen dem POST und GET Attribut. Den live http header schau ich mir für Iron (mein Standardbrowser, Chrom alternative) und den Firefox an.

          Also nochmals vielen Dank.

          MfG
          HirteDerMeere

          Kommentar


          • #6
            Ach ja am besten spielst du noch mit method="GET" herum und schaust was mit der Url durch das Formular passiert

            Kommentar

            Lädt...
            X