Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [javascipt/php]Skrypt wyświetlający zawartość jednego pola select zależnie od wybranej wartości w drugim
Forum PHP.pl > Forum > Przedszkole
smajster
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ść)

  1. <?php
  2. //////////////// ========= O B S Ł U G A  W Y S Z U K I W A R K I
  3. ////////
  4. /// === option: grupa 
  5. /// === option: podgrupa
  6. /// === option: producent
  7. /// === input:  słowo kluczowe
  8.  
  9. echo
  10.  
  11. <form style="position: absolute; top: 0;" name="wyszukiwarka" action="index.php" method="GET">
  12.  <input style="position=absolute" type="hidden" name="page" value="szukaj">  
  13. ";
  14.  
  15. // pobieramy do tablicy dane wszystkich grup
  16. //  grp[i][grupa] --> kod grupy
  17. //  grp[i][nazwa] --> nazwa grupy
  18. //  grp[i][ilpgp] --> ilość podgrup w danej grupie
  19.  
  20. $grp[$i]["grupa"] = 0; // iniciacja tablicy
  21.  
  22. $pyt = "SELECT MAX(id) as maxGrp FROM " ._dbProducts ."." ._dbtGroup .";";
  23. $rezult = mysql_query($pyt);
  24. $rekord = mysql_fetch_array($rezult);
  25. $maxGrp = $rekord["maxGrp"];
  26.  
  27. for($i = 1; $i <= $maxGrp; $i++)
  28. {
  29. $pyt = "SELECT * FROM " ._dbProducts ."." ._dbtGroup ." WHERE id = " .$i;
  30. $rezult = mysql_query($pyt);
  31. $rekord = mysql_fetch_array($rezult); 
  32. $grp[$i]["id"] = $rekord["id"];
  33. $grp[$i]["grupa"] = $rekord["grupa"];
  34. $grp[$i]["nazwa"] = $rekord["nazwa"];
  35. $grp[$i]["ilpgp"] = $rekord["iloscpgp"];
  36. } 
  37.  
  38. // pobieramy do tablicy dane wszystkich podgrup
  39. // subGrp[i][id] --------> id
  40. //  subGrp[i][grupa] -----> kod grupy
  41. //  subGrp[i][podgrupa] --> kod podgrupy
  42. //  subGrp[i][nazwa] -----> nazwa podgrupy
  43. //  subGrp[i][ilosc] -----> ilość produktów w podgrupie
  44.  
  45.  for($i = 1; $i <= $maxGrp; $i++)
  46.  { 
  47. for($j = 1; $j <= $grp[$i]["ilpgp"]; $j++)
  48. {
  49. $subGrupa = 100*$grp[$i]["grupa"] + $j;
  50. $pyt = "SELECT grupa, podgrupa, nazwa FROM " ._dbProducts ."." ._dbtSubGroup ." WHERE podgrupa = " .$subGrupa .";";
  51.  
  52. $rezult = mysql_query($pyt);
  53. $rekord = mysql_fetch_array($rezult);  
  54. $subGrp[$i][$j]["grupa"] = $rekord["grupa"];
  55. $subGrp[$i][$j]["podgrupa"] = $rekord["podgrupa"];
  56. $subGrp[$i][$j]["nazwa"] = $rekord["nazwa"];  
  57. }  
  58.  }
  59.  
  60.  //// wrzucamy do option z grupy wartość value=grupa i wyświetlamy nazwe grupy
  61.  //
  62.  
  63.  echo"  
  64.  
  65. <select name="Wgrupa" class="wyszukiwarka_grup" size="1" onchange="actualGroup(this.options.selectedIndex-1)">";
  66.  echo "n <option selected value="-1">wszystkie</option>";
  67. // wpisujemy grupy do pola option, ustawiając na indexie 1
  68.  for($i = 1; $i <= $maxGrp; $i++)
  69.  {
  70.  echo "n<option value="" .$grp[$i]["grupa"] ."">" .$grp[$i]["nazwa"] ."</option>";
  71.  }
  72.  echo"
  73.  </select>
  74.  
  75.  <select name="Wproducent" class="wyszukiwarka_prod">
  76. <option value="-1">wszyscy</option>";
  77. $pyt = "SELECT nazwa FROM " ._dbProducts ."." ._dbtProducents .";";
  78. $rezult = mysql_query($pyt);
  79. echo "ppp $pyt==>$rezult";
  80. while($wiersz = mysql_fetch_array($rezult))
  81. {
  82. echo"n<option value="" .$wiersz["nazwa"] .""";
  83. if($wiersz["nazwa"] == $rekord["nazwa"]) echo " selected";
  84. echo">" .$wiersz["nazwa"] ."</option>";
  85. }
  86.  echo "
  87.  </select>
  88.  
  89.  
  90. <select name="WsubGrupa" class="wyszukiwarka_podg" size="1">
  91.  <option value="-1">wszystkie</option>
  92.  </select>
  93. "; // podgrupa zawiera 'puste'/obojętne pole o wartości -1
  94.  
  95.  
  96. // funkcja dynamicznie zmieniająca zawartość pola podgrup w zależności od pola gru
    py 
  97.  echo "
  98.  <script>
  99.  <!--
  100.  
  101.  var groups = document.wyszukiwarka.Wgrupa.options.length
  102.  var group = new Array(groups)
  103.  for (i=0; i<groups; i++)
  104.  group[i]=new Array()
  105.  
  106.  ";
  107.  // wypisujemy kolejno wszystkie nazwy podgrup
  108.  for($i = 1; $i <= $maxGrp; $i++)
  109.  {
  110. for($j = 1; $j <= $grp[$i]["ilpgp"]; $j++)
  111. {
  112.  echo "n group[" .($i-1) ."][" .($j-1) ."] = new Option("" .$subGrp[$i][$j]["nazwa"] ."", " .$subGrp[$i][$j]["podgrupa"] .");";
  113. }
  114.  }
  115.  
  116.  var temp=document.wyszukiwarka.WsubGrupa
  117.  
  118.  function actualGroup(x){
  119. if(x != -1)
  120. {  
  121. for (m=temp.options.length;m>0;m--) temp.options[m]=null;
  122.  
  123. temp.options[0]=new Option('wszystkie', -1);
  124. for (i=1;i<=group[x].length;i++)
  125. {
  126.  temp.options[i]=new Option(group[x][i-1].text,group[x][i-1].value)
  127. }
  128. temp.options[0].selected=true;
  129.  }
  130.  
  131.  
  132.  }
  133.  
  134.  //-->
  135.  </script>
  136. ";
  137.  
  138.  
  139.  
  140. <input class="slowo_kluczowe" type="text" name="Wslowo" value="" />
  141.  <button style="left: 690px; top: 205px;" class="submit" type="submit">           </button>
  142. </form>
  143.  
  144. ";
  145. ?>



W 132 linijce dorzuciłem fragment:
  1. <?php
  2. else
  3.  {
  4.  for (m=temp.options.length;m>0;m--) temp.options[m]=null;
  5.  
  6. temp.options[0]=new Option('wszystkie', -1);
  7. for (j=0; j< groups; j++)
  8. {
  9. for (i=1;i<=group[j].length;i++)
  10. {
  11. temp.options[i]=new Option(group[j][i-1].text,group[j][i-1].value)
  12. }
  13. }
  14. temp.options[0].selected=true;
  15.  }
  16. ?>


Ale nic to nie dało(wszystko działało tak jakby go nie bylo).

Z góry dziekuje za pomoc
Pozdrawiam,
Smajster
Aure
Analizę tego kodu ułatwiłoby gdybyś zamiast kodu w php zamieścił wynikowy HTML+JS bo php tutaj ma niewielkie znaczenie winksmiley.jpg
milan
Trochę niejasno opisałeś problem.
Może chodzi Ci, że pole wszystkie jest w liście Grupy a nie w liście PodGrupy.
i jak naciskam na Wszytskie w Grupy to pokazują mi się wszystkie elementy w liście PodGrupy.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.