MICHI: Hilfe für absoluten PHP Anfänger erbeten : Variablenübergabe

Hi! =)

Ich bin ABSOLUTER PHP-Anfänger und kamm nicht weiter. Ich hab eine HTM-Seite mit 2 Links. Der erste Link hat die Bezeichnung "Ich bin männlich", der zweite "ich bin weiblich". Je nachdem, was man klickt, soll die PHP Seite "Du bist männlich" oder "Du bistz weiblich" anzeigen. Bei mir kommt aber in BEIDEN Fällen nur das "Du bist männlich" WIESO????

Das ist der body auf der htm-Seite:

<body>
<a href="erg.php?w=0"> Ich bin männlich</a><br/>
<a href="erg.php?w=1"> Ich bin weibich</a><br/>
</body>

Und das der Code der php-Seite:

<?php
$e=$HTTP_POST_VARS["w"];
if ($e==0) {$b="männlich";}
else {$b="weiblich";};
echo "Du bist ";
echo $b;
?>

Kann mir bitte wer sagen, wo ich den Fehler gemacht habe?

Danke im Voraus!

MICHI =)

  1. hi,

    <a href="erg.php?w=0"> Ich bin männlich</a><br/>
    <a href="erg.php?w=1"> Ich bin weibich</a><br/>

    das sind parameter-übergaben per URL, also mit der GET-methode.

    $e=$HTTP_POST_VARS["w"];

    und hier willst du den wert einer mit POST übertragenen variablen auslesen, der aber nicht existiert.

    gruss,
    wahsaga

    1. hi,

      <a href="erg.php?w=0"> Ich bin männlich</a><br/>
      <a href="erg.php?w=1"> Ich bin weibich</a><br/>

      das sind parameter-übergaben per URL, also mit der GET-methode.

      $e=$HTTP_POST_VARS["w"];

      und hier willst du den wert einer mit POST übertragenen variablen auslesen, der aber nicht existiert.

      gruss,
      wahsaga

      Und das heißt was? Wie müßt ichs richtig schreiben? *hilflosschau*

      1. Hallo,

        Und das heißt was? Wie müßt ichs richtig schreiben? *hilflosschau*

        Lies dir http://at2.php.net/manual/en/language.variables.external.php durch.

        gruß,
        Severin

        --
        Realität ist das, was nicht verschwindet, wenn man aufhört, daran zu glauben.
        --Philip K. Dick
      2. Hallo,

        <a href="erg.php?w=0"> Ich bin männlich</a><br/>
        <a href="erg.php?w=1"> Ich bin weibich</a><br/>

        das sind parameter-übergaben per URL, also mit der GET-methode.

        $e=$HTTP_POST_VARS["w"];

        und hier willst du den wert einer mit POST übertragenen variablen auslesen, der aber nicht existiert.

        Und das heißt was? Wie müßt ichs richtig schreiben? *hilflosschau*

        $e=$_GET["w"];  oder füher auch $e=$HTTP_GET_VARS["w"];

        Es gibt verschiedene Arrays, in denen dem Script Parameter übergeben werden. Die wichtigsten sind:

        $_GET[]
        $_POST[]
        $_COOKIE[]
        $_SERVER[]
        $_FILE[]

        Und außerdem sieht man aus deinem wunderschönen Beispiel noch:

        Bau Deine Abfragen sicher. Wenn die Variable NICHT vorhanden ist, muss trotzdem ein brauchbares Ergebnis dabei herauskommen. Eine nicht vorhande Variable symbolisiert aber auch den Wert 0, wenn man nicht ganz GENAU nachfragt...

        Grüße

        Tom

  2. Ich hab jetzt folgenden php-Code und es funktioniert:

    <?php
    $_GET['w'];
    if ($w==0) {$b="männlich";}
    else {$b="weiblich";};
    echo "Du bist ";
    echo $b;
    ?>

    Ist das genau so, wie man es machen soll?

    Wofür ist dann das " import_request_variables("gP", "rvar_"); " oder das " $HTTP_POST_VARS["Inhalt"]; " gut? Ich kapier diese POST - GET Geschichte nicht so ganz und auf allen PHP Seiten wird das derartig kompliziert erklärt, daß so ein blutiger Anfänger wie ich keine Ahnung hat, was gemeint ist. =(

    1. Hallo,

      Nein, nur fast.

      Denn wenn gar kein Paramter übertragen wird, ist derjenige immer weiblich...

      Besser ist, eine gestaffelte Abfrage zu machen:

      <?php
      $_GET['g'];

      if($g=="m")
      {
        $b="männlich";
      }
      else if ($g=="w)
      {
        $b="weiblich";
      }
      else
      {
        $b="unbekannt";  ##kein oder falscher Wert übergeben
      }

      echo "Dein Geschlecht ist $b";
      ?>

      Scripte sollte sicher programmiert sein und nicht "ungfähr"...

      Grüße

      Tom

  3. Hallo,

    Der eigentliche Fehler, $_POST statt $_GET,
    wurde ja schon genannt.

    Zu den Unterschieden GET/POST siehe:
    http://www.dclp-faq.de/q/q-formular-methode.html

    Wenn man ein Formular mit <form ... method="get"> abschickt,
    oder wenn man die Parameter an die URL anhaengt,
    dann stehen die Werte in $_GET.

    Wenn man ein Formular mit <form ... method="post"> abschickt,
    stehen die Werte in $_POST.

    In allen Faellen stehen die Werte auch in $_REQUEST.

    Lies auch:
    dclp-FAQ: Welche Variablenarten gibt es in PHP
    und wie greife ich auf sie zu?
    http://www.dclp-faq.de/q/q-php-variablen.html

    PHP-Manual: Predefined Variables (englisch, die
    deutsche Uebersetzung ist unvollstaendig/veraltet)
    http://www.php.net/manual/en/language.variables.predefined.php und
    http://www.php.net/manual/en/reserved.variables.php

    ---

    Noch ein Fehler:

    else {$b="weiblich";};

    ^^^
    Dieses Semikolon ist ueberfluessig und falsch.

    Gruesse,

    Thomas