Avatar billede steen_hansen Forsker
19. marts 2006 - 12:48 Der er 47 kommentarer og
1 løsning

Dim af variabler plus ORDER BY og ASC/DESC

Jeg er ved at lave en mulighed for valg af visning. Jeg kaver et udtræk fra DB, kører det igennem en løkke, og får listet alle de registrerede brugere.

Øverst har jeg 2 select-bokse, så man har mulighed for at vist udtrækkede i den orden, som man ønsker det: Sorter efter ID/Brugernavn/Navn/Oprettet/Sidst set plus en select-box med Stigende/Faldende.

HTML og script ser indtil videre således ud:



<%

    If Request.Form("mode") = "edit" Then

        strSQL = "UPDATE MinTabel SET chooseview='" & Trim(SQLEncode(Request.Form("chooseview"))) & "', xChooseorder='" & Trim(SQLEncode(Request.Form("chooseorder"))) & "' WHERE username='" & SQLEncode(Session("username")) & "'"
        Conn.Execute strSQL
        Conn.Close

        Response.Redirect "showallusers.asp?msg=Din+sorteringsvisning+er+gemt."

    End If

%>

<html>

<body>

<%
Dim RS
SQL = "SELECT userID, username, firstname, middlename, lastname, lastseen, created, chooseview, xChooseorder FROM backendusersitg ORDER BY username" '<-- HER ER SAGENS KERNE
Set RS = Conn.Execute(SQL)

Dim qUser, qChooseview, qChooseorder
qUser = RS("username")
qChooseview = RS("chooseview")
qChooseorder = RS("xChooseorder")
%>

<select size="1" name="chooseview" class="input1">
    <option selected>Vælg</option>
    <option value="1"<% If qChooseview = 1 Then %> selected<% End If %>>ID</option>
    <option value="2"<% If qChooseview = 2 Then %> selected<% End If %>>Brugernavn</option>
    <option value="3"<% If qChooseview = 3 Then %> selected<% End If %>>Navn</option>
    <option value="4"<% If qChooseview = 4 Then %> selected<% End If %>>Oprettet</option>
</select>

<select size="1" name="chooseorder" class="input1">
    <option selected>Vælg</option>
    <option value="1"<% If qChooseorder = 1 Then %> selected<% End If %>>Stigende</option>
    <option value="2"<% If qChooseorder = 2 Then %> selected<% End If %>>Faldende</option>
</select>

</body>

</html>


Den del, hvor brugeren kan gemme sine valg i databasen, virker fint nok. Hvis der f.eks. vælges sortering efter navn/stigende, gemmes det korrekt i DB, og brugerens valg er hele tiden i de 2 select-bokse, hver gang han går ind på siden (cookie-fri funktion). Mit spørgsmål går på hvordan jeg får det flettet ind i min SQL-forespørgsel:

SQL = "SELECT userID, username, firstname, middlename, lastname, lastseen, created, chooseview, xChooseorder FROM backendusersitg ORDER BY username"

Jeg har endnu ikke forsøgt at sætte noget ind i sætningen, der mangler også ASC eller DESC. Men det skyldes jo netop, at det er en del af problemet.

Jeg synes det er lidt tricky at lave, eftersom jeg ikke har mulighed for at dimensionere valgene, og ud fra det sætte det ind i SQL-forespørgslen. Skal der længere oppe laves en SQL-forespørgsel, så det er muligt at angive hvordan det skal trækkes ud af DB, eller hvordan? Håber på noget brugbart i dag :o)
Avatar billede eagleeye Praktikant
20. marts 2006 - 09:02 #1
Jeg ville lave en tabel som indeholder to kolonner et med id 1,2,3,4 og så tilsvare kolonnenavne ID, Brugernavn, Navn, Oprettet så du med et opslag kan konvertere qChooseview til et brugbart navn. Ligeledes en tabel til qChooseorder som indeholder id 1,2 og sortorder ASC, DESC


Så kan du hente kolonnenavn og sort order ud på denne måde ud fra username:

SQL = "SELECT tkn.kolnavn, tso.sortorder FROM (kolonnenavne tkn INNER JOIN MinTabel ON tkn.id = MinTabel.chooseview) INNER JOIN sortordre tso ON MinTabel.xChooseorder = tso.id WHERE username = '" & SQLEncode(Session("username")) & "'"


Du kan også bruge den til at hente xChooseorder, chooseview på samme tid, det ser ud som om du bruger de to til at lave selecten:

SQL = "SELECT tkn.kolnavn, tso.sortorder, chooseview, xChooseorder FROM (kolonnenavne tkn INNER JOIN MinTabel ON tkn.id = MinTabel.chooseview) INNER JOIN sortordre tso ON MinTabel.xChooseorder = tso.id WHERE username = '" & SQLEncode(Session("username")) & "'"




Så koden bliver til stil med:

<%
Dim qUser, qChooseview, qChooseorder

'finder først sort kolonne og order da det kal bruges i næste sql sætning
SQL = "SELECT tkn.kolnavn, tso.sortorder, chooseview, xChooseorder FROM (kolonnenavne tkn INNER JOIN MinTabel ON tkn.id = MinTabel.chooseview) INNER JOIN sortordre tso ON MinTabel.xChooseorder = tso.id WHERE username = '" & SQLEncode(Session("username")) & "'"

set rs = Conn.Execute(SQL)
if not rs.EOF
  qUser = RS("username")
  qChooseview = RS("chooseview")
  qChooseorder = RS("xChooseorder")
  qOrderBy = RS("kolnavn") & " " & RS("sortorder")
else
  'ingen var valgt default sætte her:
  qChooseview = 1
  qChooseorder = 1
  qOrderBy = "ID ASC"
end if


SQL = "SELECT userID, username, firstname, middlename, lastname, lastseen, created, chooseview, xChooseorder FROM backendusersitg ORDER BY " & qOrderBy
Set RS = Conn.Execute(SQL)
Avatar billede steen_hansen Forsker
20. marts 2006 - 21:23 #2
eagleeye, du glimter atter en gang, det er imponerende! :o)

Jeg skal dog lige have noget på det rene: Jeg benytter MySQL. Hvordan helt nøjagtigt skal tabellerne se ud? phpMyAdmin:

[Field]    [Type]        [Length/Values]    [Attributes]    [Null]    ....
value1    SMALLINT    1                Null
value2    SMALLINT    1                Null
value3    SMALLINT    1                Null
value4    SMALLINT    1                Null
value5    SMALLINT    1                Null
choise1    VARCHAR        2                Null
choise2    VARCHAR        10                Null
choise3    VARCHAR        4                Null
choise2    VARCHAR        8                Null
choise2    VARCHAR        9                Null

således, at flg. RS får flg. værdier:

value1 = 1
value1 = 2
value1 = 3
value1 = 4
value1 = 5
choise1 = "ID"
choise2 = "Brugernavn"
choise3 = "Navn"
choise4 = "Oprettet"
choise5 = "Sidst set"

Er det sådan det skal forstås?

Jeg håber mine "kolonner" kommer til at stå pænt :o)
Avatar billede eagleeye Praktikant
20. marts 2006 - 21:35 #3
Du skal lave to kolonner:

Field]    [Type]        [Length/Values]    [Attributes]    [Null]    ....
ID        SMALLINT      1                Null
Navn      VARCHAR        10                Null


Og så ligge disse data i:

ID  Navn
1    ID
2    Brugernavn
3    Navn
4    Oprettet
5    Sidst set
Avatar billede steen_hansen Forsker
20. marts 2006 - 21:45 #4
Jeg arbejder på det, skal lige oprette en side, som kan smide det ned i DB :o)
Avatar billede steen_hansen Forsker
20. marts 2006 - 22:11 #5
Nu har jeg så et andet problem (burde ikke være noget): Hvorfor sker der intet, når jeg forsøger at smide data i dette (jeg sætter point op):

<!-- #include virtual="/includes/data.asp" -->
<!-- #include virtual="/includes/_protect.asp" -->
<!-- #include virtual="/includes/_functions.asp" -->

