Pomoc - Szukaj - U¿ytkownicy - Kalendarz
Pe³na wersja: [php][mysql] Problem z warunkami w wyszukiwaniu
Forum PHP.pl > Forum > Przedszkole
gojira
Witam
otoz mam taki problem, ze przy zaznaczeniu checkboxa i ustaleniu pzredzialu ceny od do, wyszukuje mi ladnie, jednak gdy zaznacze wiecej jak jeden chechkbox, to warunek ceny juz nie dziala.
przy checkbox: Kuchnia cena :od200 do 1000 = jeden produkt zgadzajacy sie
gdy checkbox: Kuchnia i TV na przyklad w cena ohmy.gifd 200 do 1000 = powinny byc dwa produkty, a tu mi wywala wszystkie z zaznaczonych checkbocow
  1. <?php
  2. $where="";
  3.  
  4. if (isset($_GET['Nazwa'])){
  5.  $where="$where `Nazwa` LIKE '%{$_GET['Nazwa']}%' AND";
  6.  }
  7.  if (isset($_GET['Producent'])){
  8.  $where="$where `Producent` LIKE '%{$_GET['Producent']}%' AND";
  9.  }
  10.  if (isset($_GET['Opis'])){
  11.  $where="$where `Opis` LIKE '%{$_GET['Opis']}%' AND";
  12.  }
  13. if (!empty($_GET['cenaod'])) {
  14. $where= "$where Cena >= '{$_GET['cenaod']}' AND";
  15. }
  16. if (!empty($_GET['cenado'])) {
  17. $where= "$where Cena <= '{$_GET['cenado']}' AND";
  18. }
  19. if ($_GET['Rozne']=="1"){
  20. $where="$where Rodzaj='Rozne' OR";
  21. }
  22. if ($_GET['TV']=="1"){
  23. $where="$where Rodzaj='TV' OR";
  24. }
  25. if ($_GET['Kuchnia']=="1"){
  26. $where="$where Rodzaj='Kuchnia' OR";
  27. }
  28. if ($_GET['Muzyka']=="1"){
  29. $where="$where Rodzaj='Muzyka' OR";
  30. }
  31.  
  32. $where = "WHERE $where";
  33. $where=substr($where,0,-3);
  34.  
  35. }
  36. $result = mysql_query ("$query $where") or die ("Zapytanie zakoñczone niepowodzeniem");
  37. ?>
Berkovits
Byc moze jest tu problem z kolejnoscia laczenia zdan przez operatory logiczne AND i OR. Byc moze trzebaby dolaczyc przed ostatnimi czterema sprawdzeniami znak ( i po nich znak ), ale tylko, gdy przynajmniej jedno jest wybrane z "rozne", "tv", itp. Ponadto, jest problem z operatorem logicznym, ktory pojawi sie na koncu tego zapytania. Np. zapytanie moze wygladac tak:
WHERE `Nazwa` LIKE '___' AND Rodzaj='Muzyka' OR

Tak byc nie moze.
gojira
z tym operatorem na koncu to ja wiem dlatego jest $where=substr($where,0,-3); ktory obcina ostatnie trzy pola. domyslam sie tez ze powinno to wygladac tak zapotanie: (cos OR cos OR cos) AND cos AND cos
problem w tym ze niebardzo wiem jak to teraz zrobic w moim przypadku nie rozwalajac wszystkiego nad czym pracowalem... innaczej mowiac, nie wiem jak napisac takie zapytanie bezblednie
Berkovits
Moze tak:
  1. <?php
  2. $where="";
  3.  
  4. if (isset($_GET['Nazwa'])){
  5.  $where="$where `Nazwa` LIKE '%{$_GET['Nazwa']}%' AND";
  6.  }
  7.  if (isset($_GET['Producent'])){
  8.  $where="$where `Producent` LIKE '%{$_GET['Producent']}%' AND";
  9.  }
  10.  if (isset($_GET['Opis'])){
  11.  $where="$where `Opis` LIKE '%{$_GET['Opis']}%' AND";
  12.  }
  13. if (!empty($_GET['cenaod'])) {
  14. $where= "$where Cena >= '{$_GET['cenaod']}' AND";
  15. }
  16. if (!empty($_GET['cenado'])) {
  17. $where= "$where Cena <= '{$_GET['cenado']}' AND";
  18. }
  19.  
  20. $where2='';
  21. if ($_GET['Rozne']=="1"){
  22. $where2.=" Rodzaj='Rozne' OR";
  23. }
  24. if ($_GET['TV']=="1"){
  25. $where2.="$ Rodzaj='TV' OR";
  26. }
  27. if ($_GET['Kuchnia']=="1"){
  28. $where2.=" Rodzaj='Kuchnia' OR";
  29. }
  30. if ($_GET['Muzyka']=="1"){
  31. $where2.=" Rodzaj='Muzyka' OR";
  32. }
  33. if($where2!='') 
  34. {
  35.   $where2=substr($where2,0,-2);
  36.   $where.='('.$where2.')';
  37. }
  38. else $where=substr($where,0,-3);
  39. $result = mysql_query ("$query $where") or die ("Zapytanie zakoñczone niepowodzeniem");
  40. ?>

Nie uzywalbym tak namietnie "" (juz u ciebie nie zmienialem) - chodzi o wydajnosc.
gojira
tym sposobem probowalem ale cos nie dzialalo, ale roziwazalem to inaczej tongue.gif

  1. <?php
  2. if ($_GET['Rozne']=="1" OR $_GET['TV']=="1" OR $_GET['Kuchnia']=="1" OR $_GET['Muzyka']=="1"){
  3. $where="$where (";
  4. if ($_GET['Rozne']=="1"){
  5. $where="$where Rodzaj='Rozne' OR";
  6. }
  7. if ($_GET['TV']=="1"){
  8. $where="$where Rodzaj='TV' OR";
  9. }
  10. if ($_GET['Kuchnia']=="1"){
  11. $where="$where Rodzaj='Kuchnia' OR";
  12. }
  13. if ($_GET['Muzyka']=="1"){
  14. $where="$where Rodzaj='Muzyka' OR";
  15. }
  16. $where=substr($where,0,-3); 
  17. $where="$where )";
  18. }else{
  19. $where=substr($where,0,-3);
  20. }
  21. ?>


w kazdym razie dzieki za pomoc
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.