Na stronie sklepu który tworze zamieściłem, wyszukiwarkę składającą się pol select: grupa , podgrupa i producent oraz input do wspisania słowa klucza.
Chciałem aby po wybraniu w grupie jakiejś konkretnej grupy w polu podgrupy ukazały mi się jej podgrupy ,to juz udało mi się zrobić, jednak nie jestem w stanie sobie poradzić z tym żeby przy wyborze pola wszystkie w selectcie podgrupy pokazały się wszystkie podgrupy. Oto kod odpowiadający za to (sorki za dlugość)
<?php
//////////////// ========= O B S Ł U G A W Y S Z U K I W A R K I
////////
/// === option: grupa
/// === option: podgrupa
/// === option: producent
/// === input: słowo kluczowe
<form style="position: absolute; top: 0;" name="wyszukiwarka" action="index.php" method="GET">
<input style="position=absolute" type="hidden" name="page" value="szukaj">
";
// pobieramy do tablicy dane wszystkich grup
// grp[i][grupa] --> kod grupy
// grp[i][nazwa] --> nazwa grupy
// grp[i][ilpgp] --> ilość podgrup w danej grupie
$grp[$i]["grupa"] = 0; // iniciacja tablicy
$pyt = "SELECT MAX(id) as maxGrp FROM " ._dbProducts ."." ._dbtGroup .";";
$maxGrp = $rekord["maxGrp"];
for($i = 1; $i <= $maxGrp; $i++)
{
$pyt = "SELECT * FROM " ._dbProducts ."." ._dbtGroup ." WHERE id = " .$i;
$grp[$i]["id"] = $rekord["id"];
$grp[$i]["grupa"] = $rekord["grupa"];
$grp[$i]["nazwa"] = $rekord["nazwa"];
$grp[$i]["ilpgp"] = $rekord["iloscpgp"];
}
// pobieramy do tablicy dane wszystkich podgrup
// subGrp[i][id] --------> id
// subGrp[i][grupa] -----> kod grupy
// subGrp[i][podgrupa] --> kod podgrupy
// subGrp[i][nazwa] -----> nazwa podgrupy
// subGrp[i][ilosc] -----> ilość produktów w podgrupie
for($i = 1; $i <= $maxGrp; $i++)
{
for($j = 1; $j <= $grp[$i]["ilpgp"]; $j++)
{
$subGrupa = 100*$grp[$i]["grupa"] + $j;
$pyt = "SELECT grupa, podgrupa, nazwa FROM " ._dbProducts ."." ._dbtSubGroup ." WHERE podgrupa = " .$subGrupa .";";
$subGrp[$i][$j]["grupa"] = $rekord["grupa"];
$subGrp[$i][$j]["podgrupa"] = $rekord["podgrupa"];
$subGrp[$i][$j]["nazwa"] = $rekord["nazwa"];
}
}
//// wrzucamy do option z grupy wartość value=grupa i wyświetlamy nazwe grupy
//
<select name="Wgrupa" class="wyszukiwarka_grup" size="1" onchange="actualGroup(this.options.selectedIndex-1)">";
echo "n <option selected value="-1">wszystkie</option>"; // wpisujemy grupy do pola option, ustawiając na indexie 1
for($i = 1; $i <= $maxGrp; $i++)
{
echo "n<option value="" .$grp[$i]["grupa
"] ."">" .$grp[$i]["nazwa"] ."</option>"; }
</select>
<select name="Wproducent" class="wyszukiwarka_prod">
<option value="-1">wszyscy</option>";
$pyt = "SELECT nazwa FROM " ._dbProducts ."." ._dbtProducents .";";
echo "ppp $pyt==>$rezult"; {
echo"n<option value="" .$wiersz["nazwa
"] ."""; if($wiersz["nazwa"] == $rekord["nazwa"]) echo " selected"; echo">" .$wiersz["nazwa"] ."</option>"; }
</select>
<select name="WsubGrupa" class="wyszukiwarka_podg" size="1">
<option value="-1">wszystkie</option>
</select>
"; // podgrupa zawiera 'puste'/obojętne pole o wartości -1
// funkcja dynamicznie zmieniająca zawartość pola podgrup w zależności od pola gru
py
<script>
<!--
var groups = document.wyszukiwarka.Wgrupa.options.length
var group = new Array(groups)
for (i=0; i<groups; i++)
group[i]=new Array()
";
// wypisujemy kolejno wszystkie nazwy podgrup
for($i = 1; $i <= $maxGrp; $i++)
{
for($j = 1; $j <= $grp[$i]["ilpgp"]; $j++)
{
echo "n group[" .($i-1) ."][" .($j-1) ."] = new Option("" .$subGrp[$i][$j]["nazwa
"] ."", " .$subGrp[$i][$j]["podgrupa"] .");"; }
}
var temp=document.wyszukiwarka.WsubGrupa
function actualGroup(x){
if(x != -1)
{
for (m=temp.options.length;m>0;m--) temp.options[m]=null;
temp.options[0]=new Option('wszystkie', -1);
for (i=1;i<=group[x].length;i++)
{
temp.options[i]=new Option(group[x][i-1].text,group[x][i-1].value)
}
temp.options[0].selected=true;
}
}
//-->
</script>
";
<input class="slowo_kluczowe" type="text" name="Wslowo" value="" />
<button style="left: 690px; top: 205px;" class="submit" type="submit"> </button>
</form>
";
?>
W 132 linijce dorzuciłem fragment:
<?php
else
{
for (m=temp.options.length;m>0;m--) temp.options[m]=null;
temp.options[0]=new Option('wszystkie', -1);
for (j=0; j< groups; j++)
{
for (i=1;i<=group[j].length;i++)
{
temp.options[i]=new Option(group[j][i-1].text,group[j][i-1].value)
}
}
temp.options[0].selected=true;
}
?>
Ale nic to nie dało(wszystko działało tak jakby go nie bylo).
Z góry dziekuje za pomoc
Pozdrawiam,
Smajster