<%

    Dim Conn

%>
<!-- #include virtual="/includes/dbconnopen.asp" -->
<%

    If Request.Form("mode") = "createselectname" Then

        strSQL = "UPDATE backendusersid SET selectid='" & Trim(SQLEncode(Request.Form("selectid"))) & "', selectname='" & Trim(SQLEncode(Request.Form("selectname"))) & "'"
        Conn.Execute strSQL
        Conn.Close

        Response.Redirect "editselects.asp?msg=Din+SELECT-boks+er+gemt."

    End If

%>

<html>

<head>
<!-- #include virtual="/includes/header.asp" -->
<title>Opret SELECT-bokse</title>
</head>

<body onload="document.frmCreateSelects.selectid.focus(); funClock();">

<!-- #include virtual="/includes/_start.asp" -->
            <form name="frmCreateSelects" method="post" action="/admin/edit/editselects.asp" style="width: 100%; padding: 0px; margin: 0px; border-collapse: collapse;">
            <input type="hidden" name="mode" value="createselectname">
                <table class="tablecontent">
                    <tr>
                        <td colspan="2" class="headline">Opret SELECT-bokse</td>
                    </tr>
                    <tr style="height: 22px;">
                        <td style="width: 27%; padding: 15px 0px 25px 0px;"><b>ID</b></td>
                        <td style="width: 73%; padding: 15px 0px 25px 0px;"><input type="text" name="selectid" id="selectid" tabindex="1" style="width: 138px;" class="input1"></td>
                    </tr>
                    <tr style="height: 22px;">
                        <td style="width: 27%; padding: 0px 0px 0px 25px;"><b>Navn</b></td>
                        <td style="width: 73%; padding: 0px;"><input type="text" name="selectname" id="firstname" tabindex="2" style="width: 138px;" class="input1"></td>
                    </tr>
                    <tr>
                        <td style="width: 27%; padding: 0px 0px 0px 25px;">&nbsp;</td>
                        <td style="width: 73%; padding: 0px;"><input type="submit" value="Opret emne" class="input2" tabindex="3"></td>
                    </tr>
                </table>
            </form>
<!-- #include virtual="/includes/_end.asp" -->

</body>

</html>
Avatar billede eagleeye Praktikant
20. marts 2006 - 22:18 #6
Den SQL du har smider ikke data ind men opdater data:
        strSQL = "UPDATE backendusersid SET selectid='" & Trim(SQLEncode(Request.Form("selectid"))) & "', selectname='" & Trim(SQLEncode(Request.Form("selectname"))) & "'"

Skal du havde indsat data skal det være med en Insert into:

        strSQL = "INSERT INTO tabelnavn (selectid, selectname) VALUES ('" & Trim(SQLEncode(Request.Form("selectid"))) & "','" & Trim(SQLEncode(Request.Form("selectname"))) & "')"
Avatar billede steen_hansen Forsker
20. marts 2006 - 22:30 #7
DOH! Jeg er meget træt og copy/paster hovedløst :o)

Er straks færdig, tager lige den anden med det samme.
Avatar billede steen_hansen Forsker
20. marts 2006 - 23:01 #8
Så er den klar. Jeg har nu 2 tabeller:

backendusersid
    selectid
    selectname

backendusersascdesc
    ascdescid
    ascdesc

Jeg burde have brugt dine navne, men jeg prøver lige om jeg kan hitte ud af denne:


'finder først sort kolonne og order da det kal bruges i næste sql sætning
SQL = "SELECT tkn.kolnavn, tso.sortorder, chooseview, xChooseorder FROM (kolonnenavne tkn INNER JOIN MinTabel ON tkn.id = MinTabel.chooseview) INNER JOIN sortordre tso ON MinTabel.xChooseorder = tso.id WHERE username = '" & SQLEncode(Session("username")) & "'"

