Avatar billede fredd Nybegynder
12. juni 2004 - 15:48 Der er 8 kommentarer

Medarbejderdatabase-script

Medarbejderdatabase-script  150 point fra fredd 


Jeg er ved at lave et medarbejder-database script. Idéen er, at de forskellige medarbejdere skal opdeles under forskellige grupper, og det hele skal foregå dynamisk.

Jeg har to tabeller, en der hedder "users" med alle brugerne, og en der hedder "usertypes", som definerer hvad navnet på gruppen er, og hvilken rækkefølge grupperne skal listes.

I "users" tabellen er felterne:
ID: ID-nummer
Usertype: Nummer på gruppe
nummer: nummer der definerer rækkefølge
fname: Fornavn
sname: Efternavn
mail: E-mailadresse
adress, zipcode, city, telephone osv.

I "usertypes" er der felterne:
ID: ID-nummer
groupname: Navn på gruppe (f.eks. "ledelsen", "administration", "udlejning" osv)
nummer: Nummer der definerer rækkefølge

Lige nu bruger jeg slet ikke usertypes-tabellen, da jeg ikke kan finde ud af hvordan jeg skal få den til først at få navnet på 1. gruppe frem fra "usertypes", så hente medarbejdere fra "users", så gå i gang med 2. gruppe, helt automatisk.

Som det er nu, ser det sådan ud:

---

<table width="100%" cellpadding="0" cellspacing="0"><tr><td>

<br><h1><font color="#000000"><strong> Administration</strong></font></h1><br>
<%

' ADODB connection objektet
Set Conn = Server.CreateObject("ADODB.Connection")
' Husk at angive den rigtige sti til din database
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("../database/settings.mdb")
' Åben databaseforbindelsen
Conn.Open DSN

' SQL forespørgsel
strSQL = "Select * from users Where usertype = 2 Order by nummer desc"
' Udfør forespørgsel (rs indeholder nu resultatet)
Set rs = Conn.Execute(strSQL)
Do

%>           
                    <table width="48%" bgcolor="#dddddd" cellspacing="5" style="float: left; margin-right: 10px; margin-bottom: 10px;" class="tekstafsnit">
                    <tr>
                      <td><img src="../images/brugere/<% if rs("picture") <> "" then Response.Write rs("picture") else Response.Write "intet_billede" end if%>.jpg"></td>
                      <td valign="top" align="left"><br>&nbsp;<br><b><% Response.Write rs("fname") %>&nbsp;<% Response.Write rs("sname") %></b><br><br><table cellpadding="0" cellspacing="0" class="tekstafsnit"><% if rs("telephone") <> "" then response.write "<tr><td>Tlf:&nbsp;</td></td><td>" & rs("telephone") & "</td></tr>" else response.write "" %><% if rs("mobile") <> "" then response.write "<tr><td>Mobil:&nbsp;</td></td><td>" & rs("mobile") & "</td></tr>" else response.write "" %></table></td>
                    </tr>
                    </table>
<%
rs.MoveNext
' Fortsæt indtil rs er gennemløbet (EOF = End Of File)
Loop While Not rs.EOF


' Luk databaseforbindelse
Conn.Close
Set Conn = Nothing
%>

</td></tr></table>

---

Ved næste usertype indsætter jeg samme kode, ændre overskriften, og ændrer SQL-forespørgselen til f.eks. "usertype = 3".

