Just nu i M3-nätverket
Gå till innehåll

Hjälp med upplägg av ifsats


mia_sr

Rekommendera Poster

Har ställt samma fråga en gång tidigare men försöker igen med lite annan formulering. Behöver nog inte hjälp med den exakta koden utan mer upplägget på if-satsen.

 

Jag ska bolla mellan tre olika fält som kan vara eller inte vara ifyllda.

 

 

Fritext

Nyckelord

kategori

 

Det går bra när det bara var fritext och kategori för då lade jag bara upp det så att "om kategori inte är vald så ta det som står i fritextfältet och sök i alla databasfält. Annars - sök barä på dom rader som har samma kategori som den som är vald.

 

Men sen kom nyckelord och jag snurrar till det för mig.

 

Nu vill jag ju att följande ska ske..

 

Om det står något i fritextfältet så sök efter det i alla databasfält.

Om det står något i nyckelord så begränsa sökningen av fritext till att matcha rätt nycklord. Om det står något i nyckelord men inte i fritext så sök i nyckelordsfältet i databasen. Kolla samtidigt av om kategori är vald...

 

 

Förslag på upplägg?

 

/mia

 

 

 

Länk till kommentar
Dela på andra webbplatser

Tjena.

Kan du vara lite tydligare så kan jag hjälpa dig.

 

Menar du att:

 

A) Om fritextfältet innehåller text så sök i ex kolumn A, kolumn B och kulomn C med värdet för fritextfältet.

 

B) Om nyckelfältet innehåller text så sök i kolumn D med värdet för nyckelfältet

 

Vad händer ifall både fritextfältet och nyckelfältet innehåller text? Ska det då vara AND mellan A och B, dvs båda måste matcha?

 

Vad heter förresten fälten + tabellen?

 

/donRollo

 

 

 

 

 

Länk till kommentar
Dela på andra webbplatser

  • 2 veckor senare...

Hej!

 

Som det är nu fungerar koden, men bara vid sökning på fritext och kategori. (Alltså både på fälten var för sig men även en matchning om man söker på bägge)

 

Det som ska läggas till och det jag behöver hjälp med alltså villkoret att man även kan söka på nyckelord.

 

Man ska kunna söka på alla tre (fritext, kategori och nyckelord) för sig. Men det ska även matchas om man söker på till exempel nyckelord och fritext eller kanske bara nyckelord och kategori.

 

Fältet nyckelord ska söka i ett databasfält som heter "nyckel"

 

Om man inte valt någon kategori så får den värdet "nolla" och det är det som ifsatsen utgår ifrån.

 

 

 

if kat ="nolla" then 



SQL = "Select * from bilder where bildtext LIKE '%" &fritext& "%' and nyckel LIKE '%" &nyckelord& "%' or bildbeskrivning LIKE '%" &fritext& "%'" 



else

SQL = "Select * from bilder where kategori LIKE  '%" &kat& "%' and bildtext LIKE '%" &fritext& "%' or kategori LIKE '%" &kat& "%' and bildbeskrivning LIKE '%" &fritext& "%'"




end if

 

 

 

 

Länk till kommentar
Dela på andra webbplatser

Tycker jag känner igen desa funderingar och om jag inte minns fel så tipsade jag dig om att bygga en SELECT-fråga baserat på vad man valt att söka på.

 

Dock är jag inte helt med på vad du menar och jag är på väg att lägga mig nu. Här finns gott om kunskap för att ev hjälpa dig.

Hinner jag och orkar jag så kanske jag kollar in om på Eforum i veckan.

Tyvärr!

 

Lycka till!

 

Länk till kommentar
Dela på andra webbplatser

Tjena.

Du har fortfarande inte besvarat min fråga :)

Jag vill bara veta exakt hur du vill söka.

Svara på frågorna nedan plus om det är något annat så ska jag hjälpa dig.

 

Menar du att:

 

A) Om fritextfältet innehåller text så sök i ex kolumn A, kolumn B och kulomn C med värdet för fritextfältet.

 

