Avatar billede zombien Juniormester
09. januar 2007 - 19:54 Der er 23 kommentarer og
1 løsning

Hvor får jeg mit script til at arbejde med søge-kriterer

Hejsa

jeg sidder her og er igang, med at få mit asp script...
til at hente nogle bestemte ting ud fra min mysql database...

jeg har forsøgt mig med denne kode

<%
' her vil systemet finde frem til de ønskede boligere...
' ud fra de informationer brugeren indtaster...
dim page, art, min_pris, max_pris, omraade, rs
                                       
page = replace(request.querystring("page"),"'","")
art = replace(request.form("art"),"'","")
min_pris = replace(request.form("min_pris"),"'","")
max_pris = replace(request.form("max_pris"),"'","")
omraade = replace(request.form("omraade"),"'","")
                                       
if page = "soegbolig" then
set rs = "select * from bolig where art = '" & art & "'"
set rs = "select * from bolig where pris => '" & min_pris & "'"
set rs = "select * from bolig where pris <= '" & max_pris & "'"
set rs = "select * from bolig where omraade = '" & omraade & "'"
                                   
end if
%>

men tror ikke helt den fungere som den skal...
den finder i hvert fald ingen informationer frem...

så nogen der evt. ved hvordan jeg skal få mit script...
til at sortere det indhold den har i databasen...
efter 4 kriterer... sidder og arbejde med et skoleprojekt...
hvor vi skal lave en hjemmeside til en egendomsmægler...
Avatar billede keysersoze Ekspert
09. januar 2007 - 20:05 #1
du executer ikke din SQL på noget tidspunkt og derfor får du aldrig et recordset.
Avatar billede zombien Juniormester
09. januar 2007 - 20:09 #2
ahhh du mener jeg mangler
set rs = conn.execute("select * from bolig")

den du mener jeg mangler :-) hehehe det er vidst også rigtig nok
men ellers ser koden rigtig ud??? for 4 søge-kritere
Avatar billede keysersoze Ekspert
09. januar 2007 - 20:17 #3
nej - for som ovenstående er sat op vil du få 4 recordsets i stedet for 1 hvor alle søgekriterier er opfyldt... og det vil du så ikke engang fordi dine recordsets hedder det samme, så nummer 2 vil overskrive nummer 1, nummer 3 vil overskrive nummer 2 osv.

Du skal vel kun have ét recordset ud;

select * from bolig where art = '" & art & "' AND pris => '" & min_pris & "' AND pris <= '" & max_pris & "' AND omraade = '" & omraade & "'"
Avatar billede zombien Juniormester
09. januar 2007 - 21:12 #4
okay... så havde jeg ret i min bekymring om det så forkert ud...
men har endnu et spørgsmål, i mine forms som bliver hentet fra en anden side...
har brugeren muligheden for at vælge alle i tabellen art og omraade...

hvor det jo så var meningen, systemet skulle nappe alt i de 2 tabeller...
så der ikke decideret er noget søgekritere på de 2 tabeller
hvordan kan jeg evt. få det til at fungere i mit system, som det ser ud der
Avatar billede keysersoze Ekspert
09. januar 2007 - 23:03 #5
huh?
Avatar billede zombien Juniormester
09. januar 2007 - 23:17 #6
ja altså... brugeren har mulighed for at vælge "alle"
hvis dette er tilfældet at det er valgt , skulle databasen gerne snuppe alle tingene fra databasen

eks. bolig type, man kan vælge andelsbolig, så snupper den kun andelsboliger fra databasen....

men hvis man så vælger alle... skulle den gerne snuppe både andelsboliger, lejligheder osv.
Avatar billede zombien Juniormester
09. januar 2007 - 23:28 #7
keysersoze<
har tilføjet din select string.. Så den ser sådan her ud

set rs = "select * from bolig where art = '" & art & "' AND pris => '" & min_pris & "' AND pris <= '" & max_pris & "' AND omraade = '" & omraade & "' AND  kwm => '" & kwm & "' AND grund => '" & grund & "'"

da der lige skulle nogle flere søgekritere på :-)
så håber da jeg har tilføjet de nye punkter korrekt...
dog er der alligevel gået noget galt et eller andet sted
for får denne fejl besked, når jeg kommer over til siden fra søgeformularen

