Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: <SELECT> + wywolanie funkcji
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
cornholio666
Witam!

mam takie cos:
  1. <SELECT NAME=\"kategory_1\">
  2. <?php 
  3. $query = &#092;"SELECT DISTINCT kategory FROM kategory\";
  4. $result = mysql_query($query);
  5. if(!$result)
  6. {
  7. echo &#092;"nie\";
  8. }
  9. while($rekord = mysql_fetch_array($result))
  10. {
  11.  echo &#092;"<OPTION value=\"$rekord[0]\">$rekord[0]</OPTION>\";
  12. }
  13.  ?>
  14.  </SELECT>

Wybieram jakas kategorie i chcialbym zeby wyswietlilo mi obok jeszcze jedna liste rozwijalna ktora spelniala by cos takiego
  1. <SELECT NAME=\"pod\">
  2. <?php 
  3. $query = &#092;"SELECT podkategory FROM kategory WHERE kategory='kategoria wybrana z listy'\";
  4. $result = mysql_query($query);
  5. if(!$result)
  6. {
  7. echo &#092;"nie\";
  8. }
  9. while($rekord = mysql_fetch_array($result))
  10. {
  11.  echo &#092;"<OPTION value=\"$rekord[0]\">$rekord[0]</OPTION>\";
  12. }
  13.  ?>
  14.  </SELECT>

chcialbym zeby sie to odbylo po stronie przegladari. Prosze o pomoc
crash
Bez przeładowanie nie da się tego wykonać.
A tak w drugiej liście ustaw warunek SQL na WHERE kategory = $_POST['kategory_1']
Sorry, że w działe JS wtrącam pomoc w php, ale no inaczej się nie da.
cornholio666
no to mnie troche zmartwiles. no ale nic dzieki
bregovic
To się da zrobić - tylko zależy od ilości rekordów w tabelach...
Jeśli nie masz ich strasznie dużo to weź popatrz na skrypt ze strony http://webmaster.helion.pl/kurshtml/skrypt/doubmenu.htm - i wygeneruj w php wszystkie możliwe tablice.

Jeśli natomiast bardzo chcesz żeby ta druga lista była generowana na bieżąco, zainteresuj się XmlHttpRequest - ale IMO to zbyt dużo roboty jak na twoją potrzebę.
cornholio666
zrobilem tak:
  1. <?php
  2. include &#092;"./nowy.inc\";
  3.  
  4. //polaczenie z baza
  5.  
  6. $link_id = db_connect();
  7.  if(!$link_id)
  8.  {
  9.  error_massage('nie mogę się polaczyc z baza');
  10.  }
  11.  
  12. //$ile zawiera ilosc \"nazw\" kategorii
  13.  
  14.  $query = &#092;"SELECT DISTINCT kategory FROM kategory\";
  15.  $result = mysql_query($query);
  16.  
  17.  $i = 0;
  18.  while($rekord = mysql_fetch_array($result))
  19.  { 
  20. $array[$i] = $rekord['kategory'];
  21. $i++;
  22.  }
  23.  $ile = count($array);
  24.  
  25. // tworzymy tablice wielowymiarowa wyglada ona tak:
  26. //group[0][0] = podkategoria
  27. //group[0][1] = podkategoria
  28.  
  29. //group[0][2] = jw
  30.  
  31. //group[1][0] = jw
  32. //group[1][1] = jw
  33.  
  34.  for($i = 0; $i < $ile ; $i++)
  35.  {
  36.  $query = &#092;"SELECT kategory, podkategory FROM kategory WHERE kategory = '$array[$i]' \";
  37.  $result = mysql_query($query);
  38.  
  39.  $j = 0;
  40.  while($rekord = mysql_fetch_array($result))
  41.  {
  42. $group[$i][$j] = $rekord['podkategory'];
  43. echo $group[$i][$j]. &#092;"<br>\";
  44. $j++;
  45.  }
  46.  
  47.  
  48.  }
  49.  
  50. ?>


Wyglada to mnie wiecej tak jak mi pokazales w tym skrypcie
Kod
group[0][0]=new Option("Website Abstraction","http://wsabstract.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")

