Avatar billede runskee Nybegynder
18. september 2003 - 11:39 Der er 20 kommentarer og
1 løsning

søge funktion, hente poster fra db udfra køn og alder

Jeg skal bruge en søgefunktion til min access db, som henter personprofiler.

Søger har følgende 3 muligheder:

KØN: 
han / hun      -kun en af delene :-)

ALDER:
0-5 år          - flere af dem kan vælges
5-10 år
10-20 år
20-30 år
30-40 år
40-50 år
50-? år


KUN POSTER INDEHOLDENDE BILLEDER:
med / uden
Avatar billede ocp Nybegynder
18. september 2003 - 11:48 #1
Erstat 'M' og "0 and 5" med de ønskede intervaller:

select *
from person
where koen = 'M'
and alder between 0 and 5
Avatar billede runskee Nybegynder
18. september 2003 - 12:05 #2
Kan du udpensle det til lidt mere kode med udgangspunkt i følgende:

        <input type="radio" name="kon" value="han">
        <input type="radio" name="kon" value="hun">
       
        <input type="checkbox" name="0-5" value="checkbox">
        0 - 5 år<br>
        <input type="checkbox" name="5-10" value="checkbox">
        5 - 10 år <br>
        <input type="checkbox" name="10-20" value="checkbox">
        10 - 20 år</font>       
osv...
     
        <input type="checkbox" name="med" value="checkbox">

vil du bare bruge request.form eller sessions. Kan du ikke skrive lidt mere kode?
Avatar billede l_otto Nybegynder
18. september 2003 - 12:54 #3
skal den bare vise resultatet nå man åbner siden ?
Avatar billede runskee Nybegynder
18. september 2003 - 13:10 #4
ja, posterne skal vises med navn, køn og alder

men gerne med kollonen "navn" vist som et link så man kan klikke sig videre til øvrige oplysninger - som du ikke kender :-)
Avatar billede l_otto Nybegynder
18. september 2003 - 13:14 #5
jamen skal man lave en søgning først ?
Avatar billede runskee Nybegynder
18. september 2003 - 13:21 #6
ja, man krydser de felter af (udfra den personprofil man søger)

fx. en mand, i alderen 10-20 år og/eller 20-30 år

posterne i tabellen "profil" som passer efter søgningen skrives ud

navn, alder (hvor navn er et link)
navn, alder
navn, alder
navn, alder
Avatar billede l_otto Nybegynder
18. september 2003 - 13:25 #7
så skal du have to sider en search.asp og en resulat.asp

jeg vil forslå du gå på www.asp.dk eller en anden og finder noget der virker og bruger det:-)
Avatar billede runskee Nybegynder
18. september 2003 - 14:21 #8
andre med et bud??
Avatar billede eagleeye Praktikant
18. september 2003 - 15:48 #9
Jeg skal gerne give et bud.

Du laver en radio knap for mand/kvinde og eksvis nogle checkbokse for alder.

<form action="sog.asp" method="POST">
<radio name="kon" value="m" checked> Mand
<radio name="kon" value="k" > Kvinde<br>

<input type="alder" value="0-5">0-5 år<br>
<input type="alder" value="5-10">5-10 år<br>
<input type="alder" value="10-20">10-20 år<br>
<input type="alder" value="20-30">20-30 år<br>
<input type="alder" value="30-40">30-40 år<br>
<input type="alder" value="40-50">40-50 år<br>
<input type="alder" value="50">50-?? år<br>

<input type="submit" name="send" value="send">
</form>



------------ KODEN for sog.asp

<%
Set conn = Server.CreateObject("ADODBconnection")
conn.Open "CONN STRING til din db"

kon = Request.Form("kon")
alderList = Request.Form("alder")
alderArr = Split(alderList, ",")

SQLalder = ""
for i = lbound(alderArr) to ubound(alderArr)
  if SQLalder <> "" then SQLalder = SQLalder & " OR "
  SQLalder = SQLalder & "("
  talArr = Split(alderArr(i),"-")
  SQLalder = SQLalder & "alder > " & talArr(0)
  if Ubound(talArr)>1 then SQLalder = SQLalder & " AND alder < " & talArr(1)
  SQLalder = SQLalder & ")"
next

SQL = "SELECT * FROM tabel WHERE kon '" & kon & "'"
if SQLalder <> "" then SQL = SQL & " AND (" & SQLalder & ")"

Set rs = Conn.Execute(SQL)

