webForumDet fria alternativet

Lite problem med en query

5 svar · 383 visningar · startad av Guldstrand

GuldstrandMedlem sedan juli 20041 271 inlägg
#1

Vad är det för problem med följande query:

SELECT id, name, added, category, search_text, confirmed 
	FROM images 
		WHERE search_text LIKE '%jul%' OR 
		search_text LIKE '%winter%' OR 
		search_text LIKE '%santa%' OR 
		search_text LIKE '%christmas%'  
		AND confirmed = 0 
	ORDER BY added/category DESC

..tydligen så verkar den "hoppa över" confirmed = 0.

Det jag försöker göra, är att visa alla bilder som innehåller något av orden ovan (jul, winter, santa, christmas), och som väntar på godkännande.

Fredde MannenMedlem sedan nov. 20014 054 inlägg
#2

Ändra till:

SELECT id, name, added, category, search_text, confirmed 
	FROM images 
		WHERE (search_text LIKE '%jul%' OR 
		search_text LIKE '%winter%' OR 
		search_text LIKE '%santa%' OR 
		search_text LIKE '%christmas%')  
		AND confirmed = 0 
	ORDER BY added/category DESC

Dvs att, where (det inom) and confirmed = 0 , skall vara sant. Tror jag funkar bättre.

GuldstrandMedlem sedan juli 20041 271 inlägg
#3

Nu fungerar det bättre.
Tack för det snabba svaret. :e

Jag funderar på att lägga alla sökord i en array istället, men hur löser jag det då? :r

GuldstrandMedlem sedan juli 20041 271 inlägg
#4

Hur löser jag det på samma sätt som ovan, fast då med en array?

$ord = array("jul", "winter", "vinter", "santa", "christmas"); 
$ord = implode(", ", $ord);
MickeA.comMedlem sedan feb. 20034 441 inlägg
#5

Du måste bygga sqlfrågan dynamiskt (med PHP i ditt fall). Loopia igenom din array och lägg till OR search_text LIKE '%" . $minarr[$i] . "%' för varje loop. På så sätt kan du ha en eller hundra OR, beroende på arrayen.

MickeA.comMedlem sedan feb. 20034 441 inlägg
#6

Helt otestad och behöver säkert justeras, men principen:

<?php
$minarr = array("ord1", "ord2", "ord3");
$condition = "";
foreach($minarr as $key => $value){
	$condition .= "field1 LIKE '%" . $value . "%' OR";
}
$condition = substr($condition, 0, -3); // Ta bort det sista 'OR'

$minsql = "SELECT "
		 ."field1, field2 "
		 ."FROM tabell "
		 ."WHERE ("
		 .$condition
		 .") "
		 ."ORDER BY field1 ASC";

mysql_query($minsql) or die(mysql_error());
?>
125 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
121 ms — hämta tråd, inlägg och bilagor (db)