Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: niewypełnione pola formularza -> mysql
Forum PHP.pl > Forum > PHP
rav83
jest taki problem:
user przy wypelnianiu formularza, pole TYP: "1 lub 2" zostawia puste - ma taką mozliwosc. W SELECT mam warunek WHERE oferta=1 AND TYP=$zmienna.
Jesli jest tak jak wyzej, user pole' TYP' zostawi puste, to w bazie beda szukane rekordy o TYP=' '. W zwiazku z tym ze takich rekordow nie ma nie bede mial nic w wynikach wyszukiwania. A jesli user NIE wypelni pola TYP (zostawi puste) to chcialbym zeby listowala sie cala tabela ze wszystkimi mozliwymi TYPami. Jak to zrobic?
sf
if puste_zapytanie { sql = ... } else { sql ... } ? tongue.gif
rav83
a jak jest prawie 10 pol formularza? to ile tych zapytan bedzie wtedy.. sad.gif
Kuziu
  1. <?php
  2.  
  3. $sql = &#092;"SELECT * FROM table WHERE \";
  4. if($pole1 == ''){$sql .= &#092;"pole1='%'\"}else{$sql.=\"pole1='$pole1'\"}
  5. .
  6. .
  7. .
  8.  
  9. ?>


a jak masz je w tablicy to pętle zapuść ...

Blah nei chce misie myśleć biggrin.gif
rav83
  1. <?php
  2. &#092;"pole1='%'\"
  3. ?>
co to oznacza?
zalozmy ze wpisze wszystkie zmienne z formularza do tablicy, wtedy przelatuje tablice petla i wyszukuje wszystkie pola =' ' (tj. NULL? jaka wartosc maja niewypelnione pola formularza?).
Kuziu
Cytat(rav83 @ 2005-02-16 01:05:33)
  1. <?php
  2. &#092;"pole1='%'\"
  3. ?>
co to oznacza?

Dopasowanie do kazdej wartośći
Kocurro
polecam zrobić to tak:

  1. <?
  2.  
  3. $sql = array();
  4. if ( isset( $_POST['pole1']) && ( $_POST['pole1'] != '')) { $sql[] = &#092;"`pole1` = '$pole1'\";}
  5. if ( isset( $_POST['pole2']) && ( $_POST['pole1'] != '')) { $sql[] = &#092;"`pole2` = '$pole2'\";}
  6. if ( isset( $_POST['pole3']) && ( $_POST['pole1'] != '')) { $sql[] = &#092;"`pole3` = '$pole3'\";}
  7. if ( isset( $_POST['pole4']) && ( $_POST['pole1'] != '')) { $sql[] = &#092;"`pole4` = '$pole4'\";}
  8. if ( isset( $_POST['pole5']) && ( $_POST['pole1'] != '')) { $sql[] = &#092;"`pole5` = '$pole5'\";}
  9.  
  10. ... itd ...
  11.  
  12. $sql = implode( ' AND ', $sql);
  13.  
  14. mysql_query( 'SELECT * FROM `cos` WHERE ' . $sql);
  15. ?>


wystarczy Ci to ? czy jeszcze bardziej uprościć questionmark.gif smile.gif

pozdrawiam
Kuziu
Prometeus ... a jak wszystkie pola będą puste to mu wywali błąd SQL'a ...

bo będzie
  1. <?php
  2. $sql='SELECT * FROM `cos` WHERE ';
  3. ?>
Kocurro
a ja faktycznie smile.gif

bo on na początku coś pisał, że tam jeszcze dodaje...

oto poprawka:

  1. <?
  2.  
  3. $sql = array();
  4. if ( isset( $_POST['pole1']) && ( $_POST['pole1'] != '')) { $sql[] = &#092;"`pole1` = '$pole1'\";}
  5. if ( isset( $_POST['pole2']) && ( $_POST['pole1'] != '')) { $sql[] = &#092;"`pole2` = '$pole2'\";}
  6. if ( isset( $_POST['pole3']) && ( $_POST['pole1'] != '')) { $sql[] = &#092;"`pole3` = '$pole3'\";}
  7. if ( isset( $_POST['pole4']) && ( $_POST['pole1'] != '')) { $sql[] = &#092;"`pole4` = '$pole4'\";}
  8. if ( isset( $_POST['pole5']) && ( $_POST['pole1'] != '')) { $sql[] = &#092;"`pole5` = '$pole5'\";}
  9.  
  10. ... itd ...
  11.  
  12. $sql = implode( ' AND ', $sql);
  13.  
  14. if ( $sql == '') { $sql = '1';}
  15.  
  16. mysql_query( 'SELECT * FROM `cos` WHERE ' . $sql);
  17. ?>
rav83
co dokladnie robi ta funkcja?
  1. <?php
  2. $sql = implode( ' AND ', $sql);
  3. ?>


ostatnia linijka to jest zapytanie?
Kuziu
Cytat(rav83 @ 2005-02-16 13:57:49)
co dokladnie robi ta funkcja?
  1. <?php
  2. $sql = implode( ' AND ', $sql);
  3. ?>


ostatnia linijka to jest zapytanie?

Zamienia tablicę w 1 zmienną, gdzie każdy element tablicy będzie od siebie oddzielony wartością ' AND '.

implode()
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.