webForumDet fria alternativet

Ganska krånglig sökfunktionsfråga ?

Databaser & SQL

2 svar · 224 visningar · startad av Pellefant

Medlem sedan maj 20023 372 inlägg
Frågan#1

Hej! :)

Jag har denna:

$Query="SELECT * FROM companies WHERE name LIKE '%companyname%' OR category LIKE '$category' OR town LIKE '$town'";

Mitt problem är att om man väljer "alla" kategorier(variabel: allcats) och/eller alla städer( variabel alltowns), hur man kan få in det i mySQL frågan?

Stort tack på förhand.

På sidan innan så har jag detta:

all categories(drop down meny)
bakeries
plumbers
etc

all towns( drop down meny)
London
Newcastle
etc

Companyname:(textfield)

Medlem sedan juni 200032 967 inlägg
#2

Varför använder du LIKE när du gör exakta jämförelser (dvs utan wildcard)? Använd =.

if ($category=="allcats")
    $strCategory = "";
else
    $strCategory = "OR category = '" . $category . "'";
if ($town=="alltowns")
    $strTown = "";
else
    $strTown = "OR town = '" . $town . "'";

$Query="SELECT * FROM companies WHERE name LIKE '%" . $companyname . "%' " . $strCategory . $strTown;

Nu kan jag inte php, men du förstår på ett ungefär vad jag menar hoppas jag.

(edit: jag gillar att konkatenera ordentligt. ;) )

Mvh

Medlem sedan maj 20023 372 inlägg
#3

Fick köra med AND istället för OR, funkar bra nu. Tack för hjälpen.

if ($category=="allcats")  
    $strCategory = "";  
else  
    $strCategory = " AND category = '" . $category . "' ";  

if ($town=="alltowns")  
    $strTown = "";  
else  
    $strTown = " AND town = '" . $town . "' ";  

$Query="SELECT * FROM companies WHERE name LIKE '%" . $companyname . "%' " . $strCategory . $strTown;
492 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
353 ms — deklarationer (db)
0 ms — hämta statistik (cache)
136 ms — hämta tråd, inlägg och bilagor (db)
352 ms — ändringar (db)