Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [js] wartości selectu po wybraniu pierwszego
KCG
post
Post #1





Grupa: Zarejestrowani
Postów: 449
Pomógł: 4
Dołączył: 1.12.2006

Ostrzeżenie: (0%)
-----


Chciałbym, aby po wybraniu wartości z pierwszej listy (ubrania, buty itp.) dwie następne uzupełniały się odpowiednimi kategoriami i producentami (buty np. zimowe, letnie; ubrania np. spodnie, bluzy). Poniżej kod generowany przez php. Jeśli usunę pętlę generującą elementy tablicy prod i prod_id, to pierwsza lista wypełnia się kategoriami, w drugą stronę to nie działa. Coś jest nie tak, czego nie dostrzegłem?
  1. function zamianau(kat) {
  2. var cat1 = new Array();
  3. var cat_id1 = new Array();
  4. cat1[0] = 'Enduro';
  5. cat_id1[0] = 8;
  6. cat1[1] = 'Integralny';
  7. cat_id1[1] = 6;
  8. cat1[2] = 'Okulary i szyby';
  9. cat_id1[2] = 9;
  10. cat1[3] = 'Otwarty';
  11. cat_id1[3] = 7;
  12. cat1[4] = 'Otwierany';
  13. cat_id1[4] = 5;
  14. cat1[5] = 'Pozosta?e';
  15. cat_id1[5] = 10;
  16. var prod1 = new Array();
  17. var prod_id1 = new Array();
  18. prod1[0] = 'AGV';
  19. prod_id1[0] = 1;
  20. prod1[1] = 'Airoh';
  21. prod_id1[1] = 2;
  22. prod1[2] = 'Alpina';
  23. prod_id1[2] = 3;
  24. prod1[3] = 'Apache';
  25. prod_id1[3] = 4;
  26. prod1[4] = 'Arai';
  27. prod_id1[4] = 5;
  28. prod1[5] = 'Aviator';
  29. prod_id1[5] = 6;
  30. (...)
  31. prod1[74] = 'WSGG';
  32. prod_id1[74] = 74;
  33. prod1[75] = 'Wulf';
  34. prod_id1[75] = 75;
  35. prod1[76] = 'X Speed';
  36. prod_id1[76] = 78;
  37. prod1[77] = 'X-Lite';
  38. prod_id1[77] = 77;
  39. prod1[78] = 'X1';
  40. prod_id1[78] = 76;
  41. prod1[79] = 'Zeal';
  42. prod_id1[79] = 79;
  43. if (kat == 1) {
  44. var dlugosc = cat1.length-1;
  45. document.add.elements.catb.options.length = cat1.length;
  46. for (var i=0; i <= dlugosc; i++) {
  47. document.add.catb.options[i] = new Option(cat1[i]);
  48. document.add.catb.options[i].value = cat_id1[i];
  49. }
  50. var dlugosc = prod1.length-1;
  51. document.add.elements.producent.options.length = prod1.length;
  52. for (var i=0; i <= dlugosc; i++) {
  53. document.add.producent.options[i] = new Option(prod1[i]);
  54. document.add.producent.options[i].value = prod_id1[i];
  55. }
  56. }


Doszedłem, że tablice prod i prod_id mogą mieć maksymalnie 26 elementów. Czemu? (znaczy wygenerowanych w pętli może być 26 elementów, jak na sztywno dodam jeszcze kilka to też jest ok)

Ten post edytował KCG 11.02.2008, 23:42:53


--------------------
9242594 - zaczynasz? jak mogę, to pomogę :D /podstawowa znajomość php :P /
"to pomoc zawsze będzie gestem pięknym, zaliczana do tych teraz rzadko spotykanych..."
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
kurt
post
Post #2





Grupa: Zarejestrowani
Postów: 89
Pomógł: 3
Dołączył: 14.07.2005
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Na wstępnie, brakuje mi tu klucza, wiążącego produkt z kategorią.
czemu nie stosujesz tablic wielowymiarowych, a przechowujesz id i nazwę w dwóch różnych? trochę to dziwnie wygląda.
Go to the top of the page
+Quote Post
KCG
post
Post #3





Grupa: Zarejestrowani
Postów: 449
Pomógł: 4
Dołączył: 1.12.2006

Ostrzeżenie: (0%)
-----


Wszystko działa, no faktycznie może lepiej zastosować tablicę wielowymiarową.
Jest coś takiego, że jak w zapytaniu do bazy dam 'LIMIT 26' to jest ok, a np. 27 i więcej to już nie działa. Znowu jeśli ręcznie dodałem następne elementy (27,28,29...) to się wyświetlały i ogólnie działało. Więc o co chodzi?

Mógłbyś mi podać mniej więcej, jak to z tablicami wielowymiarowymi by było? Bo jakoś mi nie wyszło.


--------------------
9242594 - zaczynasz? jak mogę, to pomogę :D /podstawowa znajomość php :P /
"to pomoc zawsze będzie gestem pięknym, zaliczana do tych teraz rzadko spotykanych..."
Go to the top of the page
+Quote Post
kurt
post
Post #4





Grupa: Zarejestrowani
Postów: 89
Pomógł: 3
Dołączył: 14.07.2005
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


to normale jak dasz "limit 26" w zapytaniu to nie pobierzesz więcej niż 26 rekordów.
co do tabel wielowymiarowych to po prostu:
  1. var produkty = new Array()
  2. var i
  3.  
  4. ' pętla z i
  5. produkty[i] = new Array()
  6. produkty[i][0] = id ' id produktu
  7. produkty[i][1] = cat ' kategoria
  8. produkty[i][2] = nazwa ' wiadomo
  9.  
  10. ' koniec pętli...
  11.  


coś w tym stylu winksmiley.jpg

Ten post edytował kurt 16.02.2008, 09:45:20
Go to the top of the page
+Quote Post
KCG
post
Post #5





Grupa: Zarejestrowani
Postów: 449
Pomógł: 4
Dołączył: 1.12.2006

Ostrzeżenie: (0%)
-----


Wiem, na czym LIMIT polega :] Chodzi o to, że jak dam więcej niż 26 w LIMIT zapytania do bazy (php), to caly skrypt JS nie działa... W źródle wyglada wszystko ok, no ale nie działa;/
A taka tablic może być: prod[$id]['id'][i] ? (i z pętli js, a $id z php)


