Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> $.ajax w jQuery
SpiJay
post
Post #1





Grupa: Zarejestrowani
Postów: 63
Pomógł: 2
Dołączył: 18.11.2009
Skąd: Grudziądz

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


Witam serdecznie,

zrobiłem takie oto filtrowanie: http://iam4u-server.home.pl/sklep/filter.php aczkolwiek nie działa to w taki sposób w jaki sobie to założyłem...
Pokazuje mi ładnie wysortowane wyniki z bazy, ale nie pamięta wszystkich wartości filtrowania, dla przykładu:

jeżeli wybiorę kolor np czerwony oraz smak np wytrawne, to wyszukuje mi wyłącznie rekordy z wartością "wytrawne", a kolor jest pomijany.
Wiem, że jest wina w skrypcie jQuery, ponieważ ręcznie wpisane wartości w skrypcie PHP działają poprawnie.

Ad1. Macie jakieś rady ?

Ad2. Ponadto chciałbym prosić o wyjaśnienie w jaki sposób wysłać wyniki sortowania z pliku function.php do pliku index.php ?

JS:
[JAVASCRIPT] pobierz, plaintext
  1. $(window).load(function() {
  2.  
  3. $(".filtr").click(function() {
  4.  
  5. var kolor = $(this).find('div.k').add('id');
  6. var smak = $(this).find('div.s').attr('id');
  7. var cena = $(this).find('div.c').attr('id');
  8. var region = $(this).find('div.r').attr('id');
  9. var kraj = $(this).find('div.p').attr('id');
  10.  
  11. $.ajax({
  12. url: 'function.php',
  13. data: {
  14. funkcja: 'szukaj',
  15. kolor: kolor,
  16. smak: smak,
  17. cena: cena,
  18. region: region,
  19. kraj: kraj,
  20. },
  21. type: 'post',
  22. success: function(output) {
  23. $('.jo').remove();
  24. $("#wyniki").append(output);
  25. return false;
  26. }
  27. });
  28. });
  29. });
[JAVASCRIPT] pobierz, plaintext


PHP:
  1. // Ajaxowe wyszukiwanie win
  2. if(isset($_POST['funkcja']) && !empty($_POST['funkcja'])) {
  3. switch($_POST['funkcja'])
  4. {
  5. case 'szukaj':
  6. szukaj($_POST['kolor'], $_POST['smak'], $_POST['cena'], $_POST['region'], $_POST['kraj']);
  7. break;
  8. }
  9. }
  10.  
  11. function szukaj($kolor, $smak, $cena, $region, $kraj) {
  12. $qwerty = "SELECT * FROM `wina` WHERE
  13. kolor LIKE '%".$kolor."%'
  14. AND smak LIKE '%".$smak."%'
  15. AND cena_handlowa LIKE '%".$cena."%'
  16. AND region LIKE '%".$region."%'
  17. AND kraj LIKE '%".$kraj."%'
  18. ORDER by id";
  19. $sql = mysql_query($qwerty);
  20. while($id = mysql_fetch_assoc($sql)) {
  21. echo '
  22. <div class="jo" style="background: #aaa; margin-bottom: 5px;">
  23. '.$id['id'].' |
  24. '.$id['nazwa'].' |
  25. '.$id['region'].' |
  26. '.$id['kraj'].' |
  27. '.$id['smak'].' |
  28. '.$id['kolor'].' |
  29. '.$id['cena_handlowa'].' |
  30. '.$id['zdj_mini'].' |
  31. '.$id['zdj_duze'].'
  32. </div>
  33. ';
  34. }
  35. }


