Avatar billede beroni Nybegynder
13. januar 2004 - 22:06 Der er 5 kommentarer og
1 løsning

Avanceret søgeformular i ASP

Jeg har en MySQL-database med links i forskellige kategorier, underkategorier, og geografisk placering.  Hvordan laver jeg
søgeformular.asp  og søg.asp således at der f.eks kan medtages checkbox, radiobuttons, og selects /comboboxe i en kombineret søgning. - hvordan skal SQLén udformes -  Det er måske simpelt men vis mig evt et eksempel jeg kan bygge videre på.
Avatar billede eagleeye Praktikant
13. januar 2004 - 22:28 #1
En select/dropdown boks virker som et input felt. Du får den værdi som står i value på den valgte punkt.

En gruppe med radio knapper giver værdien i value for den radio-knap som er valgt.

En checkbox bliver kun ført med over i søg.asp hvis den er valgt (kryds i) og så får man enten ON eller den værdi som står i value..


Man kan typisk bygge en WHERE del op men en flok if sætninger:

strWhere = ""
if request.Form("kategori") <> "" then
  strWhere = strWhere & " kategori '= " & request.Form("kategori") & "'"
end if
if request.Form("grafik") <> "" then
  'Indsæt OR eller AND imellem kolonnerne:
  if strWhere <> "" then strWhere = strWhere & " OR "
  strWhere = strWhere & " grafik '= " & request.Form("grafik") & "'"
end if

'Skal man så AND'e en kolonne på så skal der lige () omkring når der brugt OR:
if strWhere <> "" then strWhere = "(" & strWhere & ")"

if request.Form("checkbox") <> "" then
  'Indsæt OR eller AND imellem kolonnerne:
  if strWhere <> "" then strWhere = strWhere & " AND "
  strWhere = strWhere & " checkbox = 1"
end if


'SQLen samles:
SQL = "select * from tabelnavn "
if strWhere <> "" then SQL = SQL & " where " & strWhere



Når man har mange kolonne og bruger en blanding af AND og OR så skal man huske at AND udføres før OR. Hvis man tænker på AND som gange og OR som plus i matematik så er resultatet afhængigt af paranteserne placering:
4*1+2 = 6
4*(1+2) = 12
Avatar billede beroni Nybegynder
13. januar 2004 - 22:46 #2
foreløbig tak eagleeye - det ser ud som det kan bruges - men jeg fik lige gæster og får testet færdig i morgen.  Jeg er dog uklar på de nævnte paranteser i forbindels med AND og OR.  Har du et eksempel fra "dagligdagen"
Avatar billede eagleeye Praktikant
13. januar 2004 - 22:58 #3
Et eksempel fra daglig dagen ja... Hvis man vil søge efter og vise alle poster fra to forskellige kategorier og man vil havde kolonne vis skal være sat til 1 skal man lave where delen sådan her.

SQL = ".... where (kategori='A' OR kategori='B') AND vis=1"

Så vil den nemlig finde alle poster som er i kategori enten A eller B men kun hvis vis er lig 1.

Hvad man sat paranteserne forkert eller unladt dem:

SQL = ".... where kategori='A' OR kategori='B' AND vis=1"

Vil den tage alle poster som er i kategori A, og de poster som er i kategori B som har vis=1.

Kunne det bruges?
Avatar billede beroni Nybegynder
13. januar 2004 - 22:59 #4
Iøvrigt har jeg en meget simpel test kørende som netop kom til at virke - men sansynligvis kun ved ganske få input-felter.  Måske kan der dog bygges videre på den??
Se eventuelt på adressen http://www.ferieklub.dk/rood/ferieklub/default.asp


<%
  dim cn, rs, sql, Amt, Kategori
 
 
  Amt = request.querystring("Amt")
 
  Kategori = request.querystring("Kat")
 
 
  ' Dan forbindelse til db
  set cn = server.createobject("adodb.connection")
  cn.open application.contents("cnstr")
 
   
  ' Henter links fra basen
  sql = "select * from fk_links where AmtId = "
  sql = sql & Amt & " AND Kat = "
  sql = sql & Kategori & " LIMIT 0, 30 "
  set rs = server.createobject("adodb.recordset")
  rs.open sql, cn, adOpenForwardOnly, adLockReadOnly, adCmdText

%>
Avatar billede beroni Nybegynder
13. januar 2004 - 23:02 #5
Det var en forkert adresse jeg gav dig ovenfor: korrekt adresse: http://www.ferieklub.dk/rood/ferieklub/link_soegning.asp  - eller klik på "test" i bunden af den første side jeg gav dig
Avatar billede eagleeye Praktikant
13. januar 2004 - 23:05 #6
Du skal huske at havde ' omkring data efter et kolonnenavn:

  sql = "select * from fk_links where AmtId = '"
  sql = sql & Amt & "' AND Kat = '"
  sql = sql & Kategori & "' LIMIT 0, 30 "
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester