/ Forside / Teknologi / Udvikling / ASP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
Fra formlar til sql
Fra : j p


Dato : 18-10-09 20:49

Hvis man har et input felt med dropdown valg muligheder:
Kvinde, Mand, Begge. Hvordan skriver man det i en sql?

sql =" select * from database where sex = Mand" er jo ok...men
hvis man kun vil bruge en sql....hvordan får man begge med?

mvh

Johnny


--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

 
 
Stig Johansen (18-10-2009)
Kommentar
Fra : Stig Johansen


Dato : 18-10-09 23:09

j p wrote:

> Hvis man har et input felt med dropdown valg muligheder:
> Kvinde, Mand, Begge. Hvordan skriver man det i en sql?
>
> sql =" select * from database where sex = Mand" er jo ok...men
> hvis man kun vil bruge en sql....hvordan får man begge med?

Det må du gøre med en if:
sql = "select <noget> from database"
if dit-valg <> "Begge" then
sql = sql + "where sex ='" + <valg> + "'"
end if

--
Med venlig hilsen
Stig Johansen

j p (19-10-2009)
Kommentar
Fra : j p


Dato : 19-10-09 13:20

Stig Johansen wrote in dk.edb.internet.webdesign.serverside.asp:
> j p wrote:
>
> > Hvis man har et input felt med dropdown valg muligheder:
> > Kvinde, Mand, Begge. Hvordan skriver man det i en sql?
> >
> > sql =" select * from database where sex = Mand" er jo
ok...men
> > hvis man kun vil bruge en sql....hvordan får man begge med?
>
> Det må du gøre med en if:
> sql = "select <noget> from database"
> if dit-valg <> "Begge" then
> sql = sql + "where sex ='" + <valg> + "'"
> end if
>
> --
> Med venlig hilsen
> Stig Johansen


Det er hvad jeg har i dag, jeg troede måske der var noget
"smartere". Det er jo ret mange if sætninger når man har mange
select menu bokse...

mvh

Johnny

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Stig Johansen (19-10-2009)
Kommentar
Fra : Stig Johansen


Dato : 19-10-09 17:52

j p wrote:

> Det er hvad jeg har i dag, jeg troede måske der var noget
> "smartere". Det er jo ret mange if sætninger når man har mange
> select menu bokse...

Man kan lave mange 'smarte' ting, afhængig af hvad du vil.

Du kunne f.eks. lave en subrutine til det, hvis det f.eks. altid er 'AND',
og 'alle' altid har værdien alle.
Her forudsætter jeg, at denne funktion er inkluderet (så er du også sikret
mod SQL injection;):
<http://w-o-p-r.dk/tips/asp/sql.inc.asp.txt>
.....
Dim SQL
Dim Parameters(100)
Dim Paramcount
Paramcount = 0

addSQL "sex",Request.form("sex")
addSQL "alder",Request.form("alder")
addSQL "amt",Request.form("amt")
addSQL "uddannelse",Request.form("uddannelse")
.. osv.

SQL = "SELECT <noget> from <table>" + SQL
rs = Query(Conn,SQL,Parameters,Paramcount)
While not rs.eof do
.... osv

Sub addSQL (Navn,value)
if value = 'Alle' then exit sub
if left(SQL,5) = "WHERE" then
SQL = SQL + " AND "
else
SQL = "WHERE "
end if
SQL = SQL + Navn + "=? "
Parameters(Paramcount) = value
Paramcount = Paramcount + 1
End Sub

--
Med venlig hilsen
Stig Johansen

j p (19-10-2009)
Kommentar
Fra : j p


Dato : 19-10-09 18:31

