Just nu i M3-nätverket
Jump to content

Hjälp med upplägg av ifsats


mia_sr

Recommended Posts

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

 

 

 

Link to comment
Share on other sites

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

 

 

 

 

 

Link to comment
Share on other sites

  • 2 weeks later...

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

 

 

 

 

Link to comment
Share on other sites

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!

 

Link to comment
Share on other sites

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

 

Link to comment
Share on other sites

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

 

Link to comment
Share on other sites

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]

Link to comment
Share on other sites

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

 

Link to comment
Share on other sites

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

 

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.



×
×
  • Create New...