HTML:
  1. <div id="filtr-body">
  2. <div id="filtr-kolor">
  3. <span class="filtr-name">Kolor</span>
  4. <div class="filtr"><div class="k" id="cze"><img src="images/wina-i.png" /> Czerwone</div></div>
  5. <div class="filtr"><div class="k" id="bia"><img src="images/wina-i.png" /> Białe</div></div>
  6. <div class="filtr"><div class="k" id="roz"><img src="images/wina-i.png" /> Różowe</div></div>
  7. </div>
  8. <div id="filtr-cena">
  9. <span class="filtr-name">Cena</span>
  10. <div class="filtr"><div class="c" id="1"><img src="images/wina-i.png" /> do 50zł</div></div>
  11. <div class="filtr"><div class="c" id="2"><img src="images/wina-i.png" /> 50zł - 100zł</div></div>
  12. <div class="filtr"><div class="c" id="3"><img src="images/wina-i.png" /> ponad 100zł</div></div>
  13. </div>
  14. <div id="filtr-smak">
  15. <span class="filtr-name">Smak</span>
  16. <div class="filtr"><div class="s" id="slo"><img src="images/wina-i.png" /> Słodkie</div></div>
  17. <div class="filtr"><div class="s" id="wyt"><img src="images/wina-i.png" /> Wytrawne</div></div>
  18. <div class="filtr"><div class="s" id="mus"><img src="images/wina-i.png" /> Musujące</div></div>
  19. </div>
  20. <div id="filtr-kontynent">
  21. <span class="filtr-name">Region</span>
  22. <div class="filtr ameryka"><div class="r" id="ame"><img src="images/wina-i.png" /> Ameryka</div></div>
  23. <div class="filtr europa"><div class="r" id="eur"><img src="images/wina-i.png" /> Europa</div></div>
  24. </div>
  25. <div id="filtr-panstwa">
  26. <span class="filtr-name">Kraj</span>
  27. <div class="filtr ameryka"><div class="p" id="arg"><img src="images/wina-i.png" /> Argentyna</div></div>
  28. <div class="filtr ameryka"><div class="p" id="chi"><img src="images/wina-i.png" /> Chile</div></div>
  29. <div class="filtr ameryka"><div class="p" id="bra"><img src="images/wina-i.png" /> Brazylia</div></div>
  30.  
  31. <div class="filtr europa"><div class="p" id="fra"><img src="images/wina-i.png" /> Francja</div></div>
  32. <div class="filtr europa"><div class="p" id="wlo"><img src="images/wina-i.png" /> Włochy</div></div>
  33. <div class="filtr europa"><div class="p" id="his"><img src="images/wina-i.png" /> Hiszpania</div></div>
  34. </div>
  35. <div id="filtr-result">Znaleziono wyników: <b>4178</b></div>
  36.  
  37. <div id="wyniki" style="clear: both; float: none;"></div>


Pozdrawiam !
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
mortus
post
Post #2





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

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


Mnie zastanawia, dlaczego używasz do tego div-ów, a nie formularza (ładne formularze można uzyskać za pomocą CSS'a lub pluginów do jQuery)? Niemniej, każdy kliknięty element powinien być w jakiś sposób "oznaczony" (np. dodatkową klasą selected, przy czym zauważ, że pola typu checkbox lub radio już taką "właściwość" posiadają (te zaznaczone)). Można by się zastanowić nad użyciem jQuery UI Selectable. W Twoim przykładzie wybrać mogę tylko jedną z opcji koloru, smaku, ceny itd., co nie jest zbyt słusznym rozwiązaniem, jeśli bierzemy pod uwagę potrzeby potencjalnego użytkownika końcowego (być może klient będzie chciał zarówno białe, jak i różowe wino za które może zapłacić od 99 - 159 zł). Elementy HTML, które posiadają id powinny być elementami "istotnymi", czyli takimi, które dokładnie określają czego dokument HTML i jego treść w tym danym miejscu dotyczy. Chyba nadużywasz id-ów, co może mieć negatywne konsekwencje choćby w kwestii pozycjonowania strony.

Jeśli chodzi o PHP to funkcja szukaj jest źle zorganizowana. Pamiętaj, że skrypt wywoływany jest wraz z każdym kliknięciem/zaznaczeniem elementu, co oznacza, że nie wszystkie parametry w każdym kolejnym wywołaniu funkcji szukaj będą dostępne (ewentualnie będą puste - NULL). Funkcja szukaj również (to o czym pisałem w kwestii zaznaczania wybranych właściwości) nie uwzględnia możliwości wyszukiwania według dwóch i większej liczby wartości parametru np. win w dwóch/trzech/itd. różnych kolorach.

Dane zwracaj w takiej formie, która Ci odpowiada. Ja użyłbym json-a i zwróciłbym tylko i wyłącznie dane pobrane z bazy w postaci tablicy, niemniej nic nie stoi na przeszkodzie, aby zwracać HTML.
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 6.10.2025 - 23:55