|
| Sortering af links Fra : Ukendt |
Dato : 23-01-05 03:54 |
|
Jeg har en side, der skal fungere som forside til en masse andre sider, som
jeg har liggende (nyheder / artikler).
Det kunne være smart, hvis brugerne kunne sortere denne (lange) række af
sider efter fx alfabetisk rækkefølge, emne og dato afhængig af, hvad han
foretrækker.
Kan det lade sig gøre? Jeg går ud fra, at vi skal have fat i noget med
database?
Der behøver ikke være nogen indtastningsformular til at lægge nye sider op,
da det kun er mig, der lægger nye side rop og derfor blot kan redigere
direkte i databasen.
Til gengæld skal man kunne vælge, hvilken af de 3 nævnte kriterier, man vil
sortere efter.
Derefter skal sidens navn, oprettelsesdato og emne blive vist.
Man skal kunne klikke på siden (linket) som sender brugeren videre til den
pågældende side.
Jeg kan sagtens selv kreere en database. Men hvordan kan selve ASP - koden
laves? Eller i hvert fald begyndes på?
| |
finn elmgaard (23-01-2005)
| Kommentar Fra : finn elmgaard |
Dato : 23-01-05 11:24 |
|
"Michael Sørensen" <webmaster_m-s SNABEL-A stofanet.dk> wrote in message
news:41f311c3$0$633$ba624c82@nntp02.dk.telia.net...
> Jeg har en side, der skal fungere som forside til en masse andre sider,
som
> jeg har liggende (nyheder / artikler).
> Det kunne være smart, hvis brugerne kunne sortere denne (lange) række af
> sider efter fx alfabetisk rækkefølge, emne og dato afhængig af, hvad han
> foretrækker.
>
>
Hvis du placerer dine links i en database, hvor du også har informationer om
emner og data, kan du f.eks. gøre noget lignende følgende:
På startsiden laver du en Form med 3 radiobuttons for de 3
sorteringsmuligheder samt en submit-knap. På den side du kalder med
submit-knappen aflæser du med en Request.Form hvilken sorteringsmulighed,
brugeren har ønsket:
ValgSortering=Request.Form("navnetpådineradiobuttons")
Dernæst opbygger du din select-sætning
SQLstr="SELECT.............ORDER BY "& ValgtSortering
Så placerer du dine links på siden med en
Do until RS.EOF
....
.....
RS.MoveNext
Loop
mvh
Finn
| |
Ukendt (31-01-2005)
| Kommentar Fra : Ukendt |
Dato : 31-01-05 12:43 |
|
"finn elmgaard" <agertoften@XXXstofanet.dk> skrev i en meddelelse
news:41f37a6c$0$22706$ba624c82@nntp04.dk.telia.net...
>
> "Michael Sørensen" <webmaster_m-s SNABEL-A stofanet.dk> wrote in message
> news:41f311c3$0$633$ba624c82@nntp02.dk.telia.net...
>> Jeg har en side, der skal fungere som forside til en masse andre sider,
> som
>> jeg har liggende (nyheder / artikler).
>> Det kunne være smart, hvis brugerne kunne sortere denne (lange) række af
>> sider efter fx alfabetisk rækkefølge, emne og dato afhængig af, hvad han
>> foretrækker.
>>
>>
> Hvis du placerer dine links i en database, hvor du også har informationer
> om
> emner og data, kan du f.eks. gøre noget lignende følgende:
>
> På startsiden laver du en Form med 3 radiobuttons for de 3
> sorteringsmuligheder samt en submit-knap. På den side du kalder med
> submit-knappen aflæser du med en Request.Form hvilken sorteringsmulighed,
> brugeren har ønsket:
>
> ValgSortering=Request.Form("navnetpådineradiobuttons")
>
> Dernæst opbygger du din select-sætning
>
> SQLstr="SELECT.............ORDER BY "& ValgtSortering
>
> Så placerer du dine links på siden med en
>
> Do until RS.EOF
> ...
> ....
> RS.MoveNext
> Loop
Hej Finn,
tak for dit bidrag.
Jeg har forsøgt en smule, men mangler stadig en stor del basisviden indenfor
ASP. Håber du kan hjælpe lidt igen.
Her er, hvad jeg har sammensat indtil nu (klippet ud fra selve siden):
---
<form method=get action="/artikler.asp?sorter">
<fieldset>
<label>Sorter efter:</label>
<input checked name="sortering" type="radio" value="0">Dato
<input name="sortering" type="radio" value="1">Alfabetisk
<input name="sortering" type="radio" value="2">Emne
<br />
<input type="submit" value="Sorter" name="Sorter">
</fieldset>
</form>
<%
tempConn = "PROVIDER=MSDASQL;DRIVER={Microsoft Access Driver (*.mdb)};DBQ="
& Server.MapPath("../../database/sider.mdb") & ";UID=admin;PWD=;"
ValgSortering=Request.Form("sortering")
strSQL = "SELECT * FROM Artikler ORDER BY Valgsortering DESC;"
Set myConn = Server.CreateObject("ADODB.Connection")
myConn.Open tempConn
Set rs = myConn.Execute(strSQL)
If Not (rs.BOF Or rs.EOF) Then
Response.Write "<table width='100%' border='0' cellpadding='1'
cellspacing='1'>"
Do While Not rs.EOF
dtmDato = rs("Dato")
dtmDato = FormatDateTime(dtmDato,vbLongDate) & " kl. " &
FormatDateTime(dtmDato,vbLongTime)
Response.Write "<tr><td style='width:20%'>" & dtmDato & "</td>"
Response.Write "<td><a href="" & rs("adresse") & "">" & rs("Titel") &
"</a></td>"
Response.Write "<td>" & rs("Forfatter") & "</td>"
Response.Write "<td>" & rs("Emne") & "</td></tr>"
rs.MoveNext
Loop
Response.Write "</table>"
Else
Response.Write "<p>Der er endnu ikke nogle tilgængelige artikle</p>"
End If
myConn.Close
Set myConn = Nothing
End Select
%>
| |
finn elmgaard (31-01-2005)
| Kommentar Fra : finn elmgaard |
Dato : 31-01-05 22:56 |
|
> >
> > "Michael Sørensen" <webmaster_m-s SNABEL-A stofanet.dk> wrote in message
> > news:41f311c3$0$633$ba624c82@nntp02.dk.telia.net...
>
> Jeg har forsøgt en smule, men mangler stadig en stor del basisviden
indenfor
> ASP. Håber du kan hjælpe lidt igen.
>
> Her er, hvad jeg har sammensat indtil nu (klippet ud fra selve siden):
Der er en del ting, der bør rettes, og jeg tror ikke jeg kan udpege det
hele, men forsøg igen med nedenstående kommentarer og kom så tilbage med
eventuelle konkrete fejl.
Jeg synes, du for overskuelighedens skyld skal udføre det på to sider: En
side 1, hvor du vælger sorteringsprincip og kalder side 2 (artikler.asp),
hvor du viser alle dine artikler. (Når det kører kan du evt. forsøge at
samle det på én side).
Side 1 skal indeholde din form:
>
> <form method=get action="/artikler.asp?sorter">
Her mener jeg, du skal bruge metoden post i stedet for get. Desuden skal du
ikke have noget efter filnavnet.
Du kan godt overføre en variabel på denne måde, men så skal du skrive
"artikler.asp?sorter=etellerandet" . Denne variabel skal du så på side 2
samle op med Request.Querystring("sorter"). Men her overfører du en valgt
variabel fra formen med post-metoden, og den skal du samle op, som du har
forsøgt, med Request.Form("sortering").
Altså: <form method=post action="/artikler.asp">
> <fieldset>
> <label>Sorter efter:</label>
> <input checked name="sortering" type="radio" value="0">Dato
> <input name="sortering" type="radio" value="1">Alfabetisk
> <input name="sortering" type="radio" value="2">Emne
> <br />
> <input type="submit" value="Sorter" name="Sorter">
> </fieldset>
> </form>
I din form vil det være mest hensigtsmæssigt at give de enkelte radiobuttons
en value, der svarer til det feltnavn du vil sortere efter, feks:
<input name="sortering" type="radio" value="emne">Emne
Det er nemlig value'en du får overført og så kan du bruge værdien fra din
Request.Form direkte i opbygningen af din SQLstr.
Så går vi over til side 2: artikler.asp
Jeg kan ikke se, om din database og dine sider iøvrigt er placeret rigtigt i
forhold til hinanden. Hvis du har problemer med det, så læg alle sider og
databasen i det samme bibliotek indtil det kører. Derefter kan du forsøge
med at flytte dem og angive de relative stier (det giver erfaringsmæssigt
altid problemer).
> <%
> tempConn = "PROVIDER=MSDASQL;DRIVER={Microsoft Access Driver
(*.mdb)};DBQ="
> & Server.MapPath("../../database/sider.mdb") & ";UID=admin;PWD=;"
>
> ValgSortering=Request.Form("sortering")
>
> strSQL = "SELECT * FROM Artikler ORDER BY Valgsortering DESC;"
Valgsortering er en variabel, der indeholder dit sorteringskriterie. Det kan
du ikke sætte direkte ind i en tekststreng, det skal gøres som følger:
strSQL = "SELECT * FROM Artikler ORDER BY " & Valgsortering & " DESC"
> Set myConn = Server.CreateObject("ADODB.Connection")
> myConn.Open tempConn
> Set rs = myConn.Execute(strSQL)
Følgende har jeg ikke set så meget på:
> If Not (rs.BOF Or rs.EOF) Then
> Response.Write "<table width='100%' border='0' cellpadding='1'
cellspacing='1'>"
> Do While Not rs.EOF
> dtmDato = rs("Dato")
> dtmDato = FormatDateTime(dtmDato,vbLongDate) & " kl. " &
> FormatDateTime(dtmDato,vbLongTime)
> Response.Write "<tr><td style='width:20%'>" & dtmDato & "</td>"
> Response.Write "<td><a href="" & rs("adresse") & "">" & rs("Titel") &
"</a></td>"
Men her er der vist noget galt. Vil du lave et link til selve artiklen? Så
skal du have filnavnet ind her (er det gemt under "adresse" i databasen?) .
Og pas på med dine ". Det går vist galt her. Udelad dem evt.om filnavnet,
det må man vist godt.
Response.Write "<td><a href=" & rs("MitFilNavn") & ">" & rs("Titel") &
"</a></td>"
> Response.Write "<td>" & rs("Forfatter") & "</td>"
> Response.Write "<td>" & rs("Emne") & "</td></tr>"
> rs.MoveNext
> Loop
> Response.Write "</table>"
> Else
> Response.Write "<p>Der er endnu ikke nogle tilgængelige artikle</p>"
> End If
> myConn.Close
> Set myConn = Nothing
> End Select
Den skal fjernes
> %>
Som sagt er det nok ikke en fuldstændig gennemgang, men jeg håber det kan
lede dig på sporet, ellers prøv at spore dig ind på, hvor fejlene opstår og
skriv igen
Go' fornøjelse
mvh
Finn
| |
Ukendt (13-02-2005)
| Kommentar Fra : Ukendt |
Dato : 13-02-05 15:19 |
|
"finn elmgaard" <agertoften@XXXstofanet.dk> skrev i en meddelelse
news:41fea8b9$0$22721$ba624c82@nntp04.dk.telia.net...
> Som sagt er det nok ikke en fuldstændig gennemgang, men jeg håber det kan
> lede dig på sporet, ellers prøv at spore dig ind på, hvor fejlene opstår
> og
> skriv igen
>
> Go' fornøjelse
Hej Finn,
beklager den lange respons tid, men da det er en fritids-ting jeg laver, så
kommer der indimellem andre (vigtigere) ting foran i køen.
Men jeg vil sige mange tak for din hjælp. Det fungerer nu til mit behov
efter dine tilretninger.
/Michael
| |
|
|