Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Zależne od siebie rozwijane listy, 3 listy po wyborze dwóch pierwszych pojawiają się opcje w trzeciej.
deus7
post 17.06.2012, 21:55:19
Post #1





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 13.11.2010
Skąd: Kraków

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


Witam.
Mam problem bo nie znam się za bardzo na js a muszę zrobić wyszukiwarkę z kikoma opcjami wyboru zależnymi od siebie.

Chodzi o to że mamy 3 listy rozwijane:
1 – kolor (zielony, czerwony, czarny … )
2 – materiał (wełna, bawełna, len …)
3 – gramatura ( …....... )

Po wybraniu opcji z dwóch pierwszych list skrypt powinien przekazywać te wybrane opcje np.: 1 – zielony; 2 – bawełna do pliku php (POST) który pobierze z bazy danych dane odpowiednie dla tych opcji w postaci tablicy (w tablicy już sobie sformatuję że będą to <option value=”one”>one</option>) i skrypt js pobierze tą tablice i wyświetli ją w 3 liście rozwijanej (jeżeli nie zostały jeszcze wybrane dwie pierwsze opcje lista jest nie aktywna ---)

Jeżeli by ktoś miał chwilkę wymyślić coś takiego to byłbym bardzo wdzięczny smile.gif)


Znalazłem coś taniego ale nie wiem jak pobrać dane z dwóch pul na raz po wyborze w drugim polu..
http://doman.art.pl/kursjs/kurs/jquery/jquery_ajax.html


--------------------
Chłodzenie komputera to podstawa - Chłodzenie wodne
Go to the top of the page
+Quote Post
kamil4u
post 18.06.2012, 17:49:03
Post #2





Grupa: Zarejestrowani
Postów: 2 350
Pomógł: 512
Dołączył: 4.01.2009
Skąd: Wrocław / Świdnica

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


Dobrze, ale z czym masz problem? Praktycznie wszystko masz napisane w linku, którym podałeś. Robisz tak:

- pod oba select-y podpinasz zdarzenie onchange, które wysyła żądanie POST do serwera przez AJAX. Te żądania to wartości z obu select-ów, nie ważne, który zmieniono
- W PHP odbierasz sobie te dane i swoim algorytmem wyznaczasz tablicę, która będzie zawierała informacje z trzeciego select-u
- Dane odbierasz i wysyłasz w taki sposób jak w linku, który podałeś
- gotowe

Napisz z czym masz konkretnie problem.

Cytat
dwóch pul na raz po wyborze w drugim polu..

http://www.sjp.pl/pul smile.gif


--------------------
Go to the top of the page
+Quote Post
deus7
post 19.06.2012, 20:59:14
Post #3





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 13.11.2010
Skąd: Kraków

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


Właśnie nie wiem jak zmodyfikować skrypt żeby dobrał się do wartości w kategoria2
  1. <select class="kategoria1">
  2. <option value="0">Wybierz...</option>
  3. <option value="Rzeczownik">Rzeczownik</option>
  4. <option value="Czasownik">Czasownik</option>
  5. <option value="Przymiotnik">Przymiotnik</option>
  6. </select>
  7.  
  8. <select class="kategoria2">
  9. <option value="0">Wybierz...</option>
  10. <option value="Pozytywny">Pozytywny</option>
  11. <option value="Neutralny">Neutralny</option>
  12. <option value="Negatywny">Negatywny</option>
  13. </select>
  14.  
  15.  
  16. <select class="kategoria3" disabled="disabled">
  17. <option value="0">---</option>


