rav83
15.02.2005, 22:25:45
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?
if puste_zapytanie { sql = ... } else { sql ... } ?
rav83
15.02.2005, 23:05:02
a jak jest prawie 10 pol formularza? to ile tych zapytan bedzie wtedy..
Kuziu
15.02.2005, 23:41:45
<?php
$sql = \"SELECT * FROM table WHERE \";
if($pole1 == ''){$sql .= \"pole1='%'\"}else{$sql.=\"pole1='$pole1'\"}
.
.
.
?>
a jak masz je w tablicy to pętle zapuść ...
Blah nei chce misie myśleć
rav83
16.02.2005, 00:05:33
<?php
\"pole1='%'\"
?>
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
16.02.2005, 00:07:48
Cytat(rav83 @ 2005-02-16 01:05:33)
<?php
\"pole1='%'\"
?>
co to oznacza?
Dopasowanie do kazdej wartośći
Kocurro
16.02.2005, 12:11:14
polecam zrobić to tak:
<?
if ( isset( $_POST['pole1']) && ( $_POST['pole1'] != '')) { $sql[] = \"`pole1` = '$pole1'\";} if ( isset( $_POST['pole2']) && ( $_POST['pole1'] != '')) { $sql[] = \"`pole2` = '$pole2'\";} if ( isset( $_POST['pole3']) && ( $_POST['pole1'] != '')) { $sql[] = \"`pole3` = '$pole3'\";} if ( isset( $_POST['pole4']) && ( $_POST['pole1'] != '')) { $sql[] = \"`pole4` = '$pole4'\";} if ( isset( $_POST['pole5']) && ( $_POST['pole1'] != '')) { $sql[] = \"`pole5` = '$pole5'\";}
... itd ...
?>
wystarczy Ci to ? czy jeszcze bardziej uprościć

pozdrawiam
Kuziu
16.02.2005, 12:18:23
Prometeus ... a jak wszystkie pola będą puste to mu wywali błąd SQL'a ...
bo będzie
<?php
$sql='SELECT * FROM `cos` WHERE ';
?>
Kocurro
16.02.2005, 12:27:30
a ja faktycznie
bo on na początku coś pisał, że tam jeszcze dodaje...
oto poprawka:
<?
if ( isset( $_POST['pole1']) && ( $_POST['pole1'] != '')) { $sql[] = \"`pole1` = '$pole1'\";} if ( isset( $_POST['pole2']) && ( $_POST['pole1'] != '')) { $sql[] = \"`pole2` = '$pole2'\";} if ( isset( $_POST['pole3']) && ( $_POST['pole1'] != '')) { $sql[] = \"`pole3` = '$pole3'\";} if ( isset( $_POST['pole4']) && ( $_POST['pole1'] != '')) { $sql[] = \"`pole4` = '$pole4'\";} if ( isset( $_POST['pole5']) && ( $_POST['pole1'] != '')) { $sql[] = \"`pole5` = '$pole5'\";}
... itd ...
if ( $sql == '') { $sql = '1';}
?>
rav83
16.02.2005, 12:57:49
co dokladnie robi ta funkcja?
<?php
?>
ostatnia linijka to jest zapytanie?
Kuziu
16.02.2005, 13:05:24
Cytat(rav83 @ 2005-02-16 13:57:49)
co dokladnie robi ta funkcja?
<?php
?>
ostatnia linijka to jest zapytanie?
Zamienia tablicę w 1 zmienną, gdzie każdy element tablicy będzie od siebie oddzielony wartością ' AND '.
implode()