Hans: Probleme bei einem dynamischen select-Menü

Hallo !

Auf der Seite www.hartwarehunter.de
gibt es ein dynamisches select Menü.
Ich bräuchte sowas auch. Allerdings krieg ichs nicht hin. :-(
Das Problem bei mir ist, daß nachdem man einen Punkt aus dem Menü
ausgewählt hat, und die Seite neu geladen wurde, das Menü
wieder auf den "option selected" Wert ("Bitte auswählen") zurückspringt. Was es aber nicht soll.
Ich nehme mal an, daß da noch irgendwo ein javascript fehlt..

Hier mal mein Code:

<select name="selection0"  onChange="location.href='index.php?selection='+this[this.selectedIndex].value">
<option value="" selected="selected">Bitte auswählen</option>      <?php include("functions.php"); show('art', 'tabelle'); ?>
(Diese Funktion holt die Menüpunkte aus einer Datenbank)
</select>

Und die Funktion:

function show($option, $tab) {
 include("config.php");
 $link = mysql_connect($hostname, $benutzer, $passwort);
  if (!$link) {
    die("blabla");
  }else{
    mysql_select_db($db) or die ("blabla".mysql_error() );
             }
 $res = mysql_db_query($db, "select distinct $option from $tab");
 while($row = mysql_fetch_array($res)) {
   $a = $row[$option];
   print "<option value="$a">$a</option>";
     }
 mysql_close($link);
}

Auf der hartwarehunter Seite haben die das glaube ich, mit einem doppelten option selected gelöst. Aber irgendwie blicke ich da nicht durch..

Wäre schön, wenn mir jemand helfen könnte !
Vielen Dank schon mal !

  1. Das Problem bei mir ist, daß nachdem man einen Punkt aus dem Menü
    ausgewählt hat, und die Seite neu geladen wurde, das Menü
    wieder auf den "option selected" Wert ("Bitte auswählen") zurückspringt. Was es aber nicht soll.
    Ich nehme mal an, daß da noch irgendwo ein javascript fehlt..

    Nein, das geht mit HMTL.

    Du kennst selfhtml?
    http://selfhtml.teamone.de/html/formulare/auswahl.htm#listen_vorselektiert

    Struppi.

    1. Hmm.. Da hast du mich falsch verstanden. Der ausgewählte Menüpunkt
      soll ja nach dem neuladen der Seite ausgewählt bleiben, und nicht
      wieder auf den ursprünglich festgelegten, vorselektierten Wert zurückspringen. D.h. der gewählte Menüpunkt muß als neuer selektierter Wert festgelegt werden. Eben so wie auf hartwarehunter.de

      1. Hmm.. Da hast du mich falsch verstanden. Der ausgewählte Menüpunkt
        soll ja nach dem neuladen der Seite ausgewählt bleiben, und nicht
        wieder auf den ursprünglich festgelegten, vorselektierten Wert zurückspringen. D.h. der gewählte Menüpunkt muß als neuer selektierter Wert festgelegt werden. Eben so wie auf hartwarehunter.de

        ja, und das machst du in dem dein Skript das option so ausgibt:
        <option selected>Tom Waits</option>
                ^^^^^^^^

        Wo ist das Problem?

        Struppi.

        1. ja, und das machst du in dem dein Skript das option so ausgibt:
          <option selected>Tom Waits</option>
                  ^^^^^^^^

          Wo ist das Problem?

          Struppi.

          Du meinst das wahrscheinlich so:

          while($row = mysql_fetch_array($res)) {
             $a = $row[$option];
             print "<option selected value="$a">$a</option>";
                            ^^^^^^^^
             }

          Aber das geht so leider nicht (hab ich schon probiert), da es ja nicht nur ein Wert ist
          den ich aus der Datenbank hole, sondern mehrere. Die Ausgabe würde dann so aussehen:

          <option selected value="bla">blabla</option>
          <option selected value="bla2">blabla2</option>
          <option selected value="bla3">blabla3</option>

          Es wären dann also alle "selected". Oder hab ich das falsch verstanden ?

          1. ja, und das machst du in dem dein Skript das option so ausgibt:
            <option selected>Tom Waits</option>
                    ^^^^^^^^

            Wo ist das Problem?

            Struppi.

            Du meinst das wahrscheinlich so:

            while($row = mysql_fetch_array($res)) {
               $a = $row[$option];
               print "<option selected value="$a">$a</option>";
                              ^^^^^^^^
               }

            Aber das geht so leider nicht (hab ich schon probiert), da es ja nicht nur ein Wert ist
            den ich aus der Datenbank hole, sondern mehrere. Die Ausgabe würde dann so aussehen:

            <option selected value="bla">blabla</option>
            <option selected value="bla2">blabla2</option>
            <option selected value="bla3">blabla3</option>

            Es wären dann also alle "selected". Oder hab ich das falsch verstanden ?

            Offensichtlich. Dei skript (PHP?) kann doch überprüfen, welches option gewählt wurde und genau dieses auf seleted setzten.

            in etwa so:

            $choose = param('selection0'); // das ist Perl. musst du anpassen.

            while($row = mysql_fetch_array($res)) {
            $a = $row[$option];
            print "<option".($choese eq $a ? 'selected' : '')." value="$a">$a</option>";

            Struppi.