Dynamiczne tworzenie comboboxów w php

0

Znalazłem taki kod z tej strony: http://www.javascriptkit.com/script/cut183.shtml

<form name="doublecombo">
<p><select name="example" size="1" onChange="redirect(this.options.selectedIndex)">
<option>Technology Sites</option>
<option>News Sites</option>
<option>Search Engines</option>
</select>
<select name="stage2" size="1">
<option value="http://javascriptkit.com">JavaScript Kit</option>
<option value="http://www.news.com">News.com</option>
<option value="http://www.wired.com">Wired News</option>
</select>
<input type="button" name="test" value="Go!"
onClick="go()">
</p>

<script>
<!--

var groups=document.doublecombo.example.options.length
var group=new Array(groups)
for (i=0; i<groups; i++)
group[i]=new Array()

group[0][0]=new Option("JavaScript Kit","http://javascriptkit.com")
group[0][1]=new Option("News.com","http://www.news.com")
group[0][2]=new Option("Wired News","http://www.wired.com")

group[1][0]=new Option("CNN","http://www.cnn.com")
group[1][1]=new Option("ABC News","http://www.abcnews.com")

group[2][0]=new Option("Hotbot","http://www.hotbot.com")
group[2][1]=new Option("Infoseek","http://www.infoseek.com")
group[2][2]=new Option("Excite","http://www.excite.com")
group[2][3]=new Option("Lycos","http://www.lycos.com")

var temp=document.doublecombo.stage2

function redirect(x){
for (m=temp.options.length-1;m>0;m--)
temp.options[m]=null
for (i=0;i<group[x].length;i++){
temp.options[i]=new Option(group[x][i].text,group[x][i].value)
}
temp.options[0].selected=true
}

function go(){
location=temp.options[temp.selectedIndex].value
}
//-->
</script>

</form>

Generuje on 2 comboboxy w którym wybór opcji z pierwszego wyświetla odpowiednie opcje w drugim comboboxie (jest pokazany przykład na stronie której podałem na początku).
Od wczoraj siedzę i kombinuję nad pewnym rozwiązaniem lecz bez skutku. Próbowałem sposobem switch case ale nie przynosi żądanego rezultatu.

Chcę uzyskać rozwiązanie takie:
Widoczny jest pierwszy combobox, w momencie wyboru jednej opcji pojawia się drugi combobox i znowu w momencie wyboru opcji w tym comboboxie pojawia się trzeci combobox. Każde opcje są odpowiednio wczytywane z plików i wyświetlane w comboboxach (wczytywanie z plików i podstawienie pod <option> wiem jak zrobić). Chciałbym, żeby te comboboxy pojawiały się bez przeładowania strony i dopiero na końcu po wysłaniu formularza metodą post wyświetlił odpowiednie wyniki (wybrane opcje będą wpływać na wyniki wyszukiwania). Niżej na rysunku chcę przedstawić prosty przykład schematu działania tego rozwiązania o którym przed momentem napisałem:

user image

Bardzo proszę o pomoc w rozwiązaniu tego problemu, najlepiej w postaci kodu PHP.

0

W postaci kodu PHP to się nie da, najlepiej zapoznaj się z pojęciem AJAX. Polecam użyć jQuery, połowa mniej kodu do napisania i do tego mnóstwo przykładów w sieci :)

0

Właśnie patrzyłem na rozwiązania AJAX'owe ale nie ma akurat mniej więcej czegoś takiego, wszędzie tylko treści dynamiczne ale żeby dynamicznie comboboxy to nie ma nic.

0

a co to za różnica, z punktu widzenia Twojej aplikacji? tak czy tak po stronie serwera generujesz jakąś treść, w Twoim wypadku to będzie kod z selectem i optionami w nim ;)

1

https://code.google.com/p/jquery-option-tree/
demo: http://kotowicz.net/jquery-option-tree/demo/demo.html.

Takie coś:

var option_tree = {
       "Option 1": {"Suboption":200},
       "Option 2": {"Suboption 2": {"Subsub 1":201, "Subsub 2":202},
                "Suboption 3": {"Subsub 3":203, "Subsub 4":204, "Subsub 5":205}
               }
    };

już łatwo wygenerujesz PHP-em

0
ittw napisał(a):

https://code.google.com/p/jquery-option-tree/
demo: http://kotowicz.net/jquery-option-tree/demo/demo.html.

Takie coś:
var option_tree = {
"Option 1": {"Suboption":200},
"Option 2": {"Suboption 2": {"Subsub 1":201, "Subsub 2":202},
"Suboption 3": {"Subsub 3":203, "Subsub 4":204, "Subsub 5":205}
}
};

już łatwo wygenerujesz PHP-em

zobaczyłem demo i o coś takiego mi właśnie chodziło, przykład 5 i 6 najlepiej to obrazuje
bardzo dziękuję za znalezienie takich informacji :)

PS. opracuje kod to udostępnię do gotowców

0

Myślę, że powinieneś rozważyć czy koniecznie chcesz ładować kolejne gałęzie ajaxem. Dla małego/średniego drzewa lepiej wszystko załadować raz i dobrze do pokazanego obiektu JS, nie wysylać requesta http->php->mysql. Jak wspomniałem, ocenić musisz już sam.

1 użytkowników online, w tym zalogowanych: 0, gości: 1