Ankündigung

Einklappen
Keine Ankündigung bisher.

php Aufruf von Formular und Übergabe einer Variable (get)

Einklappen

Neue Werbung 2019

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

  • php Aufruf von Formular und Übergabe einer Variable (get)

    Hallo liebe PHPler,

    mir will es nicht gelingen die Variable $navi mittels php anzuzeigen. Lustigerweise wird die Variable in der URL angezeigt (bei Verwendung von "get"), jedoch nicht mittels echo-Befehl.

    Dieser Codeschnipsel soll später einmal ein Photoalbum werden und ich möchste dann die Photos anzeigen, indem ich mit u.g. Methode das SQL-Statement manipuliere (Limit x,y).

    Kann mir jmd. weiterhelfen, das wäre großartig.

    Euer

    Kevin (PHP-Anfaenger)

    Code:
    <html>
    
    <head>
    <script language="JavaScript">
    function WertSetzen(wert){
    document.sendform.navi.value = wert;
    document.sendform.method = "get";
    document.sendform.action = "test2.php";
    document.sendform.submit();
    }
    </script>
    
    </head>
    <body>
    
    <?php
    echo ($navi);
    
    if (isset($navi)){
    echo "
    ";
    echo "
    ";
    echo "
    navi: $navi";
    echo "
    ";
    echo "
    ";
    }
    else
    {
    echo "no value";
    }
    ?>
    
    <form name=sendform>
    <input type='hidden' name='navi' value=''>
    <input type='button' name='1' value="1" onClick="WertSetzen(this.name)">
    <input type='button' name='2' value="2" onClick="WertSetzen(this.name)">
    
    </form>
    </body>
    </html>


  • #2
    ich sehe keine Verwendung von $_GET['navi']
    mach dich über die Google- oder Forensuche über "register_globals" schlau.

    Kommentar


    • #3
      PHP-Code:
      if (isset($_GET['navi'])) echo $_GET['navi']; 
      Alternativ $_POST['navi'] benutzen.

      http://php.net/manual/en/security.globals.php

      Und, in der php.ini deines Entwicklungsservers mal error_reporting auf E_ALL
      setzen.

      Basti

      Kommentar


      • #4
        wunderbar, das hat geholfen

        .. kann es sein, dass sich hier bei PHP was geändert hat? Vor 5 Jahren hatte ich 'ne PHP-Seite programmiert, da hatte es gereicht, wenn man die Variable über echo($variable) ausgegeben hat.

        Vielen Dank für die flotte Hilfe!

        - Kevin

        Der Vollständigkeit halber hier die Lösung meines Problems:

        Code:
        <?php
        $navi = ($_GET['navi']);
        
        if (isset($navi)){
        echo "
        ";
        echo "
        ";
        echo "
        navi: $navi";
        echo "
        ";
        echo "
        ";
        }
        else
        {
        echo "no value";
        }
        ?>

        Kommentar


        • #5
          Zitat von BalthusD
          wunderbar, das hat geholfen

          .. kann es sein, dass sich hier bei PHP was geändert hat? Vor 5 Jahren [..]
          Quatsch, in 5 Jahren ändert sich doch nix...

          Geholfen haben meine Hinweise offenbar nichts, sonst hättest du die Frage jetzt hier nicht gestellt.

          Kommentar


          • #6
            ok ok, " Perhaps the most controversial change in PHP is when the default value for the PHP directive register_globals went from ON to OFF in PHP 4.2.0. Reliance on this directive was quite common and many people didn't even know it existed and assumed it's just how PHP works."

            Ist 'ne Einstellungssache .. das erklärt auch weshalb ich vor ein paar Jährchen hier keine Probs hatte, da lag der Schalter wohl anders.

            cya und happy new year

            Kevin

            Kommentar


            • #7
              Ist 'ne Einstellungssache
              Find ich eigentlich nicht, denn so wird klar woher eine Variable kommt und überschrieben werden können Variablen jetzt implizit nicht mehr


              cya und happy new year
              danke dir auch :P

              Kommentar


              • #8
                [Edit]War wohl etwas zu langsam...[/Edit]

                In der Dokumentationsseite hinter meinem Link steht die Antwort auch
                gleich im ersten Satz.

                Und, meine Empfehlung mit dem error_reporting steht immer noch. So
                sinnlose Code-Zeilen, wie

                PHP-Code:
                <?php
                $navi 
                = ($_GET['navi']);
                if (isset(
                $navi)){
                ?>
                würdest du dann nicht produzieren, sondern zumindest für die erste Zeile
                mein Beipiel von oben aufgreifen.

                Konkret: Ob $_GET['navi'] existiert, kannst du nicht aussagen, ohne die
                Existenz vorher sicherzustellen. Wie also $navi den Wert eines Feldes
                zuweisen, das womöglich garnicht existiert. PHP bügelt solche unschönen
                Konstrukte glatt, gibt dr aber einen Hinweis darauf, den du nicht
                unterdrücken solltest.

                Und, zu prüfen, ob $navi existiert, nachdem du es eine Zeile vorher
                gesetzt hast ... vor solchen Denkfehlern kann dich der Interpreter natürlch
                nicht bewahren ... leider.

                Basti

                Kommentar


                • #9
                  hehe, naja, bin ja auch noch ein bloody noob.

                  Ich habe die Vriable mit isset() geprüft, da ich nicht wusste, wie PHP reagiert, wenn ich 'ne Variable anfordere, die womöglich gar nicht existiert.

                  Vielen Dank an dieser Stelle nochmal an Euch alle - ich hoffe, dass ich in Zukunft anderen ebenso flott und kompetent helfen kann.

                  Kevin

                  Kommentar


                  • #10
                    Wenn du schon vor 5 Jahren programmiert hast, hätte ich erwartet dass du solche Denkfehler mittlerweile nicht mehr machst *duck&wech*

                    Kommentar


                    • #11
                      hehe, ich bin Hobbyprogrammierer - mir reicht meist quick & dirty, das erfüllt meine Zwecke zu 99%.

                      cya Kevin

                      *spamspam*

                      Kommentar

                      Lädt...
                      X