07. august 2002 - 11:20Der er
30 kommentarer og 1 løsning
søgning med checkbox
Jeg har to checkboxe, med værdien "DVD" og "VHS". Nu vil jeg udfra hvilke der er markeret trække dem udfra databasen der er af typen DVD eller VHS (bestemt ud fra en kollone i db'en) Nogen der har en god løsning på det?
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
Hvis en checkbox er markeret i formen, vil du kunne se den i Request.Form("FeltNavn"), hvis ikke eksisterer den ikke. Så du kan eks. lave et check på dette og dynamisk udvide dit SQL statement.
strSQL = "SELECT * FROM Tabel"
If Request.Form("FeltNavn") <> "" Then strSQL = strSQL & " WHERE VHS = 'J'" End If
Lidt pænere kunne det eks. være noget i denne stil:
strSQL = "SELECT * FROM Tabel"
If Request.Form("VHS") <> "" Then strWHERE = " WHERE VHS = 'J'" End If
If Request.Form("DVD") <> "" Then If strWHERE = "" Then strWHERE = " WHERE DVD = 'J'" Else strWHERE = strWHERE & " AND VHS = 'J'" End If End If
strSQL = strSQL & strWHERE
Synes godt om
Slettet bruger
07. august 2002 - 11:27#4
Vi skal nok se noget af din kode.
Hvad hedder checkboksene? Må man gerne kunne markere begge på samme tid?
Men...vi går ud fra at de hedder vhs og dvd (smart ikke?)
If Request.Form("vhs") <> "" Then strQuery = "OR feltnavn = 'vhs'" End If
If Request.Form("dvd") <> "" Then strQuery = strQuery & "OR feltnavn = 'dvd'" End If
strQuery = "SELECT * FROM tabelnavn WHERE id < 0" & strQuery
Dette giver en query der først beder om alle poster med en id lavere end 0. Dette er der ingen der har, men det er en slamkode metode til at kunne bruge vores OR sætninger, alt efter hvor mange der er krydset af.
Prøv og se om det ikke virker. Jeg har ikke testet det.
begge mine checkboxe hedder "format" og har value "VHS" og "DVD" Og de skal begge kunne markeres. criterius.dk giver nemlig ingen resultater hvis begge er markeret
If Request.Form("vhs") <> "" Then strQuery = "OR feltnavn = 'vhs'" End If
If Request.Form("dvd") <> "" Then strQuery = strQuery & "OR feltnavn = 'dvd'" End If
strQuery = "SELECT * FROM tabelnavn WHERE id < 0" & strQuery
Hvis det er checkbokse skal de have forskellige navne. Ellers kan du ikke krydse begge af på en gang, da den så ikke kan finde ud af det.
Jeg vil foreslå at kalde den ene for format1 og den anden format2
If Request.Form("format1") <> "" Then strQuery = "OR feltnavn = 'VHS'" End If
If Request.Form("format2") <> "" Then strQuery = strQuery & "OR feltnavn = 'DVD'" End If
strQuery = "SELECT * FROM tabelnavn WHERE id < 0" & strQuery
Har du 1 felt i din database der kan indeholde enten DVD eller VHS? Eller har du 2 felter, der hedder DVD og HVS der så kan have en værdi på 1 eller 0?
Så vil de komme som en kommaseperaret streng i Request.Form("Format"). Så kan du eks. lave noget i denne stil:
If InStr(Request.Form("Format"), ",") Then myArray = Split(Request.Form("Format"), ",")
For i = 0 To UBound(myArray) If strWHERE = "" Then strWHERE = " WHERE " & myArray(i) & " = 'J'" Else strWHERE = " AND " & myArray(i) & " = 'J'" End If Next End If
Du skal så have udvidet check'et for om den ene eller anden er udfyldt.
Det vil dog være noget nemmere at give dem forskellige navne og bruge mit eksempel fra før.
Synes godt om
Slettet bruger
07. august 2002 - 11:37#11
Heh...så navngiv dine checkbokse med genre1, genre2, genre3 osv. og lav en For løkke der kører dem igennem i Queryen.
Jeg er ikke så stiv i ASP endnu, men ville nemt kunne lave det i PHP ;)
Jo, du kan sagtens bruge IN hvis værdierne skal kontrolleres mod samme felt i databasen, det var bare ikke sådan jeg opfattede spørgsmålet :-)
Så kan du eks. lave et check for om der er komma i værdien fra formen, er der det kan du bruge IN, men du skal stadig have den enkelte værdi omsluttet af ' (pinger), da det er tekstværdier.
Jeg vil ikke skrive en masse kode til at illustrere det, da du jo ikke bryder dig om mine forslag.
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.