Stig Johansen wrote in dk.edb.internet.webdesign.serverside.asp:
> j p wrote:
>
> > Det er hvad jeg har i dag, jeg troede måske der var noget
> > "smartere". Det er jo ret mange if sætninger når man har mange
> > select menu bokse...
>
> Man kan lave mange 'smarte' ting, afhængig af hvad du vil.
>
> Du kunne f.eks. lave en subrutine til det, hvis det f.eks. altid er 'AND',
> og 'alle' altid har værdien alle.
> Her forudsætter jeg, at denne funktion er inkluderet (så er du også sikret
> mod SQL injection;):
> <http://w-o-p-r.dk/tips/asp/sql.inc.asp.txt>
> .....
> Dim SQL
> Dim Parameters(100)
> Dim Paramcount
> Paramcount = 0
>
> addSQL "sex",Request.form("sex")
> addSQL "alder",Request.form("alder")
> addSQL "amt",Request.form("amt")
> addSQL "uddannelse",Request.form("uddannelse")
> .. osv.
>
> SQL = "SELECT <noget> from <table>" + SQL
> rs = Query(Conn,SQL,Parameters,Paramcount)
> While not rs.eof do
> .... osv
>
> Sub addSQL (Navn,value)
> if value = 'Alle' then exit sub
> if left(SQL,5) = "WHERE" then
> SQL = SQL + " AND "
> else
> SQL = "WHERE "
> end if
> SQL = SQL + Navn + "=? "
> Parameters(Paramcount) = value
> Paramcount = Paramcount + 1
> End Sub
>
> --
> Med venlig hilsen
> Stig Johansen


Det ser smart ud....men også indviklet...kunne du evt. sætte kommentare på så
kan jeg måske se logikken bedre, tak.

mvh

Johnny

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Stig Johansen (20-10-2009)
Kommentar
Fra : Stig Johansen


Dato : 20-10-09 05:58

Inline og svar.

j p wrote:

> Stig Johansen wrote in dk.edb.internet.webdesign.serverside.asp:
>> Her forudsætter jeg, at denne funktion er inkluderet (så er du også
>> sikret mod SQL injection;):
>> <http://w-o-p-r.dk/tips/asp/sql.inc.asp.txt>

Den skal du bare downloade og gemme som eks. include_files/sql.inc.asp, og
så include den i din ASP.

>> addSQL "sex",Request.form("sex")
>> addSQL "alder",Request.form("alder")
>> addSQL "amt",Request.form("amt")
>> addSQL "uddannelse",Request.form("uddannelse")

Disse linie kalder subrutinen, som generer SQL fra WHERE og resten (hvis der
er noget)
Prøv evt at lægge en response.write SQL efter hvert kald.


>> SQL = "SELECT <noget> from <table>" + SQL

Da vi kun har bygget WHERE delen, skal vi have SELECT delene med - hov,
huske lige en ekstra blank.

SQL = "SELECT <noget> from <table> " + SQL

Hvis du udskrive SQL'en skulle der gerne være noget "WHERE <noget> = ?
AND.."

>> rs = Query(Conn,SQL,Parameters,Paramcount)
Her kaldes funktionen, skal dog være:
set rs = Query(Conn,SQL,Parameters,Paramcount)

>> While not rs.eof do
Det sædvanlige, bortset fra jeg tænkte pascal da jeg skrev det

Og her defineres subrutinen
>> Sub addSQL (Navn,value)
>> if value = 'Alle' then exit sub
Her går jeg ud fra, at der står 'Alle' i din select, og hvis der gør det,
skal den ikke indgå i WHERE delen.

>> if left(SQL,5) = "WHERE" then
>> SQL = SQL + " AND "
>> else
>> SQL = "WHERE "
>> end if

Her tjekkers om der er en WHERE i forvejen.
Hvis der er det, skal vi fortsætte med AND, ellers starter vi med WHERE

>> SQL = SQL + Navn + "=? "
>> Parameters(Paramcount) = value
Her sættes værdien ind i den tilhørende parameter (svarende til ?-tegnene)
>> Paramcount = Paramcount + 1
>> End Sub
> Det ser smart ud....men også indviklet...kunne du evt. sætte kommentare på
> så kan jeg måske se logikken bedre, tak.

Det burde være lige til at klippe klistre over, bortset fra jeg ikke kender
dine felt og form navne.

Og så tager jeg forbehold for syntaxfejl ;)

Men prøv at lave nogle response.write undervejs, så kan du bedre se hvad der
foregår.

--
Med venlig hilsen
Stig Johansen

j p (20-10-2009)
Kommentar
Fra : j p


Dato : 20-10-09 08:15

