webForumDet fria alternativet

Söka utan att fylla i alla fält

Databaser & SQL

17 svar · 898 visningar · startad av Lorelie

Medlem sedan juni 2005264 inlägg
Frågan#1

Hur gör man för att få fram ett sökresultat i ett formulär utan att behöva fylla i alla uppgifter? har två dropdownlistor som måste få ett värde för att resultat ska visas.

http://www.aramennoc.se vänster sida finns en drop down och i den längst ner under konstruktion för att se det aktuella formuläret

Koden ser ut såhär just nu : http://www.aspsidan.se/code/default.asp?c=11147

Medlem sedan dec. 20025 483 inlägg
#2

Jag ser endast en dropdownlist. Kan du beskriva lite närmare vad du vill göra?

Medlem sedan juni 2005264 inlägg
#3

Peter S skrev:

Jag ser endast en dropdownlist. Kan du beskriva lite närmare vad du vill göra?

Gick du in på "Under konstruktion" i den listan då?

Vill kunna lämna de två listorna utan att söka på något speciellt och ändå få fram resultat. Alla andra saker går att lämna tomma. fyll inte i något och klicka på sök, det kommer inte hittas något, fyll i tex sverige och skimmel och sök så kommer det upp en del

Medlem sedan dec. 20025 483 inlägg
#4

Aha, nej, jag gick inte in under "Under konstruktion".

Så här kanske:

SQL = _
"select *" &_
"  from hast" &_
" where kon  = '"& SafeSQL(Request.Form("kon")) &"'" &_
"   and ras  = '"& SafeSQL(Request.Form("ras")) &"'" &_
"   and farg = '"& SafeSQL(Request.Form("farg")) &"'"

namn = SafeSQL(Request.Form("hast"))
stambok = lcase(SafeSQL(Request.Form("stambok")))
uppf = SafeSQL(Request.Form("uppf"))

if namn <> "" then
 SQL = SQL & " and namn like '" & namn & "%'"
end if

if stambok = "not null" then
 SQL = SQL & " and stambok is not null"
elseif stambok = "null" then
 SQL = SQL & " and stambok is null"
end if

if uppf <> "" then
 SQL = SQL & " and uppf like '%" & uppf & "%'"
end if

SQL = SQL & " order by " & SafeSQL(Request.Form("ordning"))
Medlem sedan juni 2005264 inlägg
#5

Tack!
Men det funderade inte alls, ingen skillnad, dvs inget kom upp när man sökte med tomma rutor, och saker och ting dök upp när man fyller i uppgifter

Medlem sedan dec. 20025 483 inlägg
#6

Hur SQL-strängen ut när du inte fyller i några uppgifter? D.v.s. skriv

response.write SQL
response.end

...direkt efter SQL = SQL & " order by " & SafeSQL(Request.Form("ordning")).

Medlem sedan juni 2005264 inlägg
#7

select * from hast where kon = 'Hingst' and ras = 'ras' and farg = 'farg' order by namn

Ras = nationalitet

Medlem sedan dec. 20025 483 inlägg
#8

Använder du det kodstycke jag postade ovan nu?

Medlem sedan juni 2005264 inlägg
#9

Peter S skrev:

Använder du det kodstycke jag postade ovan nu?

Nej, kom på att jag provade en annan, nu har jag bytt

Medlem sedan dec. 20025 483 inlägg
#10

Hur ser den genererade SQL-strängen ut då?

Medlem sedan juni 2005264 inlägg
#11

Peter S skrev:

Hur ser den genererade SQL-strängen ut då?

select * from hast where kon = 'Hingst' and ras = 'ras' and farg = 'farg' order by namn

Medlem sedan dec. 20025 483 inlägg
#12

Hur kan exempelvis SafeSQL(Request.Form("ras")) bli 'ras' med tanke på att elementet 'ras' är definierat som

<select name="ras">
<option selected value="%">Land/Stambok</option>
<option value="Connemara">Sverige</option>
<option value="IRE">Irland</option>
<option value="GBR">England</option>
<option value="DK">Danmark</option>
<option value="DE">Tyskland</option>

<option value="FIN">Finland</option>
<option value="NOR">Norge</option>
<option value="FRA">Frankrike</option>
<option value="AUS">Australien</option>
<option value="USA">USA</option>
<option value="NDL">Nederländerna</option>
<option value="NPS">NPS</option>
<option value="NZ">Nya Zeeland</option>
</select>

?

Sedan saknas ett </form>.

Medlem sedan dec. 20025 483 inlägg
#13

Testa följande:

SQL = _
"select *" &_
"  from hast" &_
" where kon  = '"& SafeSQL(Request.Form("kon")) &"'"

farg = SafeSQL(Request.Form("farg"))
ras = SafeSQL(Request.Form("ras"))
namn = SafeSQL(Request.Form("hast"))
stambok = lcase(SafeSQL(Request.Form("stambok")))
uppf = SafeSQL(Request.Form("uppf"))

if farg <> "%" then
 SQL = SQL & " and farg like '" & farg & "%'"
end if

if ras <> "%" then
 SQL = SQL & " and ras like '" & ras & "%'"
end if

if namn <> "" then
 SQL = SQL & " and namn like '%" & namn & "%'"
end if

if stambok = "not null" then
 SQL = SQL & " and stambok is not null"
elseif stambok = "null" then
 SQL = SQL & " and stambok is null"
end if

if uppf <> "" then
 SQL = SQL & " and uppf like '%" & uppf & "%'"
end if

SQL = SQL & " order by " & SafeSQL(Request.Form("ordning"))
Medlem sedan juni 2005264 inlägg
#14

#13 Funkar kanon =D

Tack för hjälpen!

ang. #12 så provade jag en sak bara, funkade ju inget vidare, hann inte byta tillbaka filen just då

Medlem sedan dec. 20025 483 inlägg
#15

Trevligt! :bire

Medlem sedan juni 2005264 inlägg
#16

En liiiiten fråga till, jag vill kunna söka endast efter hästar med bild också, hur får jag till det? Tänkte mig en checkbox i formuläret, <input type="checkbox" name="bild">
men hur gör jag med sql-en?
Det bör väl vara något om att om bild = bild så visa bara poster där bild_url is not null ?

I databasen är fältet "bild_url" antingen ifylld eller inte, kryssar man i rutan så ska endast de med bild komma upp

Medlem sedan dec. 20025 483 inlägg
#17

Då blir det typ

bild = SafeSQL(Request.Form("bild"))

if bild <> "" then
 SQL = SQL & " and bild_url is not null"
end if
Medlem sedan juni 2005264 inlägg
#18

:f Vad skulle jag göra utan dig!

256 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
123 ms — deklarationer (db)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)
123 ms — ändringar (db)