Avatar billede steen_hansen Forsker
17. oktober 2002 - 07:22 Der er 39 kommentarer og
1 løsning

Bestemt antal og få <select>-boksen til at vise valget

Jeg vil have, at man skal kunne vælge at få vist 25, 50, 75, 100, 150 eller alle fra databasen. Vælger brugeren 50, skal select-boksen selvfølgelig vise, at man har valgt 50 visninger. Hvordan gør jeg?

Jeg er klar over, at det skal skrives lidt om med "else...endif" eller nåed'. Men hvordan?

<form method="POST" action ="default.asp">
    Antal visninger:</b>&nbsp;&nbsp;
    <select size="1" name="antal_visninger" class="input">
        <option value="25">25</option>
        <option value="50">50</option>
        <option value="75">75</option>
        <option value="100">100</option>
        <option value="150">150</option>
        <option value="Alle">Alle</option>
    </select>
    &nbsp;&nbsp;<input type="submit" name="antal" value="Opdater" class="input1">
</form>

<%

If antal_visninger = "25" Then
    strSQL = "SELECT TOP 25 username, created, lastseen, showstatus FROM profiles ORDER BY username"
    Set RS = Conn.Execute (strSQL)

If antal_visninger = "50" Then
    strSQL = "SELECT TOP 50  username, created, lastseen, showstatus FROM profiles ORDER BY username"
    Set RS = Conn.Execute (strSQL)
End If

If antal_visninger = "75" Then
    strSQL = "SELECT TOP 75  username, created, lastseen, showstatus FROM profiles ORDER BY username"
    Set RS = Conn.Execute (strSQL)
End If

If antal_visninger = "100" Then
    strSQL = "SELECT TOP 100  username, created, lastseen, showstatus FROM profiles ORDER BY username"
    Set RS = Conn.Execute (strSQL)
End If

If antal_visninger = "150" Then
    strSQL = "SELECT TOP 150  username, created, lastseen, showstatus FROM profiles ORDER BY username"
    Set RS = Conn.Execute (strSQL)
End If

If antal_visninger = "Alle" Then
    strSQL = "SELECT * username, created, lastseen, showstatus FROM profiles ORDER BY username"
    Set RS = Conn.Execute (strSQL)
End If

Response.Write ........
Avatar billede medions Nybegynder
17. oktober 2002 - 07:36 #1
antal_visninger = Request.Form("antal_visninger")
If antal_visninger = 25 Then
    strSQL = "SELECT TOP 25 username, created, lastseen, showstatus FROM profiles ORDER BY username"
    Set RS = Conn.Execute (strSQL)

If antal_visninger = 50 Then
    strSQL = "SELECT TOP 50  username, created, lastseen, showstatus FROM profiles ORDER BY username"
    Set RS = Conn.Execute (strSQL)
End If

If antal_visninger = 75 Then
    strSQL = "SELECT TOP 75  username, created, lastseen, showstatus FROM profiles ORDER BY username"
    Set RS = Conn.Execute (strSQL)
End If

If antal_visninger = 100 Then
    strSQL = "SELECT TOP 100  username, created, lastseen, showstatus FROM profiles ORDER BY username"
    Set RS = Conn.Execute (strSQL)
End If

If antal_visninger = 150 Then
    strSQL = "SELECT TOP 150  username, created, lastseen, showstatus FROM profiles ORDER BY username"
    Set RS = Conn.Execute (strSQL)
End If

If antal_visninger = "Alle" Then
    strSQL = "SELECT * username, created, lastseen, showstatus FROM profiles ORDER BY username"
    Set RS = Conn.Execute (strSQL)
End If

While Not rs.EOF
  Response.Write(rs("felt") & "<br>"
rs.MoveNext()
Wend

//>Rune
Avatar billede steen_hansen Forsker
17. oktober 2002 - 07:42 #2
Jeg faldt tilfældigt over et kodeeksempel. Om det er noget, det skal jeg have din hjælp til:

<%
vTop = Request.Querystring("antal")
  If vTop > 200 or vTop < 25 then
  vTop = 50
End If
%>

<select size="1" name="antal_visninger">
  <option value="25" <% If vTop = "25" Then %> selected <% End If %>>25</option>
  <option value="50" <% If vTop = "50" Then %> selected <% End If %>>50</option>

etc.

</select>
Avatar billede steen_hansen Forsker
17. oktober 2002 - 07:43 #3
Ups, så ikke lige dit svar, Rune :o) Kigger lige ...
Avatar billede medions Nybegynder
17. oktober 2002 - 07:44 #4
Det kan du ikke bruge...

Det udskriver jo enten eller! Altså det har kun 2 punkter med en alt for stor diference!

//>Rune
Avatar billede steen_hansen Forsker
17. oktober 2002 - 07:47 #5
Nej, det skal jo indeholde 25, 50, 75, 100, 150 eller alle. Gad bare ikke skrive det hele ud :o)
Avatar billede steen_hansen Forsker
17. oktober 2002 - 07:49 #6
Men select-boksen vil i det mindste vise det antal man har valgt på den måde:

<option value="25" <% If vTop = "25" Then %> SELECTED <% End If %>>25</option>
Avatar billede medions Nybegynder
17. oktober 2002 - 07:49 #7
Jamen det her er jo rigtig nok:

antal_visninger = Request.Form("antal_visninger")
If antal_visninger = 25 Then
    strSQL = "SELECT TOP 25 username, created, lastseen, showstatus FROM profiles ORDER BY username"
    Set RS = Conn.Execute (strSQL)

If antal_visninger = 50 Then
    strSQL = "SELECT TOP 50  username, created, lastseen, showstatus FROM profiles ORDER BY username"
    Set RS = Conn.Execute (strSQL)
End If

If antal_visninger = 75 Then
    strSQL = "SELECT TOP 75  username, created, lastseen, showstatus FROM profiles ORDER BY username"
    Set RS = Conn.Execute (strSQL)
End If

If antal_visninger = 100 Then
    strSQL = "SELECT TOP 100  username, created, lastseen, showstatus FROM profiles ORDER BY username"
    Set RS = Conn.Execute (strSQL)
End If

If antal_visninger = 150 Then
    strSQL = "SELECT TOP 150  username, created, lastseen, showstatus FROM profiles ORDER BY username"
    Set RS = Conn.Execute (strSQL)
End If

If antal_visninger = "Alle" Then
    strSQL = "SELECT * username, created, lastseen, showstatus FROM profiles ORDER BY username"
    Set RS = Conn.Execute (strSQL)
End If