Drugi argument mi nie potrzebny (adres www) wystarczy jak sie bedize pojawiala sama podkategoria
Teraz jak to przerobic tak zeby to chodzilo mozesz mi pomoc?
bregovic
Próbuj sam to napisać - jak ci się nie uda - to wieczorem coś wyskrobię.
cornholio666
ok zrobilem tak:

  1. //tutaj wypisuje po nacisnieciu submita wartosci zmiennych list
  2.  
  3.  <?php
  4. echo &#092;"example \". $example. \"<br>\";
  5. echo &#092;"stage \". $stage2;
  6.  ?>
  7.  
  8.  //wyswietlamy pierwsza liste czyli wszystkie dostepen kategorie
  9.  
  10.  <form name=\"doublecombo\" action\"on.php\">
  11.  <p><select name=\"example\" size=\"1\" onChange=\"redirect(this.options.selectedIndex)\">
  12.  <?php
  13.  include &#092;"./nowy.inc\";
  14.  
  15.  //polaczenie z baza
  16.  
  17.  $link_id = db_connect();
  18.  
  19. //$ile zawiera ilosc \"nazw\" kategorii
  20.  
  21.  $query = &#092;"SELECT DISTINCT kategory FROM kategory\";
  22.  $result = mysql_query($query);
  23.  
  24.  $i = 0;
  25.  while($rekord = mysql_fetch_array($result))
  26.  {
  27. echo &#092;"<option>\". $rekord['kategory']. \"</option>\";
  28. $array[$i] = $rekord['kategory'];
  29. $i++;
  30.  }
  31.  
  32.  echo &#092;" </select>\";
  33.  
  34.  
  35.  $ile = count($array);
  36.  
  37.  //druga lista na poczatku wyswietla podkategorie pierwszej kategorii
  38.  // tak jak w skrypcie który mi \"podales\"
  39.  
  40.  echo &#092;"<select name=\"stage2\" size=\"1\">\";
  41.  
  42.  
  43.  $query = &#092;"SELECT kategory, podkategory FROM kategory WHERE kategory = '$array[0]' \";
  44.  $result = mysql_query($query);
  45.  while($rekord = mysql_fetch_array($result))
  46.  {
  47.  echo &#092;"<option>\" . $rekord['podkategory']. \"</option>\";
  48.  } 
  49.  echo &#092;"</p></select>\"; 
  50.  ?>
  51.  <input type=\"submit\" name=\"test\" value=\"Wczytaj!\">
  52.  //tu się ten skrypt...
  53.  
  54.  <script>
  55. <!--
  56.  
  57. /*
  58. Double Combo Script Credit
  59. By Website Abstraction (www.wsabstract.com)
  60. Over 200+ free JavaScripts here!
  61. */
  62.  
  63. var groups=document.doublecombo.example.options.length
  64. var group=new Array(groups)
  65. for (i=0; i<groups; i++)
  66. group[i]=new Array()
  67.  
  68. //i tutaj wygenerowalem kod js tak jak w skrypcie
  69.  
  70. <?php
  71.  
  72.  for($i = 0; $i < $ile ; $i++)
  73.  {
  74.  $query = &#092;"SELECT kategory, podkategory FROM kategory WHERE kategory = '$array[$i]' \";
  75.  $result = mysql_query($query);
  76.  
  77.  $j = 0;
  78.  while($rekord = mysql_fetch_array($result))
  79.  { 
  80. $group[$i][$j] = $rekord['podkategory'];
  81.  
  82. //tutaj caly pies pogrzebany> generuje to np: group[0][0]=new Option(\"cos\")
  83.  
  84. echo &#092;"group[\" .$i . \"][\" . $j .\"] = new Option(\" \" . $group[$i][$j]. \" \")n\"; 
  85. $j++;
  86.  }
  87.  
  88.  
  89.  }
  90. ?>
  91. var temp=document.doublecombo.stage2
  92.  
  93. function redirect(x){
  94. for (m=temp.options.length-1;m>0;m--)
  95. temp.options[m]=null
  96. for (i=0;i<group[x].length;i++){
  97. temp.options[i]=new Option(group[x][i].text,group[x][i].value)
  98. }
  99. temp.options[0].selected=true
  100. }
  101.  
  102. function go(){
  103. location=temp.options[temp.selectedIndex].value
  104. }
  105. //-->
  106. </script>


