webForumDet fria alternativet

WHERE som matchar allt?

3 svar · 330 visningar · startad av mmmMange

mmmMangeMedlem sedan jan. 2005110 inlägg
#1

Har en sida med en meny (dropdownlista) där man väljer årtal och månader. Sedan görs en sökning i en databas, där jag matchar valt år och månad mot respektive kolumn i databasen.

Såhär ser WHERE-delen i min SQL-sträng ut:
WHERE costs.year='{$_SESSION['year']}' AND costs.month='{$_SESSION['month']}'

Grejen är att jag nu har lagt till "Alla år" och "Alla månader" -alternativ i menyn. Kan man på något smidigt sätt göra så att WHERE-satsen matchar alla årtal och alla månader, utan att behöva skriva extra kod för att kolla ifall användaren valt "Alla år" eller "Alla månader"? Typ nåt i stil med

<OPTION VALUE="*">Alla år</OPTION>

Finns det nåt sånt "magiskt" WHERE-värde? För LIKE vet jag att man kan använda %, men finns det nåt liknande för WHERE?

GislavedMedlem sedan nov. 20041 740 inlägg
#2

Om du tar bort WHERE helt borde det väl fungera?

utan att behöva skriva extra kod för att kolla ifall användaren valt "Alla år" eller "Alla månader"?

Den koden är väl inte speciellt jobbig att skriva? :)

K@llenMedlem sedan mars 20032 667 inlägg
#3

Varför inte bara utelämna WHERE-klausulen om använderen väljer alla år?

Bygg din sql-fråga dynamiskt beroende på vad användaren väljer ...

mmmMangeMedlem sedan jan. 2005110 inlägg
#4

K@llen skrev:

Varför inte bara utelämna WHERE-klausulen om använderen väljer alla år?

Jo, såhär har jag det nu, och det fungerar ju bra.

$sql = "SELECT * FROM costs";
$sql .= ($_SESSION['year'] == 'all') ? '' : "WHERE year='{$_SESSION['year']}";

Men det hade ju varit smidigt om det finns nåt specialvärde man hade kunnat använda för att returnera alla rader, utan att behöva kolla ifall användaren har valt "Alla år"....

136 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)