For det er den næste, der skal bruges, ikke? Det første eksempel var uden at hente at hente xChooseorder, chooseview?
Avatar billede eagleeye Praktikant
20. marts 2006 - 23:06 #9
Ja hvis du skal bruge xChooseorder, chooseview er det nr2. Så skal kolonne og tabel navne lige rettes lidt til:


'finder først sort kolonne og order da det kal bruges i næste sql sætning
SQL = "SELECT tkn.selectname, tso.ascdesc, chooseview, xChooseorder FROM (backendusersid tkn INNER JOIN MinTabel ON tkn.selectid = MinTabel.chooseview) INNER JOIN backendusersascdesc tso ON MinTabel.xChooseorder = tso.ascdescid WHERE username = '" & SQLEncode(Session("username")) & "'"
Avatar billede steen_hansen Forsker
20. marts 2006 - 23:18 #10
Der var lige 2 x MinTabel. Skal dette:

SQL = "SELECT tkn.selectname, tso.ascdesc, chooseview, xChooseorder FROM (backendusersid tkn INNER JOIN MinTabel ON tkn.selectid = MinTabel.chooseview) INNER JOIN backendusersascdesc tso ON MinTabel.xChooseorder = tso.ascdescid WHERE username = '" & SQLEncode(Session("username")) & "'"

rettes til dette?

SQL = "SELECT tkn.selectname, tso.ascdesc, chooseview, xChooseorder FROM (backendusersid tkn INNER JOIN backendusersascdesc ON tkn.selectid = backendusersid.chooseview) INNER JOIN backendusersascdesc tso ON backendusersascdesc.xChooseorder = tso.ascdescid WHERE username = '" & SQLEncode(Session("username")) & "'"
Avatar billede eagleeye Praktikant
20. marts 2006 - 23:20 #11
MinTabel skulle være navnet på den tabel hvor username, chooseview og xChooseorder er gemt.
Avatar billede steen_hansen Forsker
20. marts 2006 - 23:27 #12
Ok, så skulle denne være i orden:

SQL = "SELECT tkn.selectname, tso.ascdesc, chooseview, xChooseorder FROM (backendusersid tkn INNER JOIN backendusersitg ON tkn.selectid = backendusersitg.chooseview) INNER JOIN backendusersascdesc tso ON backendusersitg.xChooseorder = tso.ascdescid WHERE username = '" & SQLEncode(Session("username")) & "'"

Men så får jeg denne fejl:

ADODB.Recordset error '800a0cc1'

Item cannot be found in the collection corresponding to the requested name or ordinal.

/admin/showallusers.asp, line 44

Line 44: qUser = RS("username")
Avatar billede steen_hansen Forsker
20. marts 2006 - 23:30 #13
Øjeblik, jeg glemte den sidste SQL
Avatar billede eagleeye Praktikant
20. marts 2006 - 23:30 #14
ok det så fordi username ikke er med i select ... from. Hvis du skal bruger username i qUser så prøv at tilføje kolonnen username til SQL sætningen sådan her:


SQL = "SELECT tkn.selectname, tso.ascdesc, chooseview, xChooseorder, username FROM ...


men i princippet har du username i session variablen så det kunne vel lige så godt være:

qUser = Session("username")
Avatar billede steen_hansen Forsker
20. marts 2006 - 23:35 #15
<%
Dim RS
SQL = "SELECT tkn.selectname, tso.ascdesc, chooseview, xChooseorder FROM (backendusersid tkn INNER JOIN backendusersitg ON tkn.selectid = backendusersitg.chooseview) INNER JOIN backendusersascdesc tso ON backendusersitg.xChooseorder = tso.ascdescid WHERE username = '" & SQLEncode(Session("username")) & "'"

If Not RS.EOF Then
    qUser = RS("username")
    qChooseview = RS("chooseview")
    qChooseorder = RS("xChooseorder")
    qOrderBy = RS("kolnavn") & " " & RS("sortorder")
Else

    qChooseview = 1
    qChooseorder = 1
    qOrderBy = "ID ASC"
End If

SQL = "SELECT userID, username, firstname, middlename, lastname, lastseen, created, chooseview, xChooseorder FROM backendusersitg ORDER BY " & qOrderBy
Set RS = Conn.Execute(SQL)
%>


