Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Zależne listy rozwijane z wykorzystaniem jQuery
Forum PHP.pl > Forum > Przedszkole
plej
Mam mały problem z listami, otóż bo wybraniu kategorii ma mi się pokazać obok wybranie podkategorii dzięki jquery i wszystko działa z 1 kodem a jak próbuje z bazy danych ( kod 2 ) to mi nie wychodzi.

1 kod ( prawidłowy )
  1. <?php
  2. if(!empty($_GET['id'])) {
  3. $id = $_GET['id'];
  4. switch($id) {
  5. case 1:
  6. $tab[] = array(
  7. '11'=>'Kategoria 1.1',
  8. '12'=>'Kategoria 1.2',
  9. '13'=>'Kategoria 1.3'
  10. );
  11. echo json_encode($tab);
  12. break;
  13. case 2:
  14. $tab[] = array(
  15. '21'=>'Kategoria 2.1',
  16. '22'=>'Kategoria 2.2',
  17. '23'=>'Kategoria 2.3',
  18. '24'=>'Kategoria 2.4'
  19. );
  20. echo json_encode($tab);
  21. break;
  22. case 3:
  23. $tab = array(
  24. '31'=>'Kategoria 3.1',
  25. '32'=>'Kategoria 3.2'
  26. );
  27. echo json_encode($tab);
  28. break;
  29. case 4:
  30. $tab = array(
  31. '41'=>'Kategoria 4.1',
  32. '42'=>'Kategoria 4.2',
  33. '43'=>'Kategoria 4.3'
  34. );
  35. echo json_encode($tab);
  36. break;
  37. default:
  38. $tab = array('0'=>'Brak');
  39. echo json_encode($tab);
  40. break;
  41. }
  42. }
  43.  
  44. ?>

Powyższy kod zwraca mi wynik w przeglądarce:
[{"11":"Kategoria 1.1","12":"Kategoria 1.2","13":"Kategoria 1.3"}][{"11":"Kategoria 1.1","12":"Kategoria 1.2","13":"Kategoria 1.3"}][{"11":"Kategoria 1.1","12":"Kategoria 1.2","13":"Kategoria 1.3"}]


kod 2 ( który próbuje zrobić )
  1. <?php
  2. include('db.php');
  3. if(!empty($_GET['id'])) {
  4. $id = $_GET['id'];
  5. $kategorie = mysql_query('SELECT id, name FROM pod_kat where id_kat = 10');
  6.  
  7. while ($dane = mysql_fetch_array($kategorie, MYSQL_ASSOC)){
  8.  
  9. $tab[] = array($dane['id'] => $dane['name']);
  10.  
  11. }
  12. echo json_encode($tab);
  13. }
  14. ?>

Wynik zwrócony:
[{"48":"Remonty i wyko\u0144czenia"},{"49":"Budowa"},{"50":"Wyposa\u017cenie wn\u0119trz"},{"51":"Instalacje i naprawy"},{"52":"Obs\u0142uga"},{"53":"Inne"}]



No i jak widać kod 1 zwraca mi inny wynik niż 2, a muszę osiągnąć taki sam wynik bo liste nie chce mi wyświetlić wklejam reszte kodów ze skryptu:

select.js
  1. $(document).ready(function() {
  2.  
  3. //przypisanie akcji wywołania dodatkowej listy do zdarzenia typu change
  4. $('#kategorie').live('change', function(){
  5. var id = $(this).val();
  6.  
  7. //adres url do pliku PHP z kodem generujÄ…cym dane w formacie JSON
  8. var url = 'select.php?id='+id;
  9.  
  10. //jeśli istnieje juş select-lista o id: podkategorie, to usuń ją
  11. if($('#podkategorie').length>0)
  12. $('#podkategorie').remove();
  13.  
  14. //metoda pobierajÄ…ca dane JSON z podanego adresu w zmiennej url
  15. $.getJSON(
  16. url,
  17. function(data){
  18.  
  19. //tworzymy nową, pustą listę select o id: podkategorie i ją dołączamy do formularza
  20. select = '<select id="podkategorie"></select>';
  21. $('#formularz fieldset').append(select);
  22. var lista = $('#podkategorie');
  23.  
  24. //ukrywamy listę. Potrzebne to będzie do uzyskania animacji pojawienia się elementu na stronie
  25. lista.hide();
  26.  
  27. //generowanie kolejnych opcji listy
  28. $.each(data, function(key, val){
  29. var option = $('<option/>');
  30. option.attr('value', key)
  31. .html(val)
  32. .appendTo(lista);
  33. });
  34.  
  35. //animacja pojawienia siÄ™ elementu na stronie
  36. lista.show('scale', 500);
  37. },
  38. 'json'
  39. );
  40. })
  41. })


i formularz:
  1. <form action="index.php" id="formularz" action="post">
  2. <legend>Kategorie</legend>
  3. <select id="kategorie">
  4. <option value="1">Kategoria 1</option>
  5. <option value="2">Kategoria 2</option>
  6. <option value="3">Kategoria 3</option>
  7. <option value="4">Kategoria 4</option>
  8. </select>
  9. </form>




Nie patrzcie na nazwy plików że tu jest inna itp. bo to akurat mam ok ale u siebie. Problem raczej leży przy pętli while.

Pozdrawiam.
Turson
Kod 2.
Nie
  1. $tab[] = array($dane['id'] => $dane['name']);

a
  1. $tab[$dane['id']] = $dane['name'];
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.