dropdown-auswahl trotz reload?

daywandler

Grünschnabel
hey ...

ich habe nun mir ein Dropdownmenü gebastelt, das funktioniert auch wunderbar ... nun habe ich aber folgendes Problem.

Das Dropdown-Menü wird auf jeder Seite angezeigt ... ... wenn ich aber die Seite wechsel, springt das Dropdown-Menü automatisch auf den ersten Wert in der Liste ...

Kann ich irgendwie erreichen, dass die Liste auf der Auswahl stehen bleibt, die man ausgewählt hat?

Hier mein Formular:

PHP:
<form method="post" action="<?php $_SERVER['PHP_SELF'] ?>">
    <input type="hidden" name="wert" value="wert1" />
    <select size="1" name="plani" onChange="this.form.submit();">
      <?php
while ($galaxy2 = mysql_fetch_array($result3))
{
echo "<option name=\"plani\" value=\"".$galaxy2[planet_id]."\"";
if($_POST['plani'] == $galaxy2[planet_id]) 
         echo 'selected';
echo ">".$galaxy2['planet_name']." [".$galaxy2['galaxy']."
:".$galaxy2['sonnensystem'].":".$galaxy2['position']."]</option>";
} ?>
    </select>
</form>

Die Auswahl wird dann in der Session gespeichert:

PHP:
if (isset($_POST[wert])) {
 $_SESSION["akt_plani"] = $_POST[plani];
 }

Die Session ist nötig, da ich diesen Wert auf anderen Seiten für eine Berechnung bzw. eine Datenbankabfrage brauche ...
 
Wie wäre es, wenn du in die If-Anweisung noch zusätzlich die Planet_id mit dem Session Eintrag vergleichen lässt?

Also so:

PHP:
<form method="post" action="<?php $_SERVER['PHP_SELF'] ?>">
    <input type="hidden" name="wert" value="wert1" />
    <select size="1" name="plani" onChange="this.form.submit();">
      <?php
while ($galaxy2 = mysql_fetch_array($result3))
{
echo "<option name=\"plani\" value=\"".$galaxy2[planet_id]."\"";
if($_POST['plani'] == $galaxy2[planet_id] || $_SESSION["akt_plani"] == $galaxy2[planet_id]) 
         echo 'selected';
echo ">".$galaxy2['planet_name']." [".$galaxy2['galaxy']."
:".$galaxy2['sonnensystem'].":".$galaxy2['position']."]</option>";
} ?>
    </select>
</form>
 
wenn ich dann einen wert auswähle funktioniert es, wenn ich dann einen anderen wert auswähle, schreibt er bei allen werten das selected hin und springt automatisch zum letzten ...
 
Probier das mal:

PHP:
if($_POST['plani'] == $galaxy2['planet_id'] || $_SESSION["akt_plani"] == $galaxy2['planet_id'])

Dürfte zwar eigentlich (wenn ich mich jetzt nicht irre) kein unterschied machen, aber probieren kann man es ja
 
macht leider keinen unterschied ...

wenn ich nur

PHP:
if($_POST['plani'] == $galaxy2['planet_id']) {

hinschreibe, funktioniert es soweit ... aber auch nur bis ich dann die seite wechsel ... da er nirgendwo mehr ein selected reinschreibt

und mit

PHP:
if($_POST['plani'] == $galaxy2['planet_id'] || $_SESSION["akt_plani"] == $galaxy2['planet_id'])

schreibt er bei allen werten ein selected rein ...

EDIT:

jetzt funktioniert es ...

ich hab die if-abfrage:

PHP:
 if (isset($_POST[wert])) { 
 $_SESSION["akt_plani"] = $_POST[plani]; 
 }

über das formular gestellt, was vorher drunter stand ... und jetzt funktioniert es ... warum auch immer
 
Zuletzt bearbeitet:
Dann ist es klar, wieso es nicht ging.

Ein PHP-Script wird Zeile für Zeile interpretiert und wenn Erst danach der Planet in die Session geschrieben wird kommt er durcheinander.

Das einzige was du sonst noch hättest probieren können ist eine Abfrage ob der Planet in der Session geschrieben ist und ob die id ungleich Null bzw ungleich ein Leerer Wert ist.
 
ich bin davon ausgegangen, das erst das formular ausgeführt wird und dann das ergebnis davon in der session gespeichert wird ...

aber es freut mich das es nun funtkioniert und ich kann mich weiter mit dem css rumärgern xD
 
Zurück