While Not rs.EOF
  Response.Write(rs("felt") & "<br>"
rs.MoveNext()
Wend

//>Rune
Avatar billede steen_hansen Forsker
17. oktober 2002 - 07:53 #8
Ok, men hvordan får jeg så "selected" ved 75 visninger, hvis brugeren har valgt 75 visninger?
Avatar billede medions Nybegynder
17. oktober 2002 - 07:55 #9
Sådan som jeg har skrevet! -Gør den da ik' det?

Hvis nej, så kom lige med en fejlmelding!

//>Rune
Avatar billede steen_hansen Forsker
17. oktober 2002 - 07:57 #10
Jeg prøver ...
Avatar billede steen_hansen Forsker
17. oktober 2002 - 07:57 #11
Det kan jeg ikke se, at det skulle gøre, men jeg prøver ...
Avatar billede steen_hansen Forsker
17. oktober 2002 - 08:00 #12
Hvad skal "felt" være?

Response.Write(RS("felt") & "<br>"
Avatar billede steen_hansen Forsker
17. oktober 2002 - 08:08 #13
Jeg har remmet denne linie ud:

'Response.Write(RS("felt") & "<br>"

og sat en End If ind i den øverste:

If antal_visninger = 25 Then
    strSQL = "SELECT TOP 25 username, created, lastseen, showstatus FROM profiles ORDER BY username"
    Set RS = Conn.Execute (strSQL)
End IF

Nu står den bare ved 150, men der bliver ikke trukket noget ud?
Avatar billede steen_hansen Forsker
17. oktober 2002 - 08:11 #14
Sorry! Øjeblik ...
Avatar billede steen_hansen Forsker
17. oktober 2002 - 08:12 #15
Jo, det virker, pånær at select-boksen skifter til "Alle", uanset hvad jeg vælger...
Avatar billede steen_hansen Forsker
17. oktober 2002 - 08:17 #16
Som standard skal den stå på 25 visninger. Og når jeg trykker på linket til siden, får jeg denne fejl:

Microsoft VBScript runtime error '800a01a8'
Object required: ''

Default.asp, line 111

LINIE 111: While NOT RS.EOF

Men den forsvinder så, når jeg vælger et antal fra select-boksen og trykker på "Opdater"
Avatar billede steen_hansen Forsker
17. oktober 2002 - 08:20 #17
Og hvis jeg vælger "Alle", får jeg denne fejl:

Microsoft VBScript runtime error '800a000d'

Type mismatch: '[string: "Alle"]'

default.asp, line 78

LINIE 78: If antal_visninger = 25 Then
Avatar billede steen_hansen Forsker
17. oktober 2002 - 08:25 #18
Min <select></select>

<select size="1" name="antal_visninger" class="input">
    <option value="2">2</option>
    <option value="3">3</option>
    <option value="4">4</option>
    <option value="5">5</option>
    <option value="Alle">Alle</option>
</select>



Mine SQL-sætninger:

antal_visninger = Request.Form("antal_visninger")
If antal_visninger = 2 Then
    strSQL = "SELECT TOP 2 username, created, lastseen, showstatus FROM profiles ORDER BY username"
    Set RS = Conn.Execute (strSQL)
End If

If antal_visninger = 3 Then
    strSQL = "SELECT TOP 3  username, created, lastseen, showstatus FROM profiles ORDER BY username"
    Set RS = Conn.Execute (strSQL)
End If

If antal_visninger = 4 Then
    strSQL = "SELECT TOP 4  username, created, lastseen, showstatus FROM profiles ORDER BY username"
    Set RS = Conn.Execute (strSQL)
End If

If antal_visninger = 5 Then
    strSQL = "SELECT TOP 5  username, created, lastseen, showstatus FROM profiles ORDER BY username"
    Set RS = Conn.Execute (strSQL)
End If

If antal_visninger = "Alle" Then
    strSQL = "SELECT * username, created, lastseen, showstatus FROM profiles ORDER BY username"
    Set RS = Conn.Execute (strSQL)
End If
Avatar billede medions Nybegynder
17. oktober 2002 - 08:46 #19
<select size="1" name="antal_visninger" class="input">
    <option value="2">2</option>
    <option value="3">3</option>
    <option value="4">4</option>
    <option value="5">5</option>
    <option value="6">Alle</option>
</select>

og skift denne:
If antal_visninger = "Alle" Then
    strSQL = "SELECT * username, created, lastseen, showstatus FROM profiles ORDER BY username"
    Set RS = Conn.Execute (strSQL)
End If
ud med denne:

If antal_visninger = 6 Then
    strSQL = "SELECT * username, created, lastseen, showstatus FROM profiles ORDER BY username"
    Set RS = Conn.Execute (strSQL)
End If

//>Rune
Avatar billede steen_hansen Forsker
17. oktober 2002 - 08:53 #20
Jeg har ændret:

<option value="1000">Alle</option>

If antal_visninger = "1000" Then
    strSQL = "SELECT * username, created, lastseen, showstatus FROM profiles ORDER BY username"
    Set RS = Conn.Execute (strSQL)
End If

Uanset hvad jeg vælger, står værdien i select-boksen til "2".

Hvis jeg vælger "Alle", får jeg denne fejl:

Microsoft OLE DB Provider for ODBC Drivers error '80040e14'

[Microsoft][ODBC Microsoft Access Driver] Syntax error (missing operator) in query expression '* username'.

default.asp, line 100

LINIE 100: Set RS = Conn.Execute (strSQL)

Linie 100 hører til
If antal_visninger = "1000" Then ......
Avatar billede medions Nybegynder
17. oktober 2002 - 08:56 #21
Hehe, det er pga. din SQL statement er forkert!

If antal_visninger = "1000" Then
    strSQL = "SELECT * FROM profiles ORDER BY username"
    Set RS = Conn.Execute (strSQL)
End If

//>Rune
Avatar billede steen_hansen Forsker
17. oktober 2002 - 08:59 #22
Ok, så er den på plads. Men uanset hvad valget er, så "swapper" select-boksen tilbage til "2"?
Avatar billede medions Nybegynder
17. oktober 2002 - 09:13 #23
Ja, det er jo fordi at du skal sætte den valgte til SELECTED. I det du sætter den til SELECTED så er det den der bliver det valgte! Eks.:



<select size="1" name="antal_visninger" class="input">
    <option value="2" <% If Request.Form("antal_visniger") = 2 Then Response.Write("SELECTED")%>>2</option>
    <option value="3" <% If Request.Form("antal_visniger") = 3 Then Response.Write("SELECTED")%>>3</option>
    <option value="4" <% If Request.Form("antal_visniger") = 4 Then Response.Write("SELECTED")%>>4</option>
    <option value="5" <% If Request.Form("antal_visniger") = 5 Then Response.Write("SELECTED")%>>5</option>
    <option value="6" <% If Request.Form("antal_visniger") = 6 Then Response.Write("SELECTED")%>>Alle</option>
</select>

//>Rune
Avatar billede steen_hansen Forsker
17. oktober 2002 - 09:23 #24
Ok, det virker :o) Men så er der den sidste fejl: Når jeg trykker på linket for at komme ind til siden, får jeg denne fejl:

Microsoft VBScript runtime error '800a01a8'
Object required: ''

default.asp, line 105

LINIE 105: While NOT RS.EOF

Når jeg vælger et antal fra select-boksen og trykker på "Opdater", så er den ok. Men jeg får fejlen, når jeg trykker mig ind på siden.
Avatar billede steen_hansen Forsker
17. oktober 2002 - 09:33 #25
Jeg tror det er fordi der ikke er nogen værdi at arbejde med. Som standard skal der udskrives det mindste antal, hvilket i dette tilfælde er "2" (det bliver ændret til "25" senere, når der er noget i databasen).
Avatar billede medions Nybegynder
17. oktober 2002 - 09:42 #26
yep, that's why! :o)

//>Rune
Avatar billede steen_hansen Forsker
17. oktober 2002 - 09:43 #27
Hvordan klarer jeg så den?
Avatar billede steen_hansen Forsker
17. oktober 2002 - 10:14 #28
Jeg prøvede at sætte denne ind, men det ændrede ikke noget:

<option value="2" <% If Request.Form("antal_visninger") = 2 Then Response.Write("selected")%>selected>2</option>

Nogen forslag?
Avatar billede steen_hansen Forsker
17. oktober 2002 - 10:24 #29
Jeg satte dette ind over select-boksen:

strSQL = "SELECT TOP 2 username, created, lastseen, showstatus FROM profiles ORDER BY username"
Set RS = Conn.Execute (strSQL)

- og så virkede det! Tak for hjælpen, Rune! :o)
Avatar billede medions Nybegynder
17. oktober 2002 - 10:28 #30
Anytime ;o)
Thx 4 Poinz