Stig Johansen wrote in dk.edb.internet.webdesign.serverside.asp:
> Inline og svar.
>
> j p wrote:
>
> > Stig Johansen wrote in dk.edb.internet.webdesign.serverside.asp:
> >> Her forudsætter jeg, at denne funktion er inkluderet (så er du også
> >> sikret mod SQL injection;):
> >> <http://w-o-p-r.dk/tips/asp/sql.inc.asp.txt>
>
> Den skal du bare downloade og gemme som eks. include_files/sql.inc.asp, og
> så include den i din ASP.
>
> >> addSQL "sex",Request.form("sex")
> >> addSQL "alder",Request.form("alder")
> >> addSQL "amt",Request.form("amt")
> >> addSQL "uddannelse",Request.form("uddannelse")
>
> Disse linie kalder subrutinen, som generer SQL fra WHERE og resten (hvis
der
> er noget)
> Prøv evt at lægge en response.write SQL efter hvert kald.
>
>
> >> SQL = "SELECT <noget> from <table>" + SQL
>
> Da vi kun har bygget WHERE delen, skal vi have SELECT delene med - hov,
> huske lige en ekstra blank.
>
> SQL = "SELECT <noget> from <table> " + SQL
>
> Hvis du udskrive SQL'en skulle der gerne være noget "WHERE <noget> = ?
> AND.."
>
> >> rs = Query(Conn,SQL,Parameters,Paramcount)
> Her kaldes funktionen, skal dog være:
> set rs = Query(Conn,SQL,Parameters,Paramcount)
>
> >> While not rs.eof do
> Det sædvanlige, bortset fra jeg tænkte pascal da jeg skrev det
>
> Og her defineres subrutinen
> >> Sub addSQL (Navn,value)
> >> if value = 'Alle' then exit sub
> Her går jeg ud fra, at der står 'Alle' i din select, og hvis der gør det,
> skal den ikke indgå i WHERE delen.
>
> >> if left(SQL,5) = "WHERE" then
> >> SQL = SQL + " AND "
> >> else
> >> SQL = "WHERE "
> >> end if
>
> Her tjekkers om der er en WHERE i forvejen.
> Hvis der er det, skal vi fortsætte med AND, ellers starter vi med WHERE
>
> >> SQL = SQL + Navn + "=? "
> >> Parameters(Paramcount) = value
> Her sættes værdien ind i den tilhørende parameter (svarende til ?-tegnene)
> >> Paramcount = Paramcount + 1
> >> End Sub
> > Det ser smart ud....men også indviklet...kunne du evt. sætte kommentare

> > så kan jeg måske se logikken bedre, tak.
>
> Det burde være lige til at klippe klistre over, bortset fra jeg ikke kender
> dine felt og form navne.
>
> Og så tager jeg forbehold for syntaxfejl ;)
>
> Men prøv at lave nogle response.write undervejs, så kan du bedre se hvad
der
> foregår.
>
> --
> Med venlig hilsen
> Stig Johansen

Jeg takker mange gange, nu gik den ind på lystavlen :)

mvh

Johnny


PS. kender du noget script som kan vise whoisonline med asp og mysql ?



--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Stig Johansen (20-10-2009)
Kommentar
Fra : Stig Johansen


Dato : 20-10-09 10:35

j p wrote:

> PS. kender du noget script som kan vise whoisonline med asp og mysql ?

Jeg bruger selv:
<http://geektools.com/whois.php>
Men disse services er traditionelt blevet misbrugt, så derfor er der
CAPTHA's m.v.

Hvis der ikke var den begrænsning, ville det være en smal sag at lave en
serverside request.

Men jeg tvivler stærkt på du kan finde en whois service, som kan bruges
serverside.

Jo - du kan downloade, og implementere din egen whois service, men det gør
man ikke bare lige med asp.

--
Med venlig hilsen
Stig Johansen

Leif Neland (20-10-2009)
Kommentar
Fra : Leif Neland


Dato : 20-10-09 15:06

Stig Johansen wrote:
>>> if left(SQL,5) = "WHERE" then
>>> SQL = SQL + " AND "
>>> else
>>> SQL = "WHERE "
>>> end if
>
> Her tjekkers om der er en WHERE i forvejen.
> Hvis der er det, skal vi fortsætte med AND, ellers starter vi med WHERE
>

Jeg plejer at have et "WHERE 1=1", så hvert ekstra udtryk bare kan
AND'es på. Optimizeren kan let fjerne 1=1.

Leif

Søg
Reklame
Statistik
Spørgsmål : 177414
Tips : 31962
Nyheder : 719565
Indlæg : 6407848
Brugere : 218876

Månedens bedste
Årets bedste
Sidste års bedste