webForumDet fria alternativet

Ganska krånglig sökfunktionsfråga ?

Databaser & SQLur Databashanterare & SQL

2 svar · 224 visningar · startad av Pellefant

PellefantMedlem sedan maj 20023 372 inlägg
#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)

@ndersMedlem sedan juni 200032 969 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

PellefantMedlem 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;
131 ms totalt · 3 externa anrop · v20260731065814-full.29ac60f6
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)