Autor | Zpráva | ||
---|---|---|---|
Dev!l_1415 Profil * |
#1 · Zasláno: 2. 5. 2011, 14:07:14
Dobrý den,
mám databázi uměleckých děl s 10ti údaji v tabulce (autor, název, ...). Na stránce mám 10 inputů pro specifičtější vyhledávání (podle autora, názvu díla, atd.. ). Dotazy mohou být křížové (uživatel zadá zároveň autora a naźev díla). Samozřejmě ostatní inputy zůstanou prázdné. Potřebuju sestrojit SELECT tak, aby mi vrátil všechny výsledky v databázi, které splňují vyhledávací kritéria. Můj kód: "SELECT * " . "FROM history " . "WHERE history_author = '$author' AND history_art_name = '$art_name' AND history_birth_date BETWEEN '$birth_date_from' AND '$birth_date_to' AND history_dimension = '$dimension' AND history_technology = '$technology' AND history_signature = '$signature' AND history_saved_as = '$saved_as' AND history_source = '$source'"; Tento kód mi ovšem nic nevrátí. Pokud zadám pouze jméno autora, nenajde to nic, protože ostatní proměnné obsahují prázdný řetězec. Jednoduše potřebuji dotaz, který bude ignorovat prázdné řetězce a v klauzuli WHERE uvažovat pouze proměnné, které jsou vyplněné.. Víte někdo jak na to? |
||
Taps Profil |
#2 · Zasláno: 2. 5. 2011, 14:23:11 · Upravil/a: Taps
Dev!l_1415:
musíš kontrolovat zda input byl vyplněn. Např. <? if(!empty($_POST['history_autor']){ $dotaz.=history_author='$author'; } ?> Jsou některé inputy povinné ? |
||
Dev!l_1415 Profil * |
#3 · Zasláno: 2. 5. 2011, 14:29:33
Taps:
Nene, žádný input není povinný... Čili pokud tomu dobře rozumím, u všech inputů zkontroluju, zda jsou vyplněny a sestrojím na základě toho dotaz..? |
||
Stano Profil |
#4 · Zasláno: 2. 5. 2011, 14:33:45 · Upravil/a: Stano
Dev!l_1415:
si ten where generuj: typujem že máš daky formulár: <input type="text" name="history_autor"> <input type="text" name="history_art_name"> atd <?php //a teraz prejdeš celé pole $_POST $sql = "SELECT * FROM history WHERE"; foreach($_POST as $key => $value){ if($value != ""){ $sql .= " $key = '$value' AND "; } } $sql .= "1=1"; //alebo odstráň to posledné AND ?> Je možné že existuje aj lepšie riešenie toto som nikdy nepoužil len mi to teraz napadlo ešte mi napadlo WHERE history_author like '%$author%' AND history_art_name like '%$art_name%' AND.... aj keď toto ti na druhú stranu môže vracať viac výsledkov ako by si chcel. ale skús |
||
Dev!l_1415 Profil * |
#5 · Zasláno: 2. 5. 2011, 14:52:53
Stano:
> ešte mi napadlo > > 1 > > WHERE history_author like '%$author%' AND history_art_name like '%$art_name%' AND.... > > > aj keď toto ti na druhú stranu môže vracať viac výsledkov ako by si chcel. ale skús Přesně tohle jsem zkoušel a vracelo to víc výsledků.. Teď zkouším foreach... |
||
Dev!l_1415 Profil * |
#6 · Zasláno: 2. 5. 2011, 16:30:25
Stano:
pomocí foreach šlape... :) Mnohokrát děkuji :)) |
||
Časová prodleva: 13 let
|
0