| Autor | Zpráva | ||
|---|---|---|---|
| aaron Profil * |
#1 · Zasláno: 26. 9. 2009, 20:52:44
Zdravím
Měl bych ještě jeden dotaz. Jak na vyhledávání s mnoha parametry? např. http://www.czechcomputer.cz/product_search.jsp?doc=0DEE4ABD66EF2504C1256DE5007C99D2 Mám problém zejména vtom že dopředu nevím ani které ani kolik věcí se bude hledat. Jak "poskládat" dotaz pro databázi (mysql)? napadly mě dvě řešení - asi dost mizerné. dost neefektivní řešení - select * from tabulka where a like '$a%' and b like '$b%' atd. - nelíbí ze tam dávám všechny parametry ikdyž je potřeba jen jeden druhé řešení by bylo ve stylu skládání mysql dotazu něco jako if (isset($_post['a'])) {$a='a='.$_post['a'].' and'} if (isset($_post['b'])) {$b='b='.$_post['b'].' and'} a pak z toho nějak skládat dotaz - select * drom tabulka where $a $b atd - tohle se mi nelibí už vůbec předem díky za info jak na to. |
||
| Alphard Profil |
#2 · Zasláno: 26. 9. 2009, 20:57:23
Druhé řešení skládání dotazu je správné, jen je potřeba provést ho trochu kultivovaně. Používáte pro práci s databází nějaký pokročilejší layer, PDO, ...?
|
||
| Kajman_ Profil * |
#3 · Zasláno: 26. 9. 2009, 20:59:04
Většinou se to dělá přes to druhé řešení. Dynamicky sestavený dotaz podle zadaných parametrů hledání.
|
||
| aaron Profil * |
#4 · Zasláno: 26. 9. 2009, 21:13:06
Alphard,Kajman_
Díky Alphard jen je potřeba provést ho trochu kultivovaně jak by to šlo udělat alespoň trošku kultivovaně bez db layeru? stačí náznak. |
||
| WebDevelo Profil |
//Dej si položky formuláře do pole
$elements = array($_POST['velikost'], $_POST['barva'],..)
// zjisti si nazvy sloupcu v db = nazvy polozek
$keys = array_keys($elements);
$i = 0;
//A poté přes foreach skládej dotaz
foreach($elements as $ele)
{
if($ele[$keys[$i]] != '')
$query .= ' AND cars.'.$keys[$i].' = '.$ele[$keys[$i]];
$i++;
}Takhle nějak bych to řešil |
||
|
Časová prodleva: 16 let
|
|||
0