Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: if w mysql_query
Forum PHP.pl > Forum > PHP
akurczyk
Mam taką linijkę kodu:
  1. <?php
  2. $wykonaj_zapytanie = mysql_query("SELECT * FROM porady WHERE 1=1 ".if(isset($_GET['jezyk'])) {." AND jezyk='".addslashes($_GET['jezyk'])."'}.if(isset($_GET['fraza'])) {." AND MATCH(tytul, tresc) AGAINST('".addslashes($_GET['fraza'])."')&#092;".if(isset($_GET['strona'] && is_numeric($_GET['strona']))." LIMIT \"($_GET['strona']-1)*50.",50.".} else {." LIMIT 0,50".});
  3. ?>

Jak zrobić aby ify w tym kodzie zaczęły działać questionmark.gif
Chodzi mi oto że gdyby użytkownik nie podał języka, frazy lub numeru strony (w adresie) wyniki miały by się wyświetlić.
Proszę o pomoc!!!
bim2
  1. <?php
  2. $wykonaj_zapytanie = mysql_query("SELECT * FROM porady WHERE 1=1 ".(isset($_GET['jezyk'])?" AND jezyk='".addslashes($_GET['jezyk']):"")."".(isset($_GET['fraza'])?" AND MATCH(tytul, tresc) AGAINST('".addslashes($_GET['fraza'])."')":"").((isset($_GET['strona']) && is_numeric($_GET['strona']))?" LIMIT \"($_GET['strona']-1)*50}":" LIMIT 0,50".));
  3. ?>
pomieszałeś, ale powinno chodzić
likemandrake
Hmmm, wg mnie trochę zła praktyka programistyczna, to jest jak wrzucenie wszystkich śmieci do jednego worka.

Na mój gust to powinno wyglądać mniej więcej tak:

  1. <?php
  2. $iOffset = 0;
  3. $iLimit = 50;
  4. $aWhereStmt = array();
  5. $sQuery = 'SELECT * FROM porady';
  6. if(!empty($_GET['jezyk'])) {
  7. $aWhereStmt[] = "jezyk = '" . mysql_real_escape_string($_GET['jezyk']) . "'";
  8. }
  9. if(!empty($_GET['fraza'])) {
  10. $aWhereStmt[] = "MATCH(tytul, tresc) AGAINST '" . mysql_real_escape_string($_GET['fraza']) . "'";
  11. }
  12. if(sizeof($aWhereStmt) > 0) {
  13. $sQuery .= ' WHERE ' . join(' AND ', $aWhereStmt);
  14. }
  15. if(ctype_digit($_GET['strona']) && $_GET['strona'] > 0) {
  16. $iOffset = ($_GET['strona'] - 1) * $iLimit;
  17. }
  18. $sQuery .= " LIMIT $iOffset, $iLimit;";
  19. ?>


Kod pisałem na czysto, bez sprawdzania, więc nie gwarantuję, że działa poprawnie.

Po za tym do obsługi bazy danych proponuję użyć PDO, dla PHP > 5, oprócz tego powinna się pojawić weryfikacja, czy przypadkiem nie podano numeru strony spoza zakresu dostępnych do wyświetlenia danych (choć nie jest to najważniejsze).

Pozdrawiam
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.