carsten schlichting: Übungsaufgabe funktioniert nicht

Hi

versuch mich gerade in PHP einzuarbeiten und habe eine Übungsaufgabe gemacht. Habe einmal ein HTML- Formular nach Vorlage angefertigtund ein PHP script auch nach Vorlage. beide liegen im selben verzeichnis auf meinem Xampp testserver.

ich habe jetzt den Eindruck, das die Daten nicht übergeben werden?
weil mit dem test echo isset(§abgeschickt) müßte ja eigentlich eine 1 erscheinen. tuts aber nicht.

Auf jedenfall wird immer nur die else schleife durchlaufen.
Wenn ich im Wndowsexplorer direkt das Formular öffne und auf abschicken klicke - öffnet der explorer das script ganz komisch: die daten scheinen übertragen worden zu sein, aber er öffnet das script teilweise als programmsprache???. Hab einfach mal die scripte beigefügt. Kann mir jemand helfen?
das html formular:

formular.html

<html>
<head>
<title>Dateneingabe</title>
</head>
<body>
   <h2>Anmeldung</h2>
   <p>Bitte füllen Sie die nachfolgenden Eingabefelder aus</p>
     <pre>
 <form action="Form_fill.php" method="get">
 Vorname: <input type="Text" name"Vorname"><br>
 Nachnahme: <input type="Text" name="Nachname"><br>
 Geburtstag: <input type="Text" name="Geburtstag"><br>
   <input type="submit" value"Abschicken">
 <input type="hidden" name"abgeschickt" value="1"
      </form>
     </pre>

</body>
</HTML

das php script: Form_fill.php

<?php

if (isset($abgeschickt) )  {
 if ($abgeschickt)  {
  zeigWert() ;
  if ( (!$Vorname) or (!$Nachname) or (!$Geburtstag) )zeigFormular();
 }
   } else  {
 echo  '<p>Rufen Sie das
  <a href="formular.html">Formular</a> bitte noch einmal auf.</p>';
    }

function zeigWert() {

global $Vorname, $Nachname, $Geburtstag;

echo"<p>Folgende Daten wurden übermittelt:<br>";
         if ($Vorname)   echo "Vorname:          $Vorname<br>";
         if ($Nachname)  echo "Nachname:         $Nachname<br>";
         if ($Geburtstag)        echo "Geburtstag:       $Geburtstag<br>";
         echo"<hr>";

if ((!$Vorname) or (!$Nachname) or (!$Geburtstag))  {
                         echo '<font color="red">Nicht alle Daten wurden angegeben</font>';
                         echo"<hr>";
         }
}

function zeigFormular(){
         global $Vorname, $Nachname, $Geburtstag;
         global $PHP_SELF;
         echo '<pre><form action="'  .  $PHP_SELF .  '" method="GET">';
         if (!$Vorname)
            echo '<b>Vorname:</b>        <input type="Text"  name="Vorname"><br>';
         else echo 'Vorname:             <input type="Text"  name="Vorname" value="'  .  $Vorname  .  '"><br>';
         if (!$Nachname)
            echo '<b>Nachname:</b>       <input type="Text"  name="Nachname"><br>';
         else    echo 'Nachname:                 <input type="Text"  name="Nachname" value="'   .  $Nachname  .  '"><br>';
         if (!$Geburtstag)
            echo '<b>Geburtstag:</b>     <input type="Text"  name="Geburtstag"><br>';
         else    echo 'Geburtstag:               <input type="Text"  name="Geburtstag" value="'  .  $Geburtstag.  '"><br>';

echo  <<<ENDE

<p>
         <input type="Submit" value="Abschicken">
         <input type="hidden" name="abgeschickt"  value=1>

</form>
         </pre>
ENDE;
}

