|
| Søg ud fra checkbokse Fra : Duno | Vist : 606 gange 100 point Dato : 21-02-05 11:33 |
|
Jeg skal lave en søgning hvor søgningen skal foretages ud fra flere markeringer i flere rækker af checkbokse
altså 4 forskellige kategorier Type, Funktion, Form, tid
Med ca 4 - 6 checkbokse i hver kategori
hvordan laver man sådan en søgning nemmest??
altså hvordan laver man strengen, Select * From tabel where form1 = checkbox1 and checkbox2 and.. osv.. så blivetr det jo en helvedes lang streng med ca 20 kriterier
| |
| Kommentar Fra : smorch |
Dato : 21-02-05 12:48 |
|
Ja! Strengen bliver lang, men du skal så kun lave een.....
Forslag:
Du kan lave et valg på grundlag af hvilke bokse, der er checket, og dermed lave små bidder som du så tilføjer til din sql sætning efterhånden som de skal bruges.
Jeg går ud fra, at checkboksene har en strengværdi...
SQL="select * from tabel where AKTIV=1 "
if request.form("TypeBoks1")<>"" then SQL=SQL & " AND [type]='" & request.form("TypeBoks1") & "'"
if request.form("TypeBoks2")<>"" then SQL=SQL & " AND [type]='" & request.form("TypeBoks2") & "'"
if request.form("TypeBoks3")<>"" then SQL=SQL & " AND [type]='" & request.form("TypeBoks3") & "'"etc.
if request.form("TypeBoks4")<>"" then SQL=SQL & " AND [type]='" & request.form("TypeBoks4") & "'"etc.
if request.form("FunktionBoks1")<>"" then SQL=SQL & " AND [type]='" & request.form("FunktionBoks1") & "'"
if request.form("FunktionBoks2")<>"" then SQL=SQL & " AND [type]='" & request.form("FunktionBoks2") & "'"
if request.form("FunktionBoks3")<>"" then SQL=SQL & " AND [type]='" & request.form("FunktionBoks3") & "'"etc.
if request.form("FunktionBoks4")<>"" then SQL=SQL & " AND [type]='" & request.form("FunktionBoks4") & "'"etc.
etc.
SQL=SQL & " ORDER by " & request.form("sortering") ' Som er fx. radiobuttons med et evt. sorteringskriterie
Mvh
Smorch
| |
| Kommentar Fra : Duno |
Dato : 21-02-05 15:49 |
|
ok.. det ser godt ud, men hvad menes der med AKTIV = 1
og .form("sortering") jeg ser ingen af dem andre steder...
| |
| Kommentar Fra : smorch |
Dato : 21-02-05 18:33 |
|
AKTIV - Lav en kollonne, der hedder aktiv, og sæt de poster der skal kunne søges på til af være lig med 1
Sortering : Hvis du derudover lavede 4 radiobuttons der hedder sortering (Alle 4) med hhv. med værdien Type, Funktion, Form og tid, ville du kunne få sorteret dit søgeresultat i samme arbejdsgang ved at bruge den sidste linie også - du kan også bare lade være med at bruge den.
Smorch
| |
| Kommentar Fra : Duno |
Dato : 22-02-05 10:48 |
|
Super, det var sku ikke dumt tænkt.. jeg var ude i meget større løsninger, men det her er jo nemt og simpelt FEDT
men hvad med forbindelsesstrengen ?
er den ikke noget i stil med ?
<%
Set database = Server.CreateObject ("ADODB.Connection")
database.Open ("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\web\db\test2.mdb")
%>
og visning af resultater må være sql("navn") osv ik... ?
Hilsen
Duno
| |
| Kommentar Fra : smorch |
Dato : 22-02-05 10:58 |
|
<%
Set database = Server.CreateObject ("ADODB.Connection")
database.Open ("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\web\db\test2.mdb")
SQL="select * from tabel where AKTIV=1 "
if request.form("TypeBoks1")<>"" then SQL=SQL & " AND [type]='" & request.form("TypeBoks1") & "'"
if request.form("TypeBoks2")<>"" then SQL=SQL & " AND [type]='" & request.form("TypeBoks2") & "'"
if request.form("TypeBoks3")<>"" then SQL=SQL & " AND [type]='" & request.form("TypeBoks3") & "'"etc.
if request.form("TypeBoks4")<>"" then SQL=SQL & " AND [type]='" & request.form("TypeBoks4") & "'"etc.
if request.form("FunktionBoks1")<>"" then SQL=SQL & " AND [type]='" & request.form("FunktionBoks1") & "'"
if request.form("FunktionBoks2")<>"" then SQL=SQL & " AND [type]='" & request.form("FunktionBoks2") & "'"
if request.form("FunktionBoks3")<>"" then SQL=SQL & " AND [type]='" & request.form("FunktionBoks3") & "'"etc.
if request.form("FunktionBoks4")<>"" then SQL=SQL & " AND [type]='" & request.form("FunktionBoks4") & "'"
'etc.
SQL=SQL & " ORDER by " & request.form("sortering") ' Som er fx. radiobuttons med et evt. sorteringskriterie
Set rs = Server.CreateObject("ADODB.Recordset")
Set rs = ConnF.Execute( SQL )
if not rs.eof then
do until rs.eof
response.write(rs("KOLONNENAVN") & " - " & rs("KOLONNENAVN2") & "<br>") ' eksempel
rs.movenext
loop
end if
set rs= nothing
conn.close
set conn= nothing
%>
| |
| Kommentar Fra : smorch |
Dato : 22-02-05 10:59 |
|
RETTELSE:
if not rs.eof then
do until rs.eof
response.write(rs("KOLONNENAVN") & " - " & rs("KOLONNENAVN2") & "<br>") ' eksempel
rs.movenext
loop
| |
| Kommentar Fra : smorch |
Dato : 22-02-05 11:00 |
|
F#%&"#¤
I rettelsen rettede KanDu linieskiftet IGEN !!!!!!!!!!!!
Der skal være linieskift efter
do until rs.eof
response.write(rs("KOLONNENAVN") & " - " & rs("KOLONNENAVN2") & "<br>") ' eksempel
| |
| Kommentar Fra : smorch |
Dato : 22-02-05 11:01 |
|
FU#&"%!"#%§
efter do until rs.eof skal der være linieskift
Smorch
| |
| Kommentar Fra : Duno |
Dato : 22-02-05 11:30 |
|
Ja KanDu kan mange ting ""GG""
ha ha sikken en kamp (hatten af for det ) ..
men ok.. pointen er fanget ""GG""
jeg takker og tester og smider efterfølgende 50 point oven i puljen, som respekt for din udholdenhed, samt dine kommentare som FU#&"%!"#%§, der straks sendte mine tanker tilbage til de gode gamle dage med et ny trykt Anders And blad!
Tester med det samme....
hey.. det slog mig lige...
hvis der nu ikke er nogen poster som passer til de valgte kriterer
kan man så ikke bare lave en sætning som denne
i = 0
if not rs.eof then
do until rs.eof response.write(rs("KOLONNENAVN") & " - " & rs("KOLONNENAVN2") & "<br>") ' eksempel
rs.movenext
i = i + 1
loop
end if
If i = 0 then
response.write "Ingen poster svarende til kriterier"
end if
Hilsen
Duno
| |
| Kommentar Fra : smorch |
Dato : 22-02-05 13:46 |
|
Du kan bare lægge ind efter
loop
else
response.write "Ingen poster svarende til kriterier"
end if
set rs= nothing
conn.close
set conn= nothing
Jeg er vokset op med AA
| |
| Kommentar Fra : smorch |
Dato : 22-02-05 13:48 |
|
SK"%#&"&% kandu laver l... i det ígen
Der skal være linieskift efter
end if og altså før set rs=nothing
| |
| Kommentar Fra : Duno |
Dato : 22-02-05 15:43 |
|
hmm .. jeg får følgende fejl
Expected ';'
/rrseek.asp, line 7
Set database = Server.CreateObject ("ADODB.Connection")
og der er en markering efter Set på D´et i database
giver mi fejlmelding nogen mening??
| |
| Kommentar Fra : smorch |
Dato : 22-02-05 15:50 |
|
Den skal hedde
Set Conn = Server.CreateObject("ADODB.Connection")
hvis du bruger det jeg har lavet herover - ellers skal du skifte Conn ud med database alle steder
Men fejlen siger mig ikke ret meget....
Du har <% %> omkring al dit vbscript?
| |
| Kommentar Fra : Duno |
Dato : 22-02-05 16:16 |
|
Ja den kan køre alt.. asp php osv.. jeg har den fulde pakke.. med alle opdateringer osv (har lige skiftet server i weekenden.. og har 2 asp sites kørende allerede på den server.
ok det hjalp.. men nu får jeg
Microsoft JET Database Engine error '80040e10'
No value given for one or more required parameters.
/rrseek.asp, line 38
linie 38 er
Set rs = Conn.Execute( SQL )
men jeg lægger lige en samlet fil du kan se, meld lige tilbage når den er hentet...
http://www.linkzonen.dk/rrseek.txt
| |
| Kommentar Fra : smorch |
Dato : 22-02-05 16:30 |
|
Det vil sige, at der er en parameter forkert i sql sætningen - sikkert et forkert kolonnenavn - ellers nok manglende værdi fra formularen.
skriv
response.write(sql)
inden conn.execute(sql)
og se om du finder fejlen
| |
| Kommentar Fra : Duno |
Dato : 22-02-05 16:49 |
|
hmm.. havde du tænkt på at alle felter eks funktion1 og funktion 2 skulle have hver sit felt i databasen?? eller hvad var din tanke???
| |
| Kommentar Fra : Duno |
Dato : 22-02-05 17:05 |
|
men hvis man nu skulle (nu har du jo set udkastet) .. hvis man nu markere 2 felter i samme kategori eks form.. så skal den jo også indeholder begge ting i databasen
hvordan får jeg sat det op, jeg vil jo kun kunne vise en profil med 2 markeringer, hvis det er det der er søgt på..
| |
| Kommentar Fra : smorch |
Dato : 22-02-05 20:31 |
|
Jeg er gået ud fra, at fx. form er et kolonnenavn. Det kan jo så indeholde een af 4-6 værdier fx. rund,firkantet,trekantet,oval eller tokantet.
Formular:
X Rund ( <input type="checkbox" name="FormBoks1" value="rund"> )
X Firkantet
Trekantet
Oval
Tokantet
Hvis man så i formularen vælger rund og firkantet, vil sql sætningen finde alle med enten rund eller firkantet i feltet form
| |
| Kommentar Fra : Duno |
Dato : 22-02-05 20:40 |
|
ja klart nok
men lad os sige at jeg har 3 poster..
og nu bruger vi lige dit eksempel
X Rund
X Firkantet
Trekantet
Oval
Tokantet
X Rund
X Firkantet
Trekantet
X Oval
Tokantet
X Rund
Firkantet
Trekantet
X Oval
X Tokantet
hvis man så vælger rund og oval.. så vil alle 3 blive vist ikke sandt??
for det er det der er meningen..
men når man skal tilføje oplysningerne til databasen, og man skal kunne tilføje 1 - 5 af mulighederne :
Rund
Firkantet
Trekantet
Oval
Tokantet
er det så ikke smartest at lave en kolonne for hver.. og derfor ændre alle koloner i søgningen til at lede i sin egen kolonne er du med??
så kan man jo bare sige lige som du gjorde med aktiv.. if 1 så skal den tages med ellers...
når man så tilføjer dataen tilføjer den vel bare et 1 tal til alle dem man markere i registreringen.. kan du følge mig??
jeg begynder på det nu.. har du en bedre løsning så råb endelig højt
og tak for hjælpen indtil nu... syntes faktisk det er en rigtig stor hjælp
Hilsen
Duno
| |
| Kommentar Fra : Duno |
Dato : 22-02-05 20:40 |
|
hey .. hvis de alle 3 bliver vist.. så bliver de vel kun vist en gang allesammen ikke???
| |
| Kommentar Fra : smorch |
Dato : 22-02-05 20:46 |
|
Hvis du vil have at en post skal kunne have alle 5 egenskaber, så skal du lave 5 kolonner 0g igen 5 gange så mange sql opbygnings sætninger.
Husk at alle checkboksene skal have unikke navne - ellers bliver det uoverskueligt.
God fornøjelse.
Smorch
| |
| Kommentar Fra : Duno |
Dato : 16-03-05 12:45 |
|
Hey jeg har da aldrig fået sendt dig dine points, det undskylder jeg meget
Er blevet så optaget af dette projekt at jeg helt har glemt alt omkring mig
Jeg sender points med det samme!
Et bonus spørgsmål
jeg får følgende fejl
Datatyperne stemmer ikke overens i kriterieudtrykket.
jeg har lokaliseret hvor problemet ligger, det er det område som behandler tal (felterne hedder nu 3,6,9, osv)
Jeg har sat databasefelterne til Tal, og koden ser ud som følgende
if request.form("3")="" then
SQL=SQL
else
SQL=SQL & " AND 3 <> '""'"
End if
men jeg får stadig denne fejl
Datatyperne stemmer ikke overens i kriterieudtrykket.
Har du nogen logisk forklaring på det?
Jeg ved ikke om man kan svare efter et spørgsmål er blevet afregnet, men kan du ikke det, er du meget velkommen til at skrive til mig på bhn22@hotmail.com
Hilsen
duno
| |
| Godkendelse af svar Fra : Duno |
Dato : 16-03-05 12:48 |
|
Tak for svaret smorch.
Til trods for dine store evner som anders and har du været en glimragende hjælp, mange tak for det!
Flere af din slags tak
Duno
| |
| Kommentar Fra : smorch |
Dato : 16-03-05 13:21 |
|
Det er en pling fejl vil jeg tro - med pling mener jeg enkelt og dobbelt citationstegn - da du så har valgt at 3 er et talfelt, skal der slet ikke bruges plinger.
Hvis man har en if .. then sætning med kun ét alternativ, kan man nøjes med at skrive een sætning, som illustreret herunder:
if request.form("3")="" then 'Denne sætning skal du egentlig ikke bruge til noget
SQL=SQL 'Heller ikke denne, da det jo bare giver status quo
else 'Ud med denne også
if request.form("3")<>"" then SQL=SQL & " AND 3 <> '' " ' DENNE SKAL BRUGES ISTEDEET FOR ALT DET ANDET
End if 'Og denne er netop blevet overflødigjort
Med venlig hilsen
Anders And
| |
| Kommentar Fra : smorch |
Dato : 16-03-05 13:21 |
|
Det er en pling fejl vil jeg tro - med pling mener jeg enkelt og dobbelt citationstegn - da du så har valgt at 3 er et talfelt, skal der slet ikke bruges plinger.
Hvis man har en if .. then sætning med kun ét alternativ, kan man nøjes med at skrive een sætning, som illustreret herunder:
if request.form("3")="" then 'Denne sætning skal du egentlig ikke bruge til noget
SQL=SQL 'Heller ikke denne, da det jo bare giver status quo
else 'Ud med denne også
if request.form("3")<>"" then SQL=SQL & " AND 3 <> '' " ' DENNE SKAL BRUGES ISTEDEET FOR ALT DET ANDET
End if 'Og denne er netop blevet overflødigjort
Med venlig hilsen
Anders And
| |
| Kommentar Fra : smorch |
Dato : 16-03-05 13:29 |
|
if request.form("3")<>"" then SQL=SQL & " AND 3 <> '' "
de sidste tre tegn er :
enekeltpling enkeltpling (uden mellemrum) mellemrum dobbeltpling
RAAAAAAAp
| |
| Kommentar Fra : Duno |
Dato : 16-03-05 13:57 |
|
Nej jeg får sku stadig samme fejl
Datatyperne stemmer ikke overens i kriterieudtrykket.
POST Data:
3=3&Submit=Opret
og felterne i databasen er tal.
Når vi er færdig med dette problem, vil jeg gerne henvise dig til endnu en guldgrube af et spørgsmål (det er også oprettet af mig)
http://www.kandu.dk/dk/spg/62758
Hilsen
duno
| |
| Kommentar Fra : Duno |
Dato : 11-06-05 15:31 |
|
Hey sender du ikke lige et svar, så jeg kan betale dig.
Du ydede jo en fantastisk hjælp, den skal da belønnes
Duno
| |
| Du har følgende muligheder | |
|
Eftersom du ikke er logget ind i systemet, kan du ikke skrive et indlæg til dette spørgsmål.
Hvis du ikke allerede er registreret, kan du gratis blive medlem, ved at trykke på "Bliv medlem" ude i menuen.
| |
|
|