Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: SELECT IF() ....
Forum PHP.pl > Forum > Bazy danych > MySQL
billy235
Witam
Mam taki problem otórz chcę zrobić wyszykiwarkę do mojej bazy danych.
Mam formulaż w którym urzydkownik moze wprowadzić w poszczególnych polach różne dane.
Potem jest zapytanie postaci:
SELECT pole1, pole2, pole3 FROM tabela WHERE pole2=$zmienna1_z_formluaza AND pole3=$zmienna2_z_formulaza

Pojawia się tutaj problem ponieważ jeśli użydkownik wyśle formulaż nie kompletny czyli np nie wypełni jednego z pul formulaża to jedna ze zmiennych $zmiennaX_z_formulaza będzei pusta. W wyniku wykonania Powyższego selecta otrzymamy zbiór pusty (ponieważ każdo z pul w tabeli jest zawira wartość).

Chceł zrobić taie zapytanie które w przypadku gdy jedna ze zmiennych typu: zmiennaX_z_formulaza jest pusta to nie jest ona wogle brana pod uwagę z zapytaniu scelecta.

Próbowałem coś takiego:
SELECT pole1, pole2, pole3 FROM tabela WHERE pole1=cos IF($zmienna1_z_formluaza, "AND pole2=$zmienna1_z_formluaza ", "") IF($zmienna2_z_formluaza, "AND pole3=$zmienna2_z_formluaza ", "")

Ale to jakoś mi nie działa chyba żle zasowsowałem funkcję IF() Czy ktoś zna jakiś lepszy działąjący sposób??
AxZx
ale byki sadzisz, uzywaj FF, tam masz poprawianie bledow w tresci z formularza

formularz
pól
urzytkownik


zrob sprawdzanie po stronie PHP
jezeli jakies pole jest nie puste to wtedy dodaj do zapytania
"AND pole=$zmienna"
prgTW
Na przyklad tak:
  1. <?php
  2. // najlpierw podlaczenie do bazy mysql_connect, zeby real_escape_string dzialalo p
    oprawnie ponizej
  3. $zmienna2 = !empty($_POST['zmienna2']) && is_string($_POST['zmienna2']) ? mysql_real_escape_string($_POST['zmienna2']) : null;
  4. // analogicznie inne zmienne stringowe
  5.  
  6. $query = mysql_query('
  7. select
  8. ...
  9. from
  10. ...
  11. where
  12. 1
  13.  ' . (!empty($zmienna2) ? 'and pole2='' . $zmienna2 . ''' : '') . '
  14.  ' . (!empty($zmienna3) ? 'and pole3='' . $zmienna3 . ''' : '') . '
  15. ');
  16. ?>
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.