?>

  1. Moin!

    ich habe jetzt den Eindruck, das die Daten nicht übergeben werden?
    weil mit dem test echo isset(§abgeschickt) müßte ja eigentlich eine 1 erscheinen. tuts aber nicht.

    Schmeiss das Buch weg. Es ist zu alt.

    Die überneahme der Variablen aus den per POST, GET oder COOKIE gesendeten Werten geht seit langem so:

    $strDeinWert=$_GET['varname']
    $strDeinWert=$_POST['varname']
    $strDeinWert=$_COOKIE['varname']

    Dein Autor hat vergessen, dass in der PHP.ini register_globals auf off steht. Aus Sicherheitsgründen und schon ziemlich lang...

    MFFG (Mit freundlich- friedfertigem Grinsen)

    fastix®

    --
    Als Freiberufler bin ich immer auf der Suche nach Aufträgen: Schulungen, Development. Auch  für seriöse Agenturen.
    1. Danke erstmal.

      also strDeinWert ist ein zusätzlicher variablenname, den ich frei definieren kann und  mit dem dann meine Funktionen im PHP script arbeiten können.

      Und z.B.  $_GET['varname'] ist der gesendete wert aus dem Formular?

      stimmt das so?

      Grüße und Danke ne

      1. N'Obend

        Danke erstmal.

        also strDeinWert ist ein zusätzlicher variablenname, den ich frei definieren kann und  mit dem dann meine Funktionen im PHP script arbeiten können.

        Und z.B.  $_GET['varname'] ist der gesendete wert aus dem Formular?

        stimmt das so?

        Jup!

        In deinem Fall z.B.
        $abgeschickt = $_POST['abgeschickt'];

        Dann hast du in $abgeschickt den Wert 1 aus deinem hidden-Feld stehen.

        Tschö,
        dbenzhuser

        --
        Heute in der Reihe „unser Ranking soll schöner werden“:
        Gefälschte Musikinstrumente Marke Bessons
        1. N'Obend

          Und z.B.  $_GET['varname'] ist der gesendete wert aus dem Formular?

          stimmt das so?

          Jup!

          Bzw. jein! ...

          im $_GET[]-Array stehen die Daten, die per URL übergeben wurden (z.B. index.html?var=wert), oder wenn du im form-Tag method="get" angegeben hast.

          im $_POST[]-Array stehen Daten aus einem Formular mit method="post".

          im $_COOKIE[]-Array stehen Daten aus Cookies.

          Ob du in deinem Formular besser method="get" oder "post" benutzt ist z.B. hier nachzulesen: http://faq-php.de/q/q-formular-methode.html.
          Oder gleich den ganzen Abschnitt durchschmökern: http://faq-php.de/ch/ch-webvariablen.html

          Tschö,
          dbenzhuser

          --
          Heute in der Reihe „unser Ranking soll schöner werden“:
          Gefälschte Musikinstrumente Marke Bessons
          1. Hallo

            wollte fragen, ob mir jemand noch einmal helfen kann.

            warum werden bei mir die Daten nicht übertragen?? Habe versucht das oben anzuwenden, aber will nicht funktionieren.

            das Formular  Formular.html

            <html>
            <head>
            <title>Dateneingabe</title>
            </head>
            <body>
               <h2>Anmeldung</h2>
               <p>Bitte f&uuml;llen Sie die nachfolgenden Eingabefelder aus</p>
                 <pre>
             <form action="Formular_fill.php" method="POST">
             Vorname: <input type="Text" name"Vorname"><br>
             Nachnahme: <input type="Text" name="Nachname"><br>
             Geburtstag: <input type="Text" name="Geburtstag"><br>
               <input type="submit" value"Abschicken">
             <input type="hidden" name"abgeschickt" value="1"
                  </form>
                 </pre>

            </body>
            </HTML

            und das php script Formular_fill.php

            <?php

            $Vorname=$_POST['Vorname'];
            $Nachname=$_POST['Nachname'];
            $Geburtstag=$_POST['Geburtstag'];
            $abgeschickt=$_POST['abgeschickt'];

            echo " <p> Vorname: $Vorname  </p>  "  ;

            ?>

            Das Wort Vorname wird generiert, aber die variable nicht ausgegeben. Von daher denk ich, dass der wert nicht übergeben wurde.

            ???

            1. hi,

              Vorname: <input type="Text" name"Vorname"><br>

              ^ da fehlt was

              gruß,
              wahsaga

              --
              /voodoo.css:
              #GeorgeWBush { position:absolute; bottom:-6ft; }
        2. Moin!

          In deinem Fall z.B.
          $abgeschickt = $_POST['abgeschickt'];

          Ich verstehe einfach nicht, warum man immer diese sinnlosen Wertekopierereien veranstaltet?

          Es ist absolut erlaubt und IMO viel sinnvoller, die gesendeten Werte eben gerade NICHT in einfache Variablen zu kopieren, sondern jeweils an der passenden Stelle auf $_POST['abgeschickt'] (um beim Beispiel zu bleiben) zuzugreifen. Das ist, zugegeben, ein wenig mehr zu tippen. Andererseits muß man sich nicht endlos neue Variablennamen ausdenken, man kommt mit seinen eigenen Variablen, die man sonst noch verwendet, auch nicht in Konflikt, man weiß immer, woher der Inhalt der benutzen Variable jetzt kommt, in Funktionen und Klassen muß man nicht mit "global" agieren, um auf die Formularvariablen zuzugreifen, und man spart sich natürlich Speicherplatz, weil nichts mehr doppelt abgelegt werden muß.

          - Sven Rautenberg

          1. Moin!

            Moin!

            In deinem Fall z.B.
            $abgeschickt = $_POST['abgeschickt'];

            Ich verstehe einfach nicht, warum man immer diese sinnlosen Wertekopierereien veranstaltet?

            Als "Kopiererei" will ich das nicht verstanden wissen: Ich mache das um zu demonstrieren, dass der Inhalt der Variable "entgiftet" wurde.

            Also eher sowas: $intAbgeschickt = $_POST['abgeschickt'] * 1;

            MFFG (Mit freundlich- friedfertigem Grinsen)

            fastix®

            --
            Als Freiberufler bin ich immer auf der Suche nach Aufträgen: Schulungen, Development. Auch  für seriöse Agenturen.