//>Rune
Avatar billede steen_hansen Forsker
17. oktober 2002 - 10:32 #31
Lige et tillægsspørgsmål: Kan man fjerne "Opdater"-knappen, så antallet af visninger bliver valgt, når man slipper museknappen, eller er det omfattende?
Avatar billede medions Nybegynder
17. oktober 2002 - 10:37 #32
-jeg forstår ikke helt hvad du mener?

//>Rune
Avatar billede steen_hansen Forsker
17. oktober 2002 - 10:39 #33
Istedet for at man vælger "4" og trykker på "Opdater", kan man så fjerne knappen "Opdater", så valget vil blive eksekveret, når man har valgt "4"?
Avatar billede steen_hansen Forsker
17. oktober 2002 - 10:40 #34
Du trykker på pil-ned i select-boksen, og når du trykker på "4", bliver de 4 øverste hevet ud?
Avatar billede steen_hansen Forsker
17. oktober 2002 - 10:43 #35
.... uden at du behøver trykke på submit-knappen "Opdater"?
Avatar billede medions Nybegynder
17. oktober 2002 - 10:50 #36
*lol* Jeg er fuldstændig lost i hvad du mener!!!

Du kan ikke fjerne Opdater knappen...

//>Rune
Avatar billede steen_hansen Forsker
17. oktober 2002 - 10:58 #37
Jo, det kan man, men jeg tror så man skal foruddefinere antal_visninger.

Men skidt med det, Rune! Jeg vil hellere have lavet et par ekstra features: Man skal også kunne vælge, om man vil have vist dem i alfabetisk rækkefølge, eller om man vil have vist dem efter ID. Jeg opretter et nyt spørgsmål. Er du frisk på den? Jeg kunne forestille mig dette efter select-boksen:

<input type="radio" value="alfabetisk" checked name="R1">&nbsp;&nbsp;alfabetisk&nbsp;&nbsp;<input type="radio" value="order_by_ID" name="R1">&nbsp;&nbsp;efter ID
Avatar billede steen_hansen Forsker
17. oktober 2002 - 11:16 #38
Jeg TROR jeg har den ...
Avatar billede steen_hansen Forsker
17. oktober 2002 - 11:36 #39
Jeg opretter et nyt spørgsmål :o/ Hvis du er frisk på at hjælpe, håber jeg du kan hjælpe mig hurtigt. Kommer med et link om lidt.
Avatar billede steen_hansen Forsker
17. oktober 2002 - 11:43 #40
Jeg har lagt et spørgsmål her: http://www.eksperten.dk/spm/271361

Du er velkommen til at hjælpe, hvis du har mod på det :o)
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