webForumDet fria alternativet

sök

8 svar · 334 visningar · startad av slow

slowMedlem sedan apr. 2004148 inlägg
#1

Har gjort en liten sökfunktion vars jag använder denna SQL kod:

SELECT *
FROM skrivet_text
WHERE rubrik LIKE '%SearchString%' OR text LIKE '%SearchString%'
ORDER BY datum DESC

'%SearchString%' är bara hämtad från ett textfält. Sökningen funkar bra men jag försöker få den att man ska kunna välja vilka kategorier man vill söka i. Alltså jag har en tabell med kategorierna, tex så här:
id_kategori
namn_kategori
beskrivning_kategori

Också har jag som jag en tabell som innehåller texterna, typ så här:
id_text
kategori_id
text

Sedan tänkte jag att man skulle klicka i vilka kategorier man vill att den ska söka i genom vanliga 'Checkboxar' i ett formulär. Har satt dit så att dessa checkboxar skickar med aktuellt idnummer på kategorin iaf. Förstår ni hur jag menar? Men hur riktigt gör man det i SQL. Finns det någon "if-sats" man kan köra med? :D Typ om checkbox med värde 1 sök i text med kategori_id = 1....

slowMedlem sedan apr. 2004148 inlägg
#2
SELECT *
FROM tabellen
WHERE '%checedvalue1%' = tabellen.rad AND
 '%checedvalue%2' = tabellen.rad, 'rubrik LIKE
 '%SearchString%' OR text LIKE '%SearchString%'
ORDER BY datum DESC

Nått sådan fast något som fungerar? hehe..
FAAN vad kass jag är på det här.. :)

LarsGMedlem sedan dec. 200012 464 inlägg
#3

Döp checkboxarna till samma namn

SELECT *
FROM tabellen
WHERE tabellen.rad in (" & request.form("checkBox") & ")"
AND (rubrik LIKE '%SearchString%' 
OR text LIKE '%SearchString%')
ORDER BY datum DESC

Glöm inte parenteser när du blandar and och or i where.

Erik JuhlinMedlem sedan maj 200010 687 inlägg
#4

Welcome SQL-injection! :o

slowMedlem sedan apr. 2004148 inlägg
#5

Ändrade om lite så det skulle bli lite enklare för mig.. :)
Så nu kan man bara söka i en kategori år gången.. :)

SELECT *
FROM skrivet_text
WHERE skrivet_text.kat_id = '%checkbox%' AND 
rubrik LIKE '%SearchString%' OR text LIKE '%SearchString%'
ORDER BY datum DESC

Men när jag kör med denna så struntar den vilket idnummer texten tillhör utan visar alla texter oavsett.
Provade att använda IN istället för = i denna (WHERE skrivet_text.kat_id IN '%checkbox%' ) Men då får jag error..finns det något annat jag kan använda?

LarsGMedlem sedan dec. 200012 464 inlägg
#6

Glöm inte parenteser när du blandar and och or i where.

slowMedlem sedan apr. 2004148 inlägg
#7

Jag lyckas inte med parenteserna! :(

SELECT *
FROM skrivet_text
WHERE '%katid%' = ('skrivet_text.kat_id') AND  
(rubrik LIKE '%SearchString%' OR text LIKE '%SearchString%')
ORDER BY datum DESC

Vad gör jag för fel?

@ndersMedlem sedan juni 200032 969 inlägg
#8

Vad vill du ha för resultat av det där? Är katid en variabel i ASP eller PHP? Då får du konkatenera in den på lämpligt sätt. För ASP (som är det jag kan):

SELECT *
FROM skrivet_text
WHERE skrivet_text.kat_id = " & katid & " AND  
(rubrik LIKE '%SearchString%' OR text LIKE '%SearchString%')
ORDER BY datum DESC

Är det PHP kan du säkert konkatenera in det själv.

slowMedlem sedan apr. 2004148 inlägg
#9

aaaah, naturligtvis..är man kas så är man.. :)
det var php och nu är det fixat....

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