Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: If () w zapytaniu Do bazy mysql
Forum PHP.pl > Forum > Bazy danych
eltron
Witam mam problem i zupełnie nie wiem jak go rozwiazać:
  1. <?php
  2. $result = mysql_query("SELECT * FROM pacjent WHERE
  3. '". if($nazwisko != '')  
  4. {        `nazwisko` = mysql_escape_string($nazwisko)
  5. }."' ");
  6. ?>

wiem że to wygląda dziwnie i nie ma prawa działać ale nie wiem jak zrobić zapytanie. tu opisuje dogłębnie mój problem:

Ogólnie chodzi o to ze jeśli osoba chce cos znaleźć to jest 1 z 4 rubryk: Nazwisko data_urodzenia miejsce i lekarz.
i jeśli zapełni 2 rubryki np. lekarz i nazwisko to ma znaleźć tylko według tego co jest wypełnione i nie zwracając uwagi na puste pola. jeśli ktoś ma lepszy pomysł na tego tupu wyszukiwanie to proszę niech się nim podzieli bo jestem w kropce. bo mógłbym to zrobić dając if i do kazdego z nich inaczej zbudowane zapytanie ale wydaje mi sie to bez sensu. Lecz nie wykluczam tej ewentualnosci.
webasek
Jeśli chcesz już z ifem to tu masz konstrukcjie:

  1. <?php
  2. $result = mysql_query("SELECT * FROM pacjent WHERE
  3. '". ($nazwisko != '' ? "`nazwisko` = 'mysql_escape_string($nazwisko)'" : "");
  4. ?>


ae ja na Twoim miejscu poszukałbym coś w mysql nie wiem nie poewiem teraz ale może like byłoby dobre?
eltron
Cytat(webasek @ 15.11.2008, 08:22:42 ) *
Jeśli chcesz już z ifem to tu masz konstrukcjie:

  1. <?php
  2. $result = mysql_query(&#092;"SELECT * FROM pacjent WHERE
  3. '\". ($nazwisko != '' ? \"`nazwisko` = 'mysql_escape_string($nazwisko)&#092;" : \"\");
  4. ?>


ae ja na Twoim miejscu poszukałbym coś w mysql nie wiem nie poewiem teraz ale może like byłoby dobre?


Wielkie dzięki za odpowiedz lecz niestety nie działa.

Co do Like to już kombinowałem ale wywalało mi błąd przy uruchamianiu strony że zapytanie jest puste. ;/ może wie ktoś jak to rozwiązać? lub poszerzyć myśl webasek-a?

tu moje zapytanie z użyciem like.

  1. <?php
  2. $result = mysql_query("SELECT * FROM pacjent WHERE `nazwisko` LIKE "%"'".mysql_escape_string($nazwisko)."'"%" AND
  3. `lekarz` LIKE "%"'".mysql_escape_string($lekarz)."'"%" AND `dzienUr` LIKE "%"'".mysql_escape_string($dzienUr)."'"%" AND `miesiacUr` LIKE "%"'".mysql_escape_string($miesiacUr)."'"%" AND `rokUr` LIKE "%"'".mysql_escape_string($rokUr)."'"%" AND `miejsce` LIKE "%"'".mysql_escape_string($miejsce)."'"%"");
  4. ?>
melkorm
coś w tym stylu :
  1. <?php
  2. $zapytanie = '';
  3. if(!empty($nazwisko)) {
  4.    //tutaj filtrowanie zmiennej
  5.    $zapytanie .= " AND naziwsko = '$naziwsko' "; // mozesz dac tu oczywiscie LIKE itp
  6. }
  7. if(!empty //.... i tak dalej z każdą zmienną
  8.  
  9. // a zapytanie :
  10.  
  11. mysql_query("SELECT * FROM WHERE 1=1 $zapytanie");
  12. ?>
eltron
wielkie dzięki wygląda na coś co zadziała ;] zaraz przetestuje a że chcę się czegoś nauczyć na przyszłość to mam pytanie:

w tym zapytaniu na końcu dałeś 1=1 żeby nie zwróciło ze zapytanie jest puste?
melkorm
Cytat
w tym zapytaniu na końcu dałeś 1=1 żeby nie zwróciło ze zapytanie jest puste?


taka proteza by zapytanie przypadkiem nie wyglądało tak:

  1. WHERE AND ....


równie dobrze możesz sprawdzać czy zmienna zapytanie jest pusta i nei dawać za 1 razem AND smile.gif Pobaw się posprawdzaj a napewno dowiesz się czegoś nwoego tongue.gif
eltron
Wielkie dzięki minimalnie to przerobiłem ale wszystko działa. Poleciał pomógł dla ciebie ;] proszę moda o zamknięcie topicka bo problem został rozwiązany.
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.