do while not rs.EOF
  Response.Write "<a href=""brugerinfo.asp?id=" & rs("id") & """>" & rs("navn") & "</a>, "
  Response.Write "alder " & rs("alder") & "<br>"
 
  rs.Movenext
loop
Avatar billede runskee Nybegynder
18. september 2003 - 17:07 #10
får denne fejl:

Syntax error (missing operator) in query expression 'kon 'mand' AND ((alder > 20))'.

ved:
Set rs = Conn.Execute(SQL)
Avatar billede eagleeye Praktikant
18. september 2003 - 18:53 #11
ups der mangler et = Prøv at rette denne linje:

SQL = "SELECT * FROM tabel WHERE kon '" & kon & "'"

Til:

SQL = "SELECT * FROM tabel WHERE kon = '" & kon & "'"
Avatar billede runskee Nybegynder
18. september 2003 - 19:02 #12
yes...rettet.

nu får jeg bare en blank side, men der er poster i db, som passer på søgningen??
Avatar billede eagleeye Praktikant
18. september 2003 - 19:05 #13
Prøv at tilføje denne linje

Response.Write SQL

Lige inden denne og vis hvad der står, eller at den SQL sætning ser rigtig ud med AND og OR samt angivelsen af alder...
Set rs = Conn.Execute(SQL)
Avatar billede eagleeye Praktikant
18. september 2003 - 19:05 #14
Det ville måske være en ide at rette:

for i = lbound(alderArr) to ubound(alderArr)
  if SQLalder <> "" then SQLalder = SQLalder & " OR "
  SQLalder = SQLalder & "("
  talArr = Split(alderArr(i),"-")
  SQLalder = SQLalder & "alder > " & talArr(0)
  if Ubound(talArr)>1 then SQLalder = SQLalder & " AND alder < " & talArr(1)
  SQLalder = SQLalder & ")"
next

Til dette så den søger efter = alder også :



for i = lbound(alderArr) to ubound(alderArr)
  if SQLalder <> "" then SQLalder = SQLalder & " OR "
  SQLalder = SQLalder & "("
  talArr = Split(alderArr(i),"-")
  SQLalder = SQLalder & "alder >= " & talArr(0)
  if Ubound(talArr)>1 then SQLalder = SQLalder & " AND alder =< " & talArr(1)
  SQLalder = SQLalder & ")"
next
Avatar billede runskee Nybegynder
18. september 2003 - 19:11 #15
Jeg er lidt i tvivl om hvad der skal stå i value i checkboxen? skal der fx stå "10-20"??

til din første kommentar:

SELECT * FROM profil WHERE kon = 'mand' AND ((alder > 2030))
Avatar billede eagleeye Praktikant
18. september 2003 - 19:13 #16
Ja der skal eksvis stå "10-20"
Avatar billede eagleeye Praktikant
18. september 2003 - 19:17 #17
how jeg ser lige min form ikke er checkbokse sådan en her :
<input type="alder" value="10-20">10-20 år<br>

Så rettes til:
<input type="checkbox" name="alder" value="10-20">10-20 år<br>
Avatar billede eagleeye Praktikant
18. september 2003 - 19:18 #18
og ret lige denne linje:

if Ubound(talArr)>1 then SQLalder = SQLalder & " AND alder < " & talArr(1)

Til denne:

if Ubound(talArr)>0 then SQLalder = SQLalder & " AND alder < " & talArr(1)
Avatar billede runskee Nybegynder
18. september 2003 - 19:31 #19
det lader sgu til at virke!!

hvordan klarer jeg den med??

[checkbox] VIS KUN POSTER INDEHOLDENDE BILLEDER:

(en kollone i db, som indeholder en billedfil, det kan godt lade sig gøre ikke??)
Avatar billede eagleeye Praktikant
18. september 2003 - 20:00 #20
Ja det kan det.

Du kan tilføje en ny checkbox:
<input type="checkbox" name="billede" value="ja">Vi kun med billede


Tilføje denne linje oppe hvor man hender kon på samme måde:
billede = Request.Form("billede")

Udvid deisse linje:
SQL = "SELECT * FROM tabel WHERE kon = '" & kon & "'"
if SQLalder <> "" then SQL = SQL & " AND (" & SQLalder & ")"


til disse:
SQL = "SELECT * FROM tabel WHERE kon = '" & kon & "'"
if billede <> "" then SQL = SQL & " AND (billedefil is not null) "
if SQLalder <> "" then SQL = SQL & " AND (" & SQLalder & ")"
Avatar billede runskee Nybegynder
18. september 2003 - 20:31 #21
ja, det kører bare. 1000 tak
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
Kurser inden for grundlæggende programmering

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

Seneste spørgsmål Seneste aktivitet
1 min siden Libre Office Impress Af Frank i Andre styresystemer
I dag 11:47 VB script Af Jenshentze i Word
I dag 11:21 Popup ved opstart Af mort1 i Windows
04/0918:50 Slet lokal konto Af ErikHg i Windows
04/0916:05 Ændre tal i en celle Af xvid i Excel