(se screenshot på http://www.thouber.dk/medarbejdere.jpg)

Mit spørgsmål er så: Hvordan får jeg den til at hente gruppenavn fra usertypes, og helt automatisk putte de medarbejdere der skal ind under de forskellige grupper?
Avatar billede sho Nybegynder
12. juni 2004 - 18:27 #1
Hvad med noget i stil med:

SELECT user.ID, type.Groupname, user.fName, user.sName FROM (tblUsers as user LEFT JOIN tblUsertype as type on user.Usertype=type.ID) ORDER BY type.Nummer, user.Nummer

Så kan du evt. checke på, at når Groupname ikke er lig med det foregående, så er du begyndt på en ny gruppe.

-Søren
Avatar billede fredd Nybegynder
13. juni 2004 - 10:33 #2
Når jeg så har skrevet SQL-forespørgslen, hvad gør jeg så for at trække værdien ud af et felt i databasen...? <% Response.Write rs("user.fName") %> <--- For dette virker ikke, men der skulle ikke være noget galt i SQL-forespørgslen...
Avatar billede sho Nybegynder
14. juni 2004 - 08:34 #3
Når du skriver værdien, skal du ikke have "user." foran.

<%=rs("fName")%>
(det er det samme som <%Response.Write rs("fName")%> )

Jeg har lige renset lidt op i din kode og indenteret den - hvis jeg var dig, så ville jeg desuden gemme værdien "intet_billede" som billednavn i databasen, når der ikke er noget billede. Så sparer du at skulle lave en IF-sætning hver eneste gang.
<table width="100%" cellpadding="0" cellspacing="0">
    <tr>
        <td>

            <br><h1><font color="#000000"><strong> Administration</strong></font></h1><br>

<%

' ADODB connection objektet
    Set Conn = Server.CreateObject("ADODB.Connection")
' Husk at angive den rigtige sti til din database
    DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("../database/settings.mdb")
' Åben databaseforbindelsen
    Conn.Open DSN

' SQL forespørgsel
    strSQL = "SELECT user.ID, type.Groupname, user.fName, user.sName FROM (tblUsers as user LEFT JOIN tblUsertype as type on user.Usertype=type.ID) ORDER BY type.Nummer, user.Nummer"

' Udfør forespørgsel (rs indeholder nu resultatet)
    Set rs = Conn.Execute(strSQL)

    Do
%>           

            <table width="48%" bgcolor="#dddddd" cellspacing="5" style="float: left; margin-right: 10px; margin-bottom: 10px;" class="tekstafsnit">
                <tr>
                    <td>
                        <img src="../images/brugere/<%=rs("picture")%>.jpg">
                    </td>
                    <td valign="top" align="left">
                        <br>&nbsp;<br><b><%=rs("fname")%>&nbsp;<%=rs("sname")%></b><br><br>
                        <table cellpadding="0" cellspacing="0" class="tekstafsnit">
                            <% if rs("telephone") <> "" then response.write "<tr><td>Tlf:&nbsp;</td><td>" & rs("telephone") & "</td></tr>" %>
                            <% if rs("mobile") <> "" then response.write "<tr><td>Mobil:&nbsp;</td><td>" & rs("mobile") & "</td></tr>" %>
                        </table>
                    </td>
                </tr>
            </table>
<%
        rs.MoveNext
        ' Fortsæt indtil rs er gennemløbet (EOF = End Of File)
    Loop While Not rs.EOF


' Luk databaseforbindelse
    Conn.Close
    Set Conn = Nothing

%>

        </td>
    </tr>
</table>
Avatar billede fredd Nybegynder
15. juni 2004 - 13:51 #4
Dit script virker desværre ikke... Jeg får denne fejl meddelelse:

Fejltype:
ADODB.Recordset (0x800A0CC1)
Elementet kan ikke findes i den samling, der svarer til det anmodede navn eller ordenstal.
/indhold/test.asp, line 105

----

<table width="48%" bgcolor="#dddddd" cellspacing="5" style="float: left; margin-right: 10px; margin-bottom: 10px;" class="tekstafsnit">
                <tr>
                    <td>
Linie 105 --->      <img src="../images/brugere/<% = rs("picture") %>.jpg">
                    </td>
                    <td valign="top" align="left">
                        <br>&nbsp;<br><b><%=rs("fname")%>&nbsp;<% = rs("sname") %></b><br><br>
                        <table cellpadding="0" cellspacing="0" class="tekstafsnit">
                            <% if rs("telephone") <> "" then response.write "<tr><td>Tlf:&nbsp;</td><td>" & rs("telephone") & "</td></tr>" %>
                            <% if rs("mobile") <> "" then response.write "<tr><td>Mobil:&nbsp;</td><td>" & rs("mobile") & "</td></tr>" %>
                        </table>
                    </td>
                </tr>
            </table>
Avatar billede fredd Nybegynder
15. juni 2004 - 13:56 #5
Der skal vel også laves en løkke af en eller anden art, men hvordan skal den se ud...?
Avatar billede sho Nybegynder
20. juni 2004 - 14:52 #6
Fejlen i linie 105 skyldes, at du ikke trækker feltet "picture" med ud i SQL-udtrykket. Jeg ved ikke, hvilken tabel, det ligger i, men det skal bare tilføjes på listen over felter, du forespørger på i SQL. Altså enten:

SELECT user.ID, type.Groupname, user.fName, user.sName, user.picture FROM (tblUsers as user LEFT JOIN tblUsertype as type on user.Usertype=type.ID) ORDER BY type.Nummer, user.Nummer

eller

SELECT user.ID, type.Groupname, user.fName, user.sName, type.picture FROM (tblUsers as user LEFT JOIN tblUsertype as type on user.Usertype=type.ID) ORDER BY type.Nummer, user.Nummer

-Søren
Avatar billede sho Nybegynder
20. juni 2004 - 14:53 #7
Løkken afhænger jo af, hvordan du vil have det præsenteret for brugeren?

-Søren
Avatar billede sho Nybegynder
08. januar 2005 - 09:15 #8
Fik du løst problemet, eller er det på tide at lukke?
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

Seneste spørgsmål Seneste aktivitet
34 min siden Ny printer, men hvilken Af mort1 i Printere
I går 19:41 USB på Linux Af Uvanga i Linux
12/0818:26 Hvilken type mus Af mort1 i PC
11/0813:21 ms Forms Af leahcim i Andet software
10/0821:30 Blokeret på Snapchat? Af LineP i Chat & Messaging