Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> niewypełnione pola formularza -> mysql
rav83
post
Post #1





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 13.02.2005

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


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?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 10)
sf
post
Post #2





Grupa: Zarejestrowani
Postów: 1 597
Pomógł: 30
Dołączył: 19.02.2003
Skąd: Tychy

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


if puste_zapytanie { sql = ... } else { sql ... } ? tongue.gif


--------------------
Zapraszam na mój php blog, tworzenie stron.
Go to the top of the page
+Quote Post
rav83
post
Post #3





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 13.02.2005

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


a jak jest prawie 10 pol formularza? to ile tych zapytan bedzie wtedy.. sad.gif
Go to the top of the page
+Quote Post
Kuziu
post
Post #4





Grupa: Zarejestrowani
Postów: 743
Pomógł: 0
Dołączył: 11.11.2003
Skąd: Toruń

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


  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

Ten post edytował Kuziu 15.02.2005, 23:44:00


--------------------
Słońce zachodzi ... kolejna noc nadchodzi ...
Go to the top of the page
+Quote Post
rav83
post
Post #5





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 13.02.2005

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


  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?).
Go to the top of the page
+Quote Post
Kuziu
post
Post #6





Grupa: Zarejestrowani
Postów: 743
Pomógł: 0
Dołączył: 11.11.2003
Skąd: Toruń

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


Cytat(rav83 @ 2005-02-16 01:05:33)
  1. <?php
  2. &#092;"pole1='%'\"
  3. ?>
co to oznacza?

Dopasowanie do kazdej wartośći


--------------------
Słońce zachodzi ... kolejna noc nadchodzi ...
Go to the top of the page
+Quote Post
Kocurro
post
Post #7





Grupa: Zarejestrowani
Postów: 461
Pomógł: 32
Dołączył: 17.09.2003
Skąd: Łódź

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


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
Go to the top of the page
+Quote Post
Kuziu
post
Post #8





Grupa: Zarejestrowani
Postów: 743
Pomógł: 0
Dołączył: 11.11.2003
Skąd: Toruń

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


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


--------------------
Słońce zachodzi ... kolejna noc nadchodzi ...
Go to the top of the page
+Quote Post
Kocurro
post
Post #9





Grupa: Zarejestrowani
Postów: 461
Pomógł: 32
Dołączył: 17.09.2003
Skąd: Łódź

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


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. ?>
Go to the top of the page
+Quote Post
rav83
post
Post #10





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 13.02.2005

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


co dokladnie robi ta funkcja?
  1. <?php
  2. $sql = implode( ' AND ', $sql);
  3. ?>


ostatnia linijka to jest zapytanie?
Go to the top of the page
+Quote Post
Kuziu
post
Post #11





Grupa: Zarejestrowani
Postów: 743
Pomógł: 0
Dołączył: 11.11.2003
Skąd: Toruń

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


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


--------------------
Słońce zachodzi ... kolejna noc nadchodzi ...
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 - 07:09