Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> if w mysql_query
akurczyk
post
Post #1





Grupa: Zarejestrowani
Postów: 201
Pomógł: 5
Dołączył: 15.07.2008
Skąd: Kłodzko

Ostrzeżenie: (10%)
X----


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!!!

Ten post edytował akurczyk 28.08.2008, 21:45:23


--------------------
Pozdrawiam
Aleksander Kurczyk
Porady dla webmasterów
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
bim2
post
Post #2





Grupa: Zarejestrowani
Postów: 1 873
Pomógł: 152
Dołączył: 9.04.2006
Skąd: Berlin

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


  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ć


--------------------
Go to the top of the page
+Quote Post
likemandrake
post
Post #3





Grupa: Zarejestrowani
Postów: 175
Pomógł: 17
Dołączył: 23.06.2006

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


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

Ten post edytował likemandrake 28.08.2008, 22:15:02


--------------------
serwiswww.pl
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 21.08.2025 - 17:17