09. januar 2007 - 19:54Der 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
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...
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 & "'"
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
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.
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
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
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...
<% ' 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
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
<% ' 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
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)
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...
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.
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.
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...
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.
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.