webForumDet fria alternativet

Varför bangar min sökfunktion ur ?

PHP

3 svar · 280 visningar · startad av Fuel

Medlem sedan okt. 20001 285 inlägg
Frågan#1

Om jag skriver mer än 1 sökord bangar det ur.. ( Kan inte genomföra sökning! )

function show_products($thisCat)
{
    	
	if($_POST['action'] == "search" && !empty($_POST['sitem'])) {
		$_POST['sitem'] = strip_tags($_POST['sitem']);
        $sql = "SELECT * FROM fcms_shop_products ";
		$sokorden = explode(" ", $_POST['sitem']);
		foreach ($sokorden as $keyword)
		{
			$sql .= "WHERE title LIKE '%$keyword%' OR text LIKE '%$keyword%'";
		}
		$sql .= " ORDER BY id DESC";
		$fetchProds = mysql_query($sql) or die ("Kan inte genomföra sökning!");
	} else {	
        $fetchProds = mysql_query("SELECT * blahh...") or die ("Kan inte hämta artiklar!");
	}
Medlem sedan juni 200032 967 inlägg
#2

SQL-syntaxen blir fel.

Du ska ha ett WHERE, och sedan AND mellan villkoren. (om det är en AND-sökning vill säga.)

Du behöver då också gruppa dina villkor med parenteser eftersom du använder både AND och OR i WHERE-satsen.

Medlem sedan okt. 20001 285 inlägg
#3

I get the picture :r :e ..dags för lite siesta..

Medlem sedan okt. 20001 285 inlägg
#4

så...

$sql = "SELECT * FROM fcms_shop_products WHERE";
$sokorden = explode(" ", $_POST['sitem']);
		$rr = count($sokorden);
		$i = 1;
		foreach ($sokorden as $keyword)
		{
			$sql .= " title LIKE '%$keyword%' OR text LIKE '%$keyword%'";
			if ($rr != $i) { $sql .= " OR"; }
			$i++;
		}
254 ms totalt · 4 externa anrop · v20260731065814-full.e96017d9
123 ms — deklarationer (db)
0 ms — hämta statistik (cache)
126 ms — hämta tråd, inlägg och bilagor (db)
122 ms — ändringar (db)