B) Om nyckelfältet innehåller text så sök i kolumn D med värdet för nyckelfältet

 

Vad händer ifall både fritextfältet och nyckelfältet innehåller text? Ska det då vara AND mellan A och B, dvs båda måste matcha?

 

Vad heter förresten fälten + tabellen?

 

/donRollo

 

Länk till kommentar
Dela på andra webbplatser

Svaret på fråga A är ja, om fritextfältet innehåller text så sök i ett antal kolumner. Som det ser ut nu i den koden jag postat.

 

Svaret på fråga B är också ja, om det står text i nyckelordsfältet så sök i kolumn "nyckel" i databasen.

 

Om båda innehåller text så ska dom matchas. Om en kategori är vald så ska den också matchas.

 

Tabellen heter bilder och fälten i databasen heter bildtext, bildbeskrivning, kategori och nyckelord.

 

/mia

 

Länk till kommentar
Dela på andra webbplatser

Tjena.

Jag hade gjort enligt nedan:

response.buffer = true

dim strFriText, strNyckelText, intKategoriID
strFriText		= trim(request("friText"))
strNyckelText	= trim(request("nyckelText"))
intKategoriID	= int(request("kategoriID"))

if isNULL(strFriText) then
	strFriText = ""
end if
if isNULL(strFriText) then
	strFriText = ""
end if
if len(intKategoriID) = 0 then
	intKategoriID = 0
end if
if isNULL(intKategoriID) then
	intKategoriID = 0
end if

dim intSearchType
if len(strFriText) <> 0 then
	if len(strNyckelText) <> 0 then
		' både fritext och nyckel
		intSearchType = 1
	else
		' bara fritext
		intSearchType = 2
	end if
else
	if len(strNyckelText) <> 0 then
		' bara nyckel
		intSearchType = 3
	end if
end if

dim sql, rs
sql = "SELECT * "
sql = sql & "FROM tblTestBilder "
sql = sql & "WHERE "
select case intSearchType
	case 1
		sql = sql & "("
		sql = sql & "("
		sql = sql & "bildtext LIKE '%"&strFriText&"%' "
		sql = sql & "OR "
		sql = sql & "bildbeskrivning LIKE '%"&strFriText&"%' "
		sql = sql & "OR "
		sql = sql & "nyckel LIKE '%"&strFriText&"%' "
		sql = sql & ")"
		sql = sql & "OR "
		sql = sql & "("
		sql = sql & "nyckel LIKE '%"&strNyckelText&"%' "
		sql = sql & ")"
		sql = sql & ") "
	case 2
		sql = sql & "("
		sql = sql & "bildtext LIKE '%"&strFriText&"%' "
		sql = sql & "OR "
		sql = sql & "bildbeskrivning LIKE '%"&strFriText&"%' "
		sql = sql & "OR "
		sql = sql & "nyckel LIKE '%"&strFriText&"%' "
		sql = sql & ") "
	case 3
		sql = sql & "nyckel LIKE '%"&strNyckelText&"%' "
end select
if intKategoriID <> 0 then
	sql = sql & "AND "
	sql = sql & "("
	sql = sql & "kategori = "&intKategoriID&" "
	sql = sql & ")"
end if
if right(sql,6) = "WHERE " then
	sql = left(sql,len(sql)-6)
end if
response.write "<b>sql = </b>" &sql& "<br>"

 

KOD-taggar tillagda av moderator

 

[inlägget ändrat 2009-01-19 13:45:01 av Cluster]

Länk till kommentar
Dela på andra webbplatser

Kul att du tar dig tid att ge feedback på mitt svar.

Alltid trevlig när det man gör uppskattas.

Mycket tack.

Eller hur?

/donRollo

 

Länk till kommentar
Dela på andra webbplatser

Hej!

 

Jag har inte haft tid att testa än.

Den här delen är en av två delar som är kvar av projektet och jag har fått lov att testa och jobba med den andra delen.

 

Det är ett projekt som jag passar in när jag får tid över.

 

Jag återkommer...

 

/mia

 

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...