Fejltype:
Der opstod en Microsoft VBScript-kørselsfejl (0x800A01A8)
Et objekt er obligatorisk: '[string: "select * from bolig "]'
/Eksamen/soegbolig.asp, line 86
Avatar billede keysersoze Ekspert
10. januar 2007 - 07:44 #8
du skal stadig huske at execute din sql.

hvis du lader muligheden "alle" have value ingenting så må du bygge din sql op vha nogle if-sætninger;

sql = "select * from bolig where id <> 0"
if art <> "" Then
  sql = sql & " AND art = '" & art & "'
end if
if min_pris <> "" Then
  sql = sql & " AND pris => '" & min_pris & "'
end if

og så videre.
Avatar billede zombien Juniormester
11. januar 2007 - 12:26 #9
okay, der må jeg indrømme du tabte mig...
altså funktionen alle har værdi'en alle, det har jeg i hvert fald sat den til...

så hvis jeg indsætter denne her

set rs = conn.execute("select * from bolig")
set rs = "select * from bolig where art = '" & art & "' AND pris => '" & min_pris & "' AND pris <= '" & max_pris & "' AND omraade = '" & omraade & "' AND  kwm => '" & kwm & "' AND grund => '" & grund & "'"

if art = "alle" then
set rs = "select art from bolig"
elseif omraade = "alle" then
set rs = "select omraade from bolig"
end if

jeg ved godt det havde været lettere for mig, bare at fjerne valgmuligheden alle...
men problemet er, at eftersom opgaven forklare det er en side til en egendomsmægler... skal og må funktionen være der...

ved godt jeg er en smule grøn på dette område, men håber du bære over med mig keysersoze...
Avatar billede tsunami Nybegynder
12. januar 2007 - 17:57 #10
<%
' her vil systemet finde frem til de ønskede boligere...
' ud fra de informationer brugeren indtaster...
dim page, art, min_pris, max_pris, omraade, rs, bltemp = false
                                       
page = replace(request.querystring("page"),"'","")
art = replace(request.form("art"),"'","")
min_pris = replace(request.form("min_pris"),"'","")
max_pris = replace(request.form("max_pris"),"'","")
omraade = replace(request.form("omraade"),"'","")
                                       
if page = "soegbolig" then

SQLstr = "select * from bolig where "

if art <> "" then
SQLstr = SQLstr & "art = '" & art & "' "
bltemp = true
End if
if pris <> "" then
if bltemp = true then
SQLstr = SQLstr & "AND "
End if
SQLstr = SQLstr & "pris => '" & min_pris & "' "
bltemp = true
End if
if max_pris <> "" then
if bltemp = true then
SQLstr = SQLstr & "AND "
End if
SQLstr = SQLstr & "pris <= '" & max_pris & "' "
bltemp = true
End if
if omraade <> "" then
if bltemp = true then
SQLstr = SQLstr & "AND "
End if
SQLstr = SQLstr & "omraade = '" & omraade & "' "
End if
set rs = conn.execute(SQLstr)
                                 
end if
%>

Ikke sikker på om den virker efter hensigten men har også lige hurtigt siddet og bikset den sammen... måske lidt mærkelig og kan gøre på en anden måde men dette var lige en måde jeg kunne komme på lige nu
Avatar billede tsunami Nybegynder
12. januar 2007 - 18:00 #11
Glemte den med alle

<%
' her vil systemet finde frem til de ønskede boligere...
' ud fra de informationer brugeren indtaster...
dim page, art, min_pris, max_pris, omraade, rs, bltemp = false
                                       
page = replace(request.querystring("page"),"'","")
art = replace(request.form("art"),"'","")
min_pris = replace(request.form("min_pris"),"'","")
max_pris = replace(request.form("max_pris"),"'","")
omraade = replace(request.form("omraade"),"'","")
                                       
if page = "soegbolig" then

if art = "Alle" then
SQLStr = "select * from bolig"
Else
SQLstr = "select * from bolig where "

