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: 15 let
|
0