--------------------
9242594 - zaczynasz? jak mogę, to pomogę :D /podstawowa znajomość php :P /
"to pomoc zawsze będzie gestem pięknym, zaliczana do tych teraz rzadko spotykanych..."
Go to the top of the page
+Quote Post
kurt
post
Post #6





Grupa: Zarejestrowani
Postów: 89
Pomógł: 3
Dołączył: 14.07.2005
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Jak chcesz połączyć JS z PHP to chyba najlepiej "oblecz" JS w php. Łatwej jest wtedy przekazywać zmienne php do JS
  1. <?php
  2. print "<script type='text/javascript'><!--\n";
  3. print "var produkty = new Array()";
  4. print "var i";
  5.  
  6. // itd, itd
  7. ?>


zresztą masz tu link, gdzie sposób ten jest opisany:
http://www.poradnik-webmastera.com/artykul..._javascript.php

co do tego obcinania selecta przy 26 to najlepiej wklej cały skrypt. Po tym co napisałeś w pierwszym poście niewiele się można zorientować.

Ten post edytował kurt 17.02.2008, 09:10:25
Go to the top of the page
+Quote Post
KCG
post
Post #7





Grupa: Zarejestrowani
Postów: 449
Pomógł: 4
Dołączył: 1.12.2006

Ostrzeżenie: (0%)
-----


  1. function zamianau(kat) {
  2. <?php
  3. $sql1 = 'SELECT `ubrania_category_id` FROM `ubrania_category` WHERE `ubrania_category_pid
    `=0'
    ;
  4. $res1 = $mysql->query($sql1);
  5. while ($cat = $mysql->fetch_array($res1)) {
  6. echo 'var cat'.$cat['ubrania_category_id'].' = new Array();'."\n";
  7. echo 'var cat_id'.$cat['ubrania_category_id'].' = new Array();'."\n";
  8. $sql2 = 'SELECT * FROM `ubrania_category` WHERE `ubrania_category_pid`='.$cat['ubrania_category_id'].' ORDER BY `ubrania_category_name` ASC';
  9. $res2 = $mysql->query($sql2);
  10. $i = 0;
  11. while ($cat2 = $mysql->fetch_array($res2)) {
  12.  echo 'cat'.$cat['ubrania_category_id'].'['.$i.'] = ''.$cat2['ubrania_category_name'].'';'."\n";
  13. echo 'cat_id'.$cat['ubrania_category_id'].'['.$i.'] = '.$cat2['ubrania_category_id'].';'."\n";
  14. $i++;
  15. }
  16. echo 'var prod'.$cat['ubrania_category_id'].' = new Array();'."\n";
  17. echo 'var prod_id'.$cat['ubrania_category_id'].' = new Array();'."\n";
  18.  $sql3 = 'SELECT * FROM `ubrania_producenci` WHERE `ubrania_producenci_pid`='.$cat['ubrania_category_id'].' ORDER BY `ubrania_producenci_name` ASC LIMIT 26';
  19. $res3 = $mysql->query($sql3);
  20. $i = 0;
  21. while ($prod = $mysql->fetch_array($res3)) {
  22. echo 'prod'.$cat['ubrania_category_id'].'['.$i.'] = ''.$prod['ubrania_producenci_name'].'';'."\n";
  23. echo 'prod_id'.$cat['ubrania_category_id'].'['.$i.'] = '.$prod['ubrania_producenci_id'].';'."\n";
  24. $i++;
  25.  }
  26. echo 'var size'.$cat['ubrania_category_id'].' = new Array();'."\n";
  27. echo 'var size_id'.$cat['ubrania_category_id'].' = new Array();'."\n";
  28. $sql4 = 'SELECT * FROM `ubrania_rozmiary` WHERE `ubrania_rozmiary_pid`='.$cat['ubrania_category_id'].' ORDER BY `ubrania_rozmiary_id` ASC';
  29. $res4 = $mysql->query($sql4);
  30. $i = 0;
  31. while ($roz = $mysql->fetch_array($res4)) {
  32. echo 'size'.$cat['ubrania_category_id'].'['.$i.'] = ''.$roz['ubrania_rozmiary_roz'].'';'."\n";
  33. echo 'size_id'.$cat['ubrania_category_id'].'['.$i.'] = ''.$roz['ubrania_rozmiary_id'].'';'."\n";
  34. $i++;
  35.  }
  36.  
  37. echo 'if (kat == '.$cat['ubrania_category_id'].') {'."\n";
  38. echo ' var dlugosc = cat'.$cat['ubrania_category_id'].'.length-1;'."\n";
  39. echo ' document.add.elements.catb.options.length = cat'.$cat['ubrania_category_id'].'.length;'."\n";
  40. echo ' for (var i=0; i <= dlugosc; i++) {'."\n";
  41. echo ' document.add.catb.options[i] = new Option(cat'.$cat['ubrania_category_id'].'[i]);'."\n";
  42. echo ' document.add.catb.options[i].value = cat_id'.$cat['ubrania_category_id'].'[i];'."\n";
  43. echo ' }'."\n";
  44. echo ' var dlugosc = prod'.$cat['ubrania_category_id'].'.length-1;'."\n";
  45. echo ' document.add.elements.producent.options.length = prod'.$cat['ubrania_category_id'].'.length;'."\n";
  46. echo ' for (var i=0; i <= dlugosc; i++) {'."\n";
  47. echo ' document.add.producent.options[i] = new Option(prod'.$cat['ubrania_category_id'].'[i]);'."\n";
  48. echo ' document.add.producent.options[i].value = prod_id'.$cat['ubrania_category_id'].'[i];'."\n";
  49. echo ' }'."\n";
  50. echo ' var dlugosc = size'.$cat['ubrania_category_id'].'.length-1;'."\n";
  51. echo ' document.add.elements.rozmiar.options.length = size'.$cat['ubrania_category_id'].'.length;'."\n";
  52. echo ' for (var i=0; i <= dlugosc; i++) {'."\n";
  53. echo ' document.add.rozmiar.options[i] = new Option(size'.$cat['ubrania_category_id'].'[i]);'."\n";
  54. echo ' document.add.rozmiar.options[i].value = size_id'.$cat['ubrania_category_id'].'[i];'."\n";
  55. echo ' }'."\n";
  56. echo '}'."\n";
  57. }
  58. ?>
  59. }

Czyli coś jakby było w okolicach $sql3.

Naprawdę nikt nie wie?


--------------------
9242594 - zaczynasz? jak mogę, to pomogę :D /podstawowa znajomość php :P /
"to pomoc zawsze będzie gestem pięknym, zaliczana do tych teraz rzadko spotykanych..."
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 04:06