SQLstr = SQLstr & "art = '" & art & "' "
bltemp = true
End if
if pris <> "" then
if bltemp = true then
SQLstr = SQLstr & "AND "
End if
SQLstr = SQLstr & "pris => '" & min_pris & "' "
bltemp = true
End if
if max_pris <> "" then
if bltemp = true then
SQLstr = SQLstr & "AND "
End if
SQLstr = SQLstr & "pris <= '" & max_pris & "' "
bltemp = true
End if
if omraade <> "" then
if bltemp = true then
SQLstr = SQLstr & "AND "
End if
SQLstr = SQLstr & "omraade = '" & omraade & "' "
End if
End if
set rs = conn.execute(SQLstr)
                                 
end if
%>
Avatar billede tsunami Nybegynder
12. januar 2007 - 18:05 #12
Ideen er at der kun skal 1 SQL streng til at udtrække data fra databasen og den har jeg her lavet ved at stykke det sammen af små bidder udfra kriterier som jeg har opstilt... derefter kører jeg den SQL streng som udtrækker oplysningerne fra databasen...

Håber dette kunne give lidt forklaring
Avatar billede keysersoze Ekspert
12. januar 2007 - 19:00 #13
Det er fint nok at have "alle" med - men det du skal gøre i det tilfælde rent teknisk er ikke at lave en sortering i din SQL på alle. Derfor, hvis værdien til "alle" i din dropdown-boks bliver sat til ingenting kan (og skal) du se bort fra den i din SQL - derfor if-sætningerne.

Du skal stadig også kun lave én sql - en sql kan give sig udtryk i ét og kun ét recordset så det du skal gøre, og som jeg samt tsunami forsøger på, er at opbygge en streng som i sidste ende danner den SQL du skal execute.
Avatar billede zombien Juniormester
29. januar 2007 - 08:53 #14
Lukket
Avatar billede keysersoze Ekspert
29. januar 2007 - 17:23 #15
erhm - tak for hjælpen??
Avatar billede tsunami Nybegynder
29. januar 2007 - 19:12 #16
hmm... det er vist anden gang han lukker et spørgsmål og tildeler points til sig selv...

Ved dog ikke om der er flere...
Avatar billede keysersoze Ekspert
31. januar 2007 - 23:40 #17
hvis ikke der kommer en lidt bedre forklaring beder jeg i hvert fald en coadmin kigge forbi :)
Avatar billede tsunami Nybegynder
01. februar 2007 - 14:05 #18
Fuldstændig enig
Avatar billede keysersoze Ekspert
03. februar 2007 - 11:33 #19
anmeldt...
Avatar billede snowball Novice
03. februar 2007 - 15:26 #20
zombien: Forklar venligst hvorfor du selv tager pointene i dette spørgsmål? Det er meget dårlig stil ikke at svare tilbage til de brugere der prøver på at hjælpe dig.

Snowball / CoAdmin
Avatar billede zombien Juniormester
03. februar 2007 - 21:07 #21
jeg beklager da, hvis i betegner dette som dårlig stil...
men det er svært at tildele points til folk, når de kun skriver kommentar...
for ved de markere det som en kommentar, vælger de selv, det ikke skal tælle som et svar... så alt i alt, har jeg ikke gjort noget galt...

andet end lukke et spørgsmål, som ikke havde behov for mere opmærksomhed...
men nej tsunami, du fortjener da de points... hatten af for det...
og hvis Coadmin kan, må han gladeligt overføre dem...

men ja, jeg har gjort det ved et par stykker af mine gamle spørgsmål også...
dette er ganske korrekt tsunami, men det er der så også flere brugere der gør herinde...
Avatar billede snowball Novice
03. februar 2007 - 21:35 #22
zombien: At folk ikke har lavet et svar, er ikke en gyldig årsag til at tage pointene tilbage. Så beder man blot folk om at lave et svar så de kan blive belønnet for deres arbejde - http://www.expfaq.dk/behandling_af_svar#behandling_af_svar

Derfor bedes du venligst oprette et nyt spørgsmål i samme kategori og med samme antal point så pointene kan blive uddelt. Husk i det nye spørgsmål at skrive, at pointene uddeles på baggrund af dette spørgsmål, tak.

Snowball / CoAdmin
Avatar billede zombien Juniormester
05. februar 2007 - 08:40 #23
Avatar billede snowball Novice
06. februar 2007 - 12:13 #24
Tak for det. Sagen er hermed lukket :)
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