Autor Zpráva
aaron
Profil *
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
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 *
Většinou se to dělá přes to druhé řešení. Dynamicky sestavený dotaz podle zadaných parametrů hledání.
aaron
Profil *
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

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0