Problem mit Drop-Down und onchange

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

  • Problem mit Drop-Down und onchange

    Hi,

    ich habe folgendes Problem, fuer das ich immer noch keine Loesung gefunden habe.

    Ich habe ein Drop-down Feld, dieses wird aus einer MySQL DB gefuettert. Es handelt sich hierbei um verschiedene Regionen. Nun soll es also moeglich sein, eine Region auszuwaehlen und dementsprechend sollen jeweils nur die betreffenden Beitraege dazu erscheinen. Natuerlich soll diese Einstellung an alle Seiten uebermittelt werden, also auch wenn ich mich auf der Seite "Kontakt " aufhalte und zurueck auf die Beitraege wechsle, muss die gewaehlte Einstellung noch erhalten sein.

    Ich vermute mal, dass ich das ueber ein verstecktes Formular umsetzen muss. Natuerlich muss die Seite auch aktualisiert werden, nachdem eine Region gewaehlt wurde, was wohl ueber "onchange" funktioniert. Wie aber muss ich das Ganze genau umsetzten? Ich habe bereits das Internet durchstoebert aber nichts braucbares gefunden, Ihr seid also meine letzte Hoffnung.



    Hier mein bisheriger Quellcode:


    PHP-Code:

    $sql
    ="SELECT County, CountyID FROM tblCounty";
    $result=mysql_query($sql)or die(mysql_error().$errordatabase);


     if(
    $result)

                     {

        
    Choose your County';
        echo '
    <select name="new_county" onchange="?????" ></">';
        echo '<OPTION selected value=""> **All** </OPTION>';
        
                   while (
    $county = mysql_fetch_array($result))

        {

    echo '<option value="'.$county['
    CountyID'].'" >'.$county['County'].'</option>';
        
                    }
                    echo '</td></tr>';

                    echo '</table>';
                    echo '</select>';

                    } 

    Weiss jemmand vielleicht Rat?

    Gruss Luka

  • #2
    Code:
    <form name="formname" .....>
    
        <select name="new_county" onchange="document.formname.submit();">
            .
            .
            .
            .
        </select>
    
    </form>
    INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


    Kommentar


    • #3
      Erstmal Danke fuer Deine schnelle Antwort. Habe es auch gleich ausprobiert, es erfolgt ein refresh, aber dann springt der Eintrag auch gleich wieder auf "Alle". Es kommt auch ein Skriptfehler mit fehlender Bezeichner.

      Ich muss also irgendwie den neuen Wert des Dropdownfeldes ermitteln und diesen weiterleiten, wenn der refresh erfolgt. Meine Vermutung, wie bereits gesagt waere ein verstecktes Feld mit der Information, aber ich weiss wirklich nicht wie ich das umsetzten soll...

      Kommentar


      • #4
        Bei if isset($auswahl) das Select feld 1 vorbelegen mit dem Wert, und das 2. dementsprechend füllen...


        An mich bitte keine unaufgeforderten E-Mails senden (ausser ihr seid bereit geld zu zahlen, dann gerne )

        Kommentar


        • #5
          @MaxP0W3R,

          bin mir nicht ganz so sicher, ob ich Dich verstehe. Das Dropdown Feld wird ja korrekt aufgebaut, also alle Eintraege aus der DB uebernommen. Nun geht es mir darum, sobald ein Eintrag aus dem Dropdown Feld ausgewaehlt wird, muss die Seite aktualisiert werden, der Eintrag muss beibehalten und die Inhalte entsprechend der Auswahl angepasst werden.

          Also vermute ich jetzt mal, dass Du mich falsch verstanden hast.

          Kommentar


          • #6
            Re: Problem mit Drop-Down und onchange

            Original geschrieben von Luka
            Natuerlich soll diese Einstellung an alle Seiten uebermittelt werden, also auch wenn ich mich auf der Seite "Kontakt " aufhalte und zurueck auf die Beitraege wechsle, muss die gewaehlte Einstellung noch erhalten sein.

            Ich vermute mal, dass ich das ueber ein verstecktes Formular umsetzen muss.
            ich würde cookies oder evtl. auch sessions für diesen zweck für geeigneter halten.

            denn sonst musst du ja überall mit formularen arbeiten, bzw. an alle internen links einen GET-parameter anhängen ...
            I don't believe in rebirth. Actually, I never did in my whole lives.

            Kommentar


            • #7
              @wahsaga,

              ich starte bisher eine Session nur, wenn man sich eingeloggt hat. Ansonsten werden bisher alle Informationen direkt an die interenen links gehaengt. Ich kenne mich mit Sessions bisher auch nicht wirklich aus...

              Kommentar


              • #8
                warum startest du die session mit session_start() erst beim einloggen. mache es auf ALLEN seiten der präsenz. das ist IMHO wesentlich einfacher..... und die session ist eben IMMER da. ;-)
                INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                Kommentar


                • #9
                  Ich habe mir das gerade nochmal angeschaut und ehrlich gesagt glaube ich sogar das die Session bereits am Anfang gestartet wird. Ich habe eine default.php von der alles aus laeuft und am Anfang steht session_start();
                  Aber wie gesagt, ich bin mit Sessions nicht sattelfest und versuche den Gebrauch noch immer zu vermeiden.

                  Das Prinzip einer Session kenne ich, aber wie ich das dann jetzt umsetzten soll.....????

                  Kommentar


                  • #10
                    So ich habe jetzt den ersten Ansatz einer Loesung:

                    PHP-Code:

                    echo '<form name="form"  >';

                    echo 
                    'Choose your County: ';
                                    
                    echo 
                    '<select name="newCounty" class="AuswahlCounty" onchange="document.form.submit();"></">';
                    echo
                    '<option value="">--All--</option>';

                    while (
                    $county mysql_fetch_array($result))

                    {

                                    
                    if(
                    $county['CountyID']==$newCounty)
                        {
                        echo
                    '<option value="'.$county['CountyID'].'" selected>'.$county['County'].'</option>';
                        }

                    else
                        {
                        echo
                    '<option value="'.$county['CountyID'].'">'.$county['County'].'</option>';
                        }
                                        
                                        
                    }
                                        
                                        
                    echo 
                    '</select>';
                    echo 
                    '</form>'
                    es wird jetzt also beim ersten Seitenaufruf "All" angezeigt, wenn ich eine Auswahl treffe erfolgt ein refresh und der neue Wert wird beibehalten.


                    Erster Schritt also getan, doch sobald ich auf eine andere Seite wechsle, ist die Einstellung dahin. Nun wurde ja schon mal der Vorschlag gemacht den Wert in eine Session zu schreiben und von dort auf die anderen Seiten weiterzutragen.

                    Ich habe daher mal session_register("newCounty"); reingepackt, doch nun ist das Problem das der erste Wert auch reingeschrieben wird, doch wenn ich eine neue Auswahl treffe, muesste dieser ja eigentlich ueberschrieben werden, was aber nicht funktioniert.

                    Was mach ich da denn falsch?


                    Oh nein, weiss nicht was nun passiert ist, aber irgendwie funktioniert es doch nicht so ganz. Der Wert bleibt zwar erhalten, aber sobald ich eine neue Auswahl treffe wird diese zwar in der Adresszeile angezeigt, aber er springt im Auswahlfeld wieder auf die erste Auswahl....

                    Ich verzweifle noch daran...
                    Zuletzt geändert von Luka; 03.08.2004, 16:11.

                    Kommentar


                    • #11
                      session_register ist alt, welche PHP-Version hast du? Wenn >= Version 4.1.0 dann $_SESSION ist besser. Ausserdem register_globals = ?

                      Kommentar


                      • #12
                        Die globalen Variablen sind on. Ja ich weiss, ich sollte die mal lieber ausschalten. Ich werde das demnaechst mal umaendern. Momentan bin ich aber noch mit sovielen Problemen beschaeftigt, dass ich das alles moeglichst einfach halten wollte.

                        Wenn Du Dir meine Ergaenzung zum letzten Post ansiehst klappt es eh noch nicht mit dem beibehalten des gewaehlten Eintrages. Mist. Siehst Du vielleicht meinen Fehler?

                        Kommentar


                        • #13
                          mach mal so:
                          PHP-Code:
                          if (isset($_POST['newCounty']) && strlen($_POST['newCounty'])>0) {
                             
                          $sel $_POST['newCounty'];
                             
                          $_SESSION['str_selected'] = $sel;
                          } elseif (
                          $_SESSION['str_selected']!=''$sel $_SESSION['str_selected'];
                          else {
                             
                          $sel '--All--';
                             
                          $_SESSION['str_selected'] = $sel;
                          }
                          echo 
                          '<form name="form"  >';
                          echo 
                          'Choose your County: ';         
                          echo 
                          '<select name="newCounty" class="AuswahlCounty" onchange="document.form.submit();"></">';
                          echo
                          '<option value="--All--"';
                          if (
                          $sel=='--All--') echo' selected';
                          echo 
                          '>--All--</option>';
                          while (
                          $county mysql_fetch_array($result))
                          {
                          if(
                          $county['CountyID']==$sel)
                              {
                              echo
                          '<option value="'.$county['CountyID'].'" selected>'.$county['County'].'</option>';
                              }
                          else
                              {
                              echo
                          '<option value="'.$county['CountyID'].'">'.$county['County'].'</option>';
                              }
                          }                   
                          echo 
                          '</select>';
                          echo 
                          '</form>'

                          Kommentar


                          • #14
                            Hi asp2php,

                            vielen Dank erstmal fuer den ausfuehrlichen Quellecode. Leider behaelt die Liste immer noch keinen Wert, obwohl eigentlich alles ganz logisch aussieht. Wo liegt nur der Fehler..

                            Kommentar


                            • #15
                              Es geht doch. Vielen, vielen Dank. Der Fehler lag im Form-tag, hier fehlte natuerlich noch method="post".

                              Ich kann es echt nicht fassen, dass es nun endlich laeuft. Ohne Eure und speziell der Hilfe von asp2php, haette ich es wohl nie geschafft.


                              Also nochmal vielen Dank an alle.

                              Gruss Luka

                              Kommentar

                              Lädt...
                              X