Nu får jeg så denne fejl:

Microsoft VBScript runtime error '800a01a8'

Object required: ''

/admin/showallusers.asp, line 41


Linie 41: If Not RS.EOF Then
Avatar billede eagleeye Praktikant
20. marts 2006 - 23:37 #16
du skal lige havde en Conn.Exexute linie ind inde if sætningen if not RS.EOF then:

Set RS = Conn.Execute(SQL)
If Not RS.EOF Then
Avatar billede steen_hansen Forsker
20. marts 2006 - 23:41 #17
Ok. Så får jeg dette:

ADODB.Recordset error '800a0cc1'

Item cannot be found in the collection corresponding to the requested name or ordinal.

/admin/showallusers.asp, line 43

Linie 43: qUser = RS("username")



Det må være fordi RS("username") først bliver trukket ud længere nede:

SQL = "SELECT userID, username, firstname, middlename, lastname, lastseen, created, chooseview, xChooseorder FROM backendusersitg ORDER BY " & qOrderBy
Avatar billede eagleeye Praktikant
20. marts 2006 - 23:44 #18
ja du kan slette denne linie:
    qUser = RS("username")
Avatar billede steen_hansen Forsker
20. marts 2006 - 23:52 #19
Microsoft OLE DB Provider for ODBC Drivers error '80040e14'

[MySQL][ODBC 3.51 Driver][mysqld-4.0.18-nt]Unknown column 'ID' in 'order clause'

/admin/showallusers.asp, line 54


SQL = "SELECT userID, username, firstname, middlename, lastname, lastseen, created, chooseview, xChooseorder FROM backendusersitg ORDER BY " & qOrderBy
Set RS = Conn.Execute(SQL) '<-- Linie 54
Avatar billede steen_hansen Forsker
20. marts 2006 - 23:55 #20
Den forstår jeg ikke helt. Jeg har gemt ID i selectname i tabellen backendusersid, men ud over det, er der ikke noget ID.

I tabellen backendusersitg har jeg gemt primary key some userID
Avatar billede steen_hansen Forsker
20. marts 2006 - 23:55 #21
Ah, det er denne her: qOrderBy = "ID ASC"
Avatar billede eagleeye Praktikant
20. marts 2006 - 23:56 #22
ja det kunne tyde på den ikke finder det som er gemt som sortering for brugeren. Så tager den ID ASC som default.
Avatar billede steen_hansen Forsker
21. marts 2006 - 00:00 #23
På den ene profil i backendusersitg har jeg

chooseview = 1
xChooseorder = 2

Så der er en værdi begge steder ....?
Avatar billede steen_hansen Forsker
21. marts 2006 - 00:04 #24
Dvs. scriptet sorterer efter ID fra selectname?
Avatar billede eagleeye Praktikant
21. marts 2006 - 00:04 #25
ok ja den brikkede sig også over rs("username") kan du prøve at dobbelt tjekker der ikke står "ID" og ikke "userID" som der skulle stå.
Avatar billede steen_hansen Forsker
21. marts 2006 - 00:05 #26
Sludder, den sorterer bare efter den første kolonne - ID - som standard :)
Avatar billede eagleeye Praktikant
21. marts 2006 - 00:09 #27
De kolonne navne som er gemt i tabllen  backendusersid  skal være nogle som er gyyldige i tablelen backendusersitg så det skal være:

userID
username
lastseen


og ikke de navne som jeg skrev 20/03-2006 21:35:03 da de kolonnenavne ikke findes.
Avatar billede steen_hansen Forsker
21. marts 2006 - 00:11 #28
Værdien fra selectname i tabellen backendusersid er rigtig nok ID, så din If ... Then burde være rigtig:

If Not RS.EOF Then
    qOrderBy = RS("selectname") & " " & RS("ascdesc")
Else
    qOrderBy = "ID ASC"
End If


Begge er jo lige rigtige.

