bei html-formular nach absenden der daten eingaben weiterhin anzeigen



  • Hallo!
    Ich habe folgendes Problem:
    Ich habe eine html-Seite (mit php) mit einem Formular, womit der Benutzer Einträge aus einer Datenbank nach verschiedenen Kriterien (Name, Datum, Stichwort,...) suchen kann. Z.B. bei der Suche nach einem Namen wird dies über ein Drop-Down-Menü realisiert. Wenn jetzt der Submit-Button gedrückt wird,werden die Suchergebnisse zwar fehlerfrei angezeigt, aber im Formular ist nicht mehr zu sehen welche Person ausgewählt wurde, da ja die Seite neu geladen wird und dann das Formular wieder in seinem Anfangszustand ist. Bei Eingaben in Textfelder konnte ich das Problem lösen, aber bei den Drop-Down-Menüs krieg ich's einfach nicht hin. Habe es jetzt mit diesem Ansatz versucht, aber das funktioniert nicht.

    <?php
    echo "<option value=\"alle\" >alle</option>";
    while($menue1 = mysql_fetch_array($result1))
    {
            $i = $i +1;
            $per = "\"".$menue1['Name']."\"";
            if($HTTP_POST_VARS[person]==$per){
            echo "<option value=$per selected>".$menue1['Name']."</option>";}
            else{
            echo "<option value=$per>".$menue1['Name']."</option>";}
    }
    echo "</select>";
    ?>
    

    Vielen Dank schon mal & schöne Grüße!



  • Hi,

    1. Attribute in Arrays, die aus Zeichen bestehen, müssen auch als solche definiert sein: Anführungszeichen.

    2. Siehe http://de2.php.net/variables.predefined: $_POST verwenden statt $HTTP_POST_VARS

    3. Quelltext so kurz wie möglich halten

    4. Wenn es dir möglich ist globale Variablen zu verwenden, also statt $_POST["person"] auf $person zuzugreifen, solltest du dies nutzen.

    Das war's, hier das Ergebnis:

    <?php
    echo "<option value=\"alle\" >alle</option>";
    while($menue1 = mysql_fetch_array($result1))
    {
            $i = $i +1;
            $per = "\"".$menue1['Name']."\"";
            echo "<option value=\"".$per."\"";
            if ($person==$per) echo " selected";
            echo ">".$menue1['Name']."</option>";
    }
    echo "</select>";
    ?>
    


  • @ 4.

    Wieso sollte man das?

    Dann zieht er innem halben jahr auf nen anderen Server, der Register_Globals = off hat und schon darf er alles anpassen...

    Ich denke man sollte schon immer bei $_POST bleiben.

    Steht quasi auch in deinem Link.



  • Dann müsste das Ganze quasi so aussehen:

    <?php
    echo "<option value=\"alle\" >alle</option>";
    while($GLOBALS["menue1"] = mysql_fetch_array($GLOBALS["result1"]))
    {
            $i = $i +1;
            $GLOBALS["per"] = "\"".$GLOBALS["menue1"]["Name"]."\"";
            echo "<option value=\"".$GLOBALS["per"]."\"";
            if ($_POST["person"]==$GLOBALS["per"]) echo " selected";
            echo ">".$GLOBALS["menue1"]["Name"]."</option>";
    }
    echo "</select>";
    ?>
    


  • $GLOBALS brauchst du eigentlich nicht 🙄 - zumindest nicht, wenn du den Code nicht in einer Funktion stehen hast 😉



  • Danke für eure Hilfe, hab's jetzt hingekriegt!


Anmelden zum Antworten