wszystko dzilala ladnie tylko przy wypisywaniu (na samej gorze) zmienych list,
wyswietla mi tylko
  1. <?php
  2. echo &#092;"example \". $example. \"<br>\";
  3. ?>
a
  1. <?php
  2. echo &#092;"stage \". $stage2;
  3. ?>
nie wypisuje. Zauwazylem ze przu drugiej liscie musze na nia kliknac i zaznaczyc wtedy wyswietla... Dlaczego?


PS: chyba to troche zawile...
bregovic
No więc co właściwie teraz jest problemem? Bo nie do końca rozumiem winksmiley.jpg
cornholio666
powyzszy kod

  1. <?php
  2. $query = &#092;"SELECT kategory, podkategory FROM kategory WHERE kategory = '$array[0]' \";
  3.  $result = mysql_query($query);
  4.  while($rekord = mysql_fetch_array($result))
  5.  {
  6.  echo &#092;"<option>\" . $rekord['podkategory']. \"</option>\";
  7.  }
  8.  
  9.  echo &#092;"</p></select>\"; 
  10.  ?>


uzupelniam o
  1. <?php
  2. <input type=&#092;"submit\" name=\"test\" value=\"Wczytaj!\">
  3. ?>


strona sie przeladowuje i chce wyswietlic pola ktore zaznaczylem
wiec na samej gorze wyswietlam co w pierwszej liscie zaznaczylem (tutaj mi dobrze wyswietla)
  1. <?php
  2. //<select name=\"example\" size=\"1\" onChange=\"redirect(this.options.selectedIndex)\">
  3.  echo &#092;"example \". $example. \"<br>\";
  4. ?>


nizej chce wyswietlic co zaznaczylem na drugiej liscie, tej ktora jest generowana przez js. (tutaj mi nie wyswietla nic)
  1. <?php
  2. //echo \"<select name=\"stage2\" size=\"1\">\";
  3.  echo &#092;"stage \". $stage2. \"<br>\";
  4. ?>


moze sie niejasno wyrazam ... chodzi i o zmienna ktora przechowuje to co wybralem z drugiej listy bo chyba nie jest to $stage2
bregovic
Nie wiem w czym problem szczerze mówiąc. Jeśli na coś wpadnę nie omieszkam napisać.
cornholio666
powiedzmy plik wybierz.html
Kod
<form action="cos.php">
<select name="example">
<option>gruszka</option>
<option>jablko</option>
<option>banan</option>
</select>
<input type="submit" value="wyslij">
</form>


plik cos.php
wybieram (w wybierz.html) "banan"
  1. <?php
  2. echo $example;
  3. ?>
  4. //zaznaczylem pole \"banan\" wiec wypisze \"banan\"


teraz:

mam w moim skrypcie przedstawionym w poprzednich postach js generuje mi rozwijalna liste (tak jak w wybierz.html). po nacisnieciu "wyslij" chce wypisac to co zaznaczylem tak jak w cos.php zaznaczylem banan wyswietlilo banan. Wypisuje:

  1. <?php
  2. echo $stage2;
  3. ?>


no i nic mi nie wypisuje, zmienna jest pusta. Teraz jak mam zrobic zeby mi wypisal to co znznaczylem w rozwijalnej liscie (chodzi o ta druga liste generowana przez js)

smile.gif
crash
Nie zapomnij o ustawieniu metody przesyłania formularza na POST (method="post"), a odebrane zmienne ustawiaj odpowiednio:
  1. <?php
  2. $example = $_POST['example'];
  3. ?>
cornholio666
Ok jakos sie uporalem z tym problemem nie wiem jak ale jakos poszlo smile.gif
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.