Hvis du med userID mener id'en fra backendusersitg, så er det rigtigt, at den hedder det.
Avatar billede eagleeye Praktikant
21. marts 2006 - 00:11 #29
Så tabellen backendusersid  skal indeholde:

selectid  selectname
  1      userID
  2      username
  3      firstname
  4      created
  5      lastseen
Avatar billede steen_hansen Forsker
21. marts 2006 - 00:12 #30
De to kolonnenavne hedder hhv. selectid og selectname, så det er ikke der det går galt ...
Avatar billede eagleeye Praktikant
21. marts 2006 - 00:12 #31
og if sætningen bør så se sådan her ud da ID ikke findes men er userID:

If Not RS.EOF Then
    qOrderBy = RS("selectname") & " " & RS("ascdesc")
Else
    qOrderBy = "userID ASC"
End If
Avatar billede eagleeye Praktikant
21. marts 2006 - 00:14 #32
Det som går galt er indholdet af tabellen backendusersid helt præsist kolonne selectname. Den kolonne skal indeholde navne på de kolonner man skal kunne sortere på.

Det er denne SQL sætning som skal sorters:

SQL = "SELECT userID, username, firstname, middlename, lastname, lastseen, created, chooseview, xChooseorder FROM backendusersitg ORDER BY " & qOrderBy
Set RS = Conn.Execute(SQL) '<-- Linie 54


Altså skal kolonne selectname indeholde det som er vist 21/03-2006 00:11:35
Avatar billede eagleeye Praktikant
21. marts 2006 - 00:18 #33
Det ikke fordi jeg ikke vil hælpe mere men jeg skal i seng nu.
Avatar billede steen_hansen Forsker
21. marts 2006 - 00:19 #34
Det VIRKER faaa'me, jeg lægger det lige, så du kan se det opdateret (læg lige et svar):

<%
Dim RS
SQL = "SELECT tkn.selectname, tso.ascdesc, chooseview, xChooseorder FROM (backendusersid tkn INNER JOIN backendusersitg ON tkn.selectid = backendusersitg.chooseview) INNER JOIN backendusersascdesc tso ON backendusersitg.xChooseorder = tso.ascdescid WHERE username = '" & SQLEncode(Session("username")) & "'"
Set RS = Conn.Execute(SQL)

If Not RS.EOF Then
    qChooseview = RS("chooseview")
    qChooseorder = RS("xChooseorder")
    qOrderBy = RS("selectname") & " " & RS("ascdesc")
Else
    qChooseview = 1
    qChooseorder = 1
    qOrderBy = "ID ASC"
End If

SQL = "SELECT userID, username, firstname, middlename, lastname, lastseen, created, chooseview, xChooseorder FROM backendusersitg ORDER BY " & qOrderBy
Set RS = Conn.Execute(SQL)
%>

Ved lejlighed vil jeg trække det ud i nogle <input type="text" value="<%=RS(".... - så kan man rette sine tyrkfejl med det samme :o)

Hvor det lækkert, eagleeye, det virker sq!
Avatar billede steen_hansen Forsker
21. marts 2006 - 00:21 #35
Jeg er ked af, at det trak så meget ud. Jeg selv var grydeklar ved 21-tiden, og nu bliver jeg snart overfrisk, hvis ikke jeg snart sengen :o)

Læg et svar og smut i seng. Du er dææælme rå til VB-script :o)
Avatar billede eagleeye Praktikant
21. marts 2006 - 00:21 #36
Ok så bliver det lige sidste svar i dag.

og denne
    qOrderBy = "ID ASC"

Bør lige rettes til userID så det passer :)

    qOrderBy = "userID ASC"
Avatar billede eagleeye Praktikant
21. marts 2006 - 00:22 #37
og så kan du også lave dine <select> bokse ud fra tabllen backendusersid  så den viser de kolonenr ud har valgt man kan vælge via tabllen backendusersid :)
Avatar billede steen_hansen Forsker
21. marts 2006 - 00:23 #38
TAK, eagleeye. Du har mere end gjort dagens gode gerning. Brugte en stor del af weekenden på det her småtteri, som ikke er småtteri alligevel. Tak for hjælpen, og sov godt :o)
Avatar billede steen_hansen Forsker
21. marts 2006 - 00:24 #39
Aaahh, smart! :o)