zmieniłem trochę kod js dodając: var zmienna2 = $('.kategoria2').val();

  1. <script type="text/javascript">
  2. $(document).ready(function() {
  3. $('.kategoria1').bind({
  4. 'change' : function() {
  5. var wartosc = $(this).find('option:selected').val(); //pobieramy wartość wybranego selekta
  6. var zmienna2 = $('.kategoria2').val();
  7.  
  8. if (wartosc!=0) { //jeżeli jest inna niż -1 (czyli jeżeli został wybrany model)
  9. $.ajax({
  10. type: "POST",
  11. url: "klasa-semantyczna.php",
  12. dataType : 'json',
  13. data: {
  14. gender : wartosc
  15. },
  16. success : function(json) {
  17. var $kategoria3 = $('.kategoria3');
  18. $kategoria3.attr('disabled',false); //aktywujemy 2 selekt
  19. $kategoria3.empty(); //czyscimy drugi selekt ze zdarzeń i optionów
  20.  
  21. for(i=0; i<json.length; i++) { //tworzymy optiony
  22. $kategoria3.append('<option value="'+json[i]['value']+'">'+json[i]['imie']+'</option>');
  23. }
  24.  
  25. //ustawiamy jako wybrany pierwszy option w selekcie 2
  26. $kategoria3.find('option').eq(0).attr('selected','selected');
  27. },
  28. error: function() {
  29. alert('wystąpił błąd :)');
  30. }
  31. })
  32. }
  33. }
  34. });
  35.  


--------------------
Chłodzenie komputera to podstawa - Chłodzenie wodne
Go to the top of the page
+Quote Post
kamil4u
post 19.06.2012, 21:48:26
Post #4





Grupa: Zarejestrowani
Postów: 2 350
Pomógł: 512
Dołączył: 4.01.2009
Skąd: Wrocław / Świdnica

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


Zrób to tak( zapisane pseudokodem ):
Kod
lista1.onchange = lista2.onchange = function(){
wartosc1 = lista1.wartosc;
wartosc2 = lista2.wartosc;

AJAX();
}


Czyli nie będziesz musiał pisać 2 razy tego samego kodu.

Co do problemu to: http://api.jquery.com/jQuery.ajax/ i Twój kod
Cytat
data: {
gender : wartosc
},
Wysyłasz tylko zmienną wartość, a musisz wysłać wartosc1 i wartosc2.

Poza tym nie kopiuj bezmyślnie gender=płeć - zmienne powinny być nazwane logicznie, nawet gdy to tylko przykład wink.gif

No i jeszcze musisz mieć sensowny plik "klasa-semantyczna.php"


--------------------
Go to the top of the page
+Quote Post
deus7
post 20.06.2012, 01:52:18
Post #5





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 13.11.2010
Skąd: Kraków

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


zrobiłem to tak:
  1. <script type="text/javascript">
  2. $(document).ready(function() {
  3. var kategoria1 = document.getElementById("kategoria1");
  4. var kategoria2 = document.getElementById("kategoria2");
  5. kategoria1.onchange = kategoria2.onchange = function(){
  6. if ((kategoria1==0) && (kategoria2==0)) {
  7. $.ajax({
  8. type: "POST",
  9. url: "klasa-semnatyczna.php",
  10. dataType: 'json',
  11. data: {
  12. kombinacja1: kategoria1,
  13. kombinacja2: kategoria2
  14. },
  15. success : function(json) {
  16. var $kategoria3 = $('.kategoria3');
  17. $kategoria3.attr('disabled',false);
  18. $kategoria3.empty();
  19.  
  20. for(i=0; i<json.length; i++) {
  21. $kategoria3.append('<option value="'+json[i]['value']+'">'+json[i]['imie']+'</option>');
  22. }
  23.  
  24. $kategoria3.find('option').eq(0).attr('selected','selected');
  25. },
  26. error: function() {
  27. alert('wystąpił błąd :)');
  28. }
  29. })
  30. }
  31. }
  32. });
  33.  
  34. </head>
  35. <form action="" method="POST">
  36.  
  37. <select id="kategoria1">
  38. <option value="0">Wybierz...</option>
  39. <option value="1">Rzeczownik</option>
  40. <option value="2">Czasownik</option>
  41. <option value="3">Przymiotnik</option>
  42. </select>
  43.  
  44. <select id="kategoria2">
  45. <option value="0">Wybierz...</option>
  46. <option value="1">Pozytywny</option>
  47. <option value="2">Neutralny</option>
  48. <option value="3">Negatywny</option>
  49. </select>
  50.  
  51. <select id="kategoria3" disabled="disabled">
  52. <option value="0">---</option>
  53. </select>
  54.  
  55. </form>

plik PHP:
  1. <?php
  2. $kategoria1 = $_POST['kategoria1'];
  3. $kategoria2 = $_POST['kategoria2'];
  4.  
  5. $ttestowa = Array();
  6.  
  7. $ttestowa['m'] = Array();
  8.  
  9. $ttestowa['m'][0] = Array('imie'=>'Bartek', 'value'=>'1');
  10. $ttestowa['m'][1] = Array('imie'=>'Bartek', 'value'=>'2');
  11. $ttestowa['m'][2] = Array('imie'=>'Darek', 'value'=>'3');
  12. $ttestowa['m'][3] = Array('imie'=>'Kamil', 'value'=>'4');
  13. $ttestowa['m'][4] = Array('imie'=>'Michał', 'value'=>'5');
  14.  
  15. echo json_encode($ttestowa['m']);
  16. ?>


i nic się nie dzieje po wybraniu pozycji z list rozwijanych
Go to the top of the page
+Quote Post
adrianozo
post 20.06.2012, 10:34:06
Post #6





Grupa: Zarejestrowani
Postów: 733
Pomógł: 4
Dołączył: 11.11.2009

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


Też kiedyś czegoś takiego potrzebowałem i jakoś wyskrobałem:

Kod
<select name="category" id="category">
        <option value="">Rodzaj:</option>
        <option value="1">Osłonki</option>
        <option value="2">Osłonki karo</option>
        <option value="3">Podstawki</option>
        <option value="4">Skrzynki</option>
        <option value="5">Podstawki pod skrzynkę</option>
        <option value="6">Muszelki</option>
        <option value="7">Donice</option>
        <option value="8">Donice Berta</option>
        <option value="9">Donice Kora</option>
        <option value="10">Podstawki Berta</option>
        <option value="11">Palmówki</option>
        <option value="12">Misy</option>
        <option value="13">Romby</option>
        <option value="14">Wkłady</option>
        <option value="15">Szpice</option>
        <option value="16">Gazony</option>
        <option value="17">Transparentne</option>
    </select>  
    <select name="sub_category" id="sub_category">
        <option value="">Produkt:</option>
    </select>
    <select name="sub_sub_category" id="sub_sub_category">
        <option value="">Kolor:</option>
    </select>


PHP:

  1. <?php
  2. $zap = mysql_query("SELECT * FROM tabela");
  3. $json = array();
  4. while($wiersz = mysql_fetch_array($zap))
  5. {
  6. if($_POST['type'] == $wiersz['type'])
  7. {
  8. $json[] = array(
  9. 'value' => ''.$wiersz['value'].'',
  10. 'text' => ''.$wiersz['nazwa'].''
  11. );
  12. }
  13. }
  14. echo json_encode($json);
  15. ?>


--------------------
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 Wersja Lo-Fi Aktualny czas: 19.04.2024 - 15:28