Wert sollte in Dropdown erhalten bleiben

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

  • Wert sollte in Dropdown erhalten bleiben

    Hallo
    Wie man sieht, oder auch nicht, bin ich ein neues Mitglied hier. Na ja, das Forum ist das Beste, das ich bis anhin gesehen habe.

    Nun gleich ein Problem. Ich kann zwar gut PHP programmieren, jedoch kein JavaScript. Habe folgenden Code hier aus dem Forum gezogen und ein bisschen umgeschrieben. Es handelt sich um ein abhängiges Dropdown.

    Das Problem ist, wenn ich von der Resultatseite wieder auf diese Suchseite zurück komme, werden die vorher ausgewählten Daten marnr (Marke) und modellnr (Modell) nicht mehr angezeigt.

    Hmmm, ich brauche keine Lösung, aber ein Ansatz wäre schon sehr hilfreich. Abgesehen davon hoffe ich, dass ich es einigermassen gut erklärt habe.

    Grüsse und Danke!


    Folgender Code steht am Anfang:

    <script language="javascript" type="text/javascript">
    // Object finden
    function MM_findObj(n, d) { //v4.01
    var p,i,x; if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
    if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
    for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
    if(!x && d.getElementById) x=d.getElementById(n); return x;
    }

    function build_options(f1, f2) {
    marnr = f1;
    modellnr = MM_findObj(f2);
    opt = MM_findObj("auto_"+marnr.value);
    // Alle Optionen in Box 2 entfernen
    var l = modellnr.length;
    var x=0;
    while(x < l) {
    modellnr.options[0] = null;
    ++x;
    }
    // Box 2 mit neuen Optionen füllen
    if(opt) {
    var params = opt.value.split(";");
    var t = (params.length == 1) ? "Modell" : "Modelle";
    var option = new Option("Alle ("+params.length+" "+t+")", "");
    modellnr.options.add(option);
    var i=0;
    while(i < params.length) {
    var p = params[i].split(",");
    var option = new Option(p[1], p[0]);
    modellnr.options.add(option);
    ++i;
    }
    }
    // Keine Modelle vorhanden
    else {
    var option = new Option("Keine Modelle", "");
    modellnr.options.add(option);

    }
    }

    </script>
    <?php
    require_once("Datenbank Connection");
    // Daten für DropDown_1 holen
    $abfmar = "SELECT marnr,marke FROM tab_automarken ORDER BY marke";
    $resmar = mysql_query($abfmar);
    // 1. Option ist ein Hinweis
    #$opt_1 = '<option value="-1">Interpret w&auml;hlen</option>';
    // Optionen bilden
    while($rowmar = mysql_fetch_row($resmar)) {

    // Optionen für DropDown_1
    $opt_1 .= '<option value="'.$rowmar[0].'">'.$rowmar[1].'</option>';

    #$opt_1 .= "<option value=\"$rowmar[0]\"$selmar>$rowmar[1]</option>";

    // Daten für Marken holen
    $abfmod = "SELECT marnr,modell FROM tab_modelle WHERE marnr=".$rowmar[0]." ORDER by modell ASC";
    $resmod = mysql_query($abfmod);
    while($rowmod = mysql_fetch_array($resmod)) {
    $arr[$rowmod[0]][] = array($rowmod[1], $rowmod[1]);
    }
    }
    $hidden = "";
    foreach($arr as $key => $auto) {
    $temp = "";
    foreach($auto as $modell) {
    // Wenn für die marnr ein oder mehrere Modelle existieren
    // Modell Name übergeben
    $temp .= $modell[0].",".$modell[1].";";
    }
    // Abschliessendes Semikolon entfernen
    $temp = ereg_replace(";$","", $temp);
    // Modelldaten an ein Hidden-Feld übergeben
    $hidden .= '<input type="hidden" id="auto_'.$key.'" name="auto_'.$key.'" value="'.$temp.'" />';
    }
    ?>


    Diese Dropdowns stehen dann unten im Form:

    <select name="marnr" onChange="build_options(this, 'modellnr')" class="sel140">
    <option>Bitte Automarke w&auml;hlen</option>
    <?
    echo $opt_1;
    ?>
    </select>&nbsp;&nbsp;
    <select name="modellnr" class="sel140">
    <option>Keine Modelle</option>
    </select>
    Zuletzt geändert von morbusix; 03.02.2006, 12:32.

  • #2
    Erstes Post und gleich falsches Forum. Also dann willkommen
    Also wenn ich dich richtig verstehe, dann wählt der User was aus und schickt das Form an den Server. Und wenn er von der Resultatseite zurück kommt, dann sollten die vorherigen selections wieder ausgewählt sein ?
    Dann würde ich doch am einfachsten auf der Resultat Seite einen Link "zurück" setzen. Da das Form ja abgeschickt wurde, weiss PHP welche selections gewählt wurden. Also kann PHP beim Aufbau des Forms doch einfach die gewählten options mittels selected="selected" als ausgewählt setzen.
    So würde ich dat mal probieren.
    Gruss

    tobi

    p.s. für's nächste Post --> es gibt ein JS Forum
    Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

    [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
    Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

    Kommentar


    • #3
      Sorry

      Na ja, falsches Forum. Wohin müsste es dann?

      Ich werds schon noch lernen...

      Also, Du hast recht. Und genau so mach ich es auch. Über Link kommen die Werte zurück. Alles gut soweit.

      Nur wo soll ich den Wert einfügen? Der Wert wird übrigens in einer Session gespeichert ($_SESSION[set_marnr] und $_SESSION[set_modellnr]).

      Ich habe folgenden Ansatz getestet:

      $selmar = "";
      if($rowmar['marnr'] == $_SESSION[set_marnr])
      {
      $selmar = " selected";
      }
      $opt_1 .= '<option value="'.$rowmar[0].'"$selmar>'.$rowmar[1].'</option>';

      Von dem will er aber nichts wissen. Er ignoriert die Werte und setzt immer wieder die alten wie "Bitte Automarke wählen" und "Keine Modelle".

      Tja...

      Kommentar


      • #4
        Also da du ja neu bist noch wat kurzes. Nutze die php-Tags die das Forum bietet, dann siehst du Fehler in der Synthax ziemlich schnell
        PHP-Code:
        if($rowmar['marnr'] == $_SESSION[set_marnr])
        //besser mal so
        if($rowmar['marnr'] == $_SESSION['set_marnr']){
            die(
        'Die Bedingung funzt');
        }else{
            die(
        'Die Bedingung funzt ned');

        Was wird nun ausgegeben ?

        Gruss

        tobi
        Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

        [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
        Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

        Kommentar


        • #5
          Die Bedingung funzt

          Komisch. Aber irgendwie setzt er immer wieder die alten Werte ein.

          Kommentar


          • #6
            Hast du den Code Schnippel mal as-it-is in dein Script eingebaut und gibt er 'die Bedingung funzt ned' aus ?

            Gruss

            tobi
            Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

            [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
            Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

            Kommentar


            • #7
              Habe ich

              Genauso eingefügt. Und er gibt aus:

              Die Bedingung funzt.


              Zum Verzweifeln.

              Kommentar


              • #8
                YUPPIIIIIEEEE

                Trottel ich war.

                Folgende Zeile habe ich geschrieben:

                $opt_1 .= '<option value="'.$rowmar[0].'"$selmar>'.$rowmar[1].'</option>';

                Man beachte das Wort $selmar...

                Richtig muss man es so schreiben:

                $opt_1 .= '<option value="'.$rowmar[0].'"'.$selmar.'>'.$rowmar[1].'</option>';

                Also so: '.$selmar.'

                Es muss ja auch fortgesetzt werden...


                Danke für Deine (Eure) Mühe.


                Ach ja...es war übrigens eine verzwickte Frage, wo ich dieses Prob posten soll. Denn es ist halb PHP halb JS. Bitte nicht böse sein...

                Kommentar


                • #9
                  Die Bedingung funzt
                  Tja dann ist ja alles klar.

                  Gruss

                  tobi
                  Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                  [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                  Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                  Kommentar

                  Lädt...
                  X