Smut så i seng, vi snakkes - og 1 milliard million tak :o)
Avatar billede steen_hansen Forsker
21. marts 2006 - 06:59 #40
eagleeye, der er lige et lille følge-problem, håber du har mod på lige at hjælpe med denne også:

Det er jo meningen med visningen af disse brugere, at administrator kan tilføje/rettigheder til visse funktioner, men qUser = RS("username") er jo smuttet. Du får hele løkken:

<tr>
    <td style="width: 6%; padding: 0px 0px 3px 8px;"><b>ID</b></td>
    <td style="width: 20%; padding: 0px 0px 3px 0px;"><b>Brugernavn</b></td>
    <td style="width: 29%; padding: 0px 0px 3px 0px;"><b>Navn</b></td>
    <td style="width: 23%; padding: 0px 0px 3px 0px;"><b>Oprettet</b></td>
    <td style="width: 22%; padding: 0px 0px 3px 0px;"><b>Sidst set</b></td>
</tr>
<tr>
    <td colspan="5" style="width: 100%; height: 3px; padding: 0px; border-top: 1px solid black;"></td>
</tr>

<% While NOT RS.EOF %>

<tr onclick="location.href='/admin/edituserrights.asp?user=<%=Server.URLEncode(qUser)%>';" onmouseover="this.style.cursor='pointer';this.style.backgroundColor='#e7e7e7';" onmouseout="this.style.backgroundColor='#fff';">
    <td style="width: 6%; padding: 0px 0px 3px 8px; vertical-align: middle;"><%=RS("userID")%></td>
    <td style="width: 20%; padding: 0px; vertical-align: middle;"><%=Server.HTMLEncode(RS("username"))%></td>
    <td style="width: 29%; padding: 0px; vertical-align: middle;"><%=Server.HTMLEncode(RS("firstname"))%>&nbsp;<%=Server.HTMLEncode(RS("middlename"))%>&nbsp;<%=Server.HTMLEncode(RS("lastname"))%></td>

<%
    Dim vCreated
    vCreated = RS("created")
    vCreated = Addz(day(vCreated)) & "-" & Addz(month(vCreated)) & "-" & year(vCreated)  & " " & Addz(hour(vCreated)) & ":" & Addz(minute(vCreated)) & ":" & Addz(Second(vCreated))
%>

    <td style="width: 23%; padding: 0px; vertical-align: middle;"><%=vCreated%></td>

<%
    If NoNull(RS("lastseen")) <> "" Then
    Dim vLastSeen
    vLastSeen = RS("lastseen")
    vLastSeen = Addz(day(vLastSeen)) & "-" & Addz(month(vLastSeen)) & "-" & year(vLastSeen) & " " & Addz(hour(vLastSeen)) & ":" & Addz(Minute(vLastSeen)) & ":" & Addz(Second(vLastSeen))
%>

    <td style="width: 22%; padding: 0px; vertical-align: middle;"><%=vLastSeen%></td>

    <% Else %>

    <td style="width: 22%; padding: 0px; vertical-align: middle;">Er endnu ikke set</td>

    <% End If %>

</tr>

<%
RS.MoveNext
Wend

RS.Close
Set RS = nothing
Conn.Close
Set Conn = nothing
%>


Har du tid/lyst/overskud til at hjælpe? Jeg har givet maks point, så jeg får nok ballade, hvis jeg tildeler dig flere :o(
Avatar billede steen_hansen Forsker
21. marts 2006 - 07:03 #41
PS: Det er meningen, at et klik på <tr> skal føre frem til brugerens rettigheder, som admin skal kunne redigere:

<tr onclick="location.href='/admin/edituserrights.asp?user=<%=Server.URLEncode(qUser)%>';" onmouseover="this.style.cursor='pointer';this.style.backgroundColor='#e7e7e7';" onmouseout="this.style.backgroundColor='#fff';">
Avatar billede eagleeye Praktikant
21. marts 2006 - 08:11 #42
Der er umiddlebart to måder at få den tilbage.

1. metode i denne SQL sætning at tilføje username:

Dim RS
SQL = "SELECT tkn.selectname, tso.ascdesc, chooseview, xChooseorder FROM (backendusersid tkn INNER JOIN backendusersitg ON tkn.selectid = backendusersitg.chooseview) INNER JOIN backendusersascdesc tso ON backendusersitg.xChooseorder = tso.ascdescid WHERE username = '" & SQLEncode(Session("username")) & "'"
Set RS = Conn.Execute(SQL)


Sådan her og så tilføje den linie som blev slette igen qUser = RS("username"):

Dim RS
SQL = "SELECT tkn.selectname, tso.ascdesc, chooseview, xChooseorder, username FROM (backendusersid tkn INNER JOIN backendusersitg ON tkn.selectid = backendusersitg.chooseview) INNER JOIN backendusersascdesc tso ON backendusersitg.xChooseorder = tso.ascdescid WHERE username = '" & SQLEncode(Session("username")) & "'"
Set RS = Conn.Execute(SQL)



2. metode er at bruge Session("username"), det er afligevel den som bruges til at finde sort kolonnen og sort order. Så du kunne skrive:

qUser = session("username")
Avatar billede steen_hansen Forsker
22. marts 2006 - 07:28 #43
Hej eagleeye

Jeg nåede ikke til computeren i går aftes, kom sent hjem :o)

Hvis jeg skriver qUser = Session("username"), er det jo min egen session jeg tager fat i. Meningen er, at der linkes ind til den enkelte bruger med:

<tr onclick="location.href='/admin/edituserrights.asp?user=<%=Server.URLEncode(qUser)%>';" onmouseover="this.style.cursor='pointer';this.style.backgroundColor='#e7e7e7';" onmouseout="this.style.backgroundColor='#fff';">

Så uanset hvilken profil admin ønsker at redigere i, vil han/hun altid få fat i sin egen ...?
Avatar billede steen_hansen Forsker
22. marts 2006 - 08:05 #44
Jeg har mistet overblikket. Uanset hvor mange krumspring jeg laver, kan jeg kun redigere min egen profil :/
Avatar billede steen_hansen Forsker
22. marts 2006 - 08:16 #45
Det er jo fordi, at de ovenstående SQL-forespørgsler er beregnet på den sortering, som administratoren vælger. Der er ikke noget, der hiver data for brugerne ud af DB. Dvs. jeg skal have sat det ind igen på en eller anden måde ...
Avatar billede eagleeye Praktikant
22. marts 2006 - 17:24 #46
Ok men så er det ikke den SQL sætning som skal hente username ud. Så er det i denne hvor username også er med:


SQL = "SELECT userID, username, firstname, middlename, lastname, lastseen, created, chooseview, xChooseorder FROM backendusersitg ORDER BY " & qOrderBy
Set RS = Conn.Execute(SQL)

Så skal du havde havde:

qUser = RS("username")


ind i det loop som udskriver brugerne i listen.
Avatar billede eagleeye Praktikant
22. marts 2006 - 17:26 #47
du kunne evt. og rette denne linie:

<tr onclick="location.href='/admin/edituserrights.asp?user=<%=Server.URLEncode(qUser)%>';" onmouseover="this.style.cursor='pointer';this.style.backgroundColor='#e7e7e7';" onmouseout="this.style.backgroundColor='#fff';">



Til at udskrive RS("username") og ikke qUser med mindre qUser så bliver brugt flere steder. Så skal det jo også rettes de andre steder.
Avatar billede steen_hansen Forsker
22. marts 2006 - 21:58 #48
Det var nok at sætte den ind i starten af løkken:

<%
While NOT RS.EOF

Dim qUser
qUser = RS("username")
%>

eagleeye, du skal have 1000 tak for din indsats. Du har - som sædvanlig - gjort en stor indsats, jeg er utrolig glad for din hjælp :)
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