Avatar billede internet Nybegynder
26. marts 2004 - 17:13 Der er 9 kommentarer og
1 løsning

forskellige farver til poster

Hej.
Jeg har en link funktion, hvor man kan tilføje sin side. Funktion kan ses på http://www.emilchristiansen.dk/link/option1.asp
Jeg har prøvet at se om jeg kunne lave det om, så hver anden post har #999966 som background, de andre har #CCCC99. Koden til link funktionen er:

option1.asp

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>
<head>

    <title>:: emilchristiansen.dk ::</title>
  <meta http-equiv="Content-type" content="text/html; charset=ISO-8859-1">
  <meta http-equiv="Content-Style-Type" content="text/css">
   
<!-- #include file="database.asp" -->
<!-- #include file="dateformater.asp" -->
</head>

<body>
<!--#INCLUDE FILE="../top.asp" -->

<div id="indhold">


    <h1>Links</h1>
<p>OBS. sorteret efter HITS</p>
<p>Add your link <a href="option2.asp">click here</a></p>
<p>
      <%
Dim objRS

Set objRS = OpenDataBase("../../database/addlink.mdb", "SELECT * FROM link ORDER BY Hits DESC")
If (Not objRS.BOF) And (Not objRS.EOF) Then
    objRS.MoveFirst
    Response.Write "<table class=""FT"" align=center cellspacing=0 cellpadding=0 border=0>" & vbCrLf
    Response.Write "<tr><td width=""20%"" align=left>" & vbCrLf
    Response.Write "Site name :" & vbCrLf
    Response.Write "</td><td width=""50%"" align=center>" & vbCrLf
    Response.Write "description :" & vbCrLf
    Response.Write "</td><td width=""10%"" align=center>" & vbCrLf
    Response.Write "Hits :" & vbCrLf
            While Not objRS.EOF

        Response.Write "<tr bgcolor="""& strBGColor &"""><td valign=top width=""20%"" align=left>" & vbCrLf
        Response.Write "<a href=""clickcount.asp?id=" & objRS("ID") & Chr(34) & " target=""_blank"">"
        Response.Write objRS("Name")
        Response.Write "</a>" & vbCrLf
        Response.Write "</td><td width=""20%"" valign=bottom align=left>" & vbCrLf
        Response.Write objRS("Des") & vbCrLf
        Response.Write "</td><td width=""10%"" valign=top align=center>" & vbCrLf
        Response.Write objRS("Hits") & vbCrLf
                Response.Write "</td></tr>"


        objRS.MoveNext
    Wend
    Response.Write "</table>" & vbCrLf
Else
    Response.Write "No links found in the database.<br>" & vbCrLf
End If

objRS.Close
Set objRS = Nothing

%>
</p>
  </div>

</body>
</html> 

De relevante includerede filer:

database.asp

<%

Function OpenDataBase(DBPathName, TableName)
  Const adOpenDynamic = 2
  Const adLockOptimistic = 3
  Dim strConnect
  Dim objRS
 
  strConnect = "Provider=Microsoft.Jet.OLEDB.4.0;"
  strConnect = strConnect & "Data Source="
  strConnect = strConnect & Server.MapPath(DBPathName) & ";"
  strConnect = strConnect & "Persist Security Info=False"
  Set objRS = Server.CreateObject("ADODB.Recordset")
  objRS.Open TableName, strConnect, adOpenDynamic, adLockOptimistic
  Set OpenDataBase = objRS
End Function

%>

og

dateformater.asp

<!-- Bobo Link-System Copyright 2002 - Visit http://bobo.novellen.dk for more information on new versions and sourcecodes. -->
<%

Function DateFormaterGetMonthName(intMonth, boolDKNames)
  Dim strName
  If boolDKNames Then
    Select Case intMonth
      Case 1 : strName = "januar"
      Case 2 : strName = "februar"
      Case 3 : strName = "marts"
      Case 4 : strName = "april"
      Case 5 : strName = "maj"
      Case 6 : strName = "juni"
      Case 7 : strName = "juli"
      Case 8 : strName = "august"
      Case 9 : strName = "september"
      Case 10 : strName = "oktober"
      Case 11 : strName = "november"
      Case 12 : strName = "december"
    End Select
  Else
    Select Case intMonth
      Case 1 : strName = "january"
      Case 2 : strName = "february"
      Case 3 : strName = "march"
      Case 4 : strName = "april"
      Case 5 : strName = "may"
      Case 6 : strName = "june"
      Case 7 : strName = "july"
      Case 8 : strName = "august"
      Case 9 : strName = "september"
      Case 10 : strName = "october"
      Case 11 : strName = "november"
      Case 12 : strName = "december"
    End Select
  End If
  DateFormaterGetMonthName = strName
End Function

Function DateFormaterVisual(datDate, strFormat, boolDKNames)
  Dim strWork
  Dim strWrk
  Dim strCommand
  Dim strFormatOptions
  Dim strResult
  Dim datWork
  Dim intMonth
  Dim intDay
  Dim intYear
  Dim intHour
  Dim intMinute
  Dim intSecond
 
  strFormatOptions = strFormat & " "
  datWork = CDate(datDate)
  intMonth = CLng(Month(datWork))
  intDay = CLng(Day(datWork))
  intYear = CLng(Year(datWork))
  intHour = CLng(Hour(datWork))
  intMinute = CLng(Minute(datWork))
  intSecond = CLng(Second(datWork))
  strWork = ""
  strResult = ""
  strCommand = ""
  While strFormatOptions <> ""
    strWork = Mid(strFormatOptions, 1, 1)
    strFormatOptions = Mid(strFormatOptions, 2, Len(strFormatOptions))
    Select Case LCase(strWork)
      Case "d", "m", "y", "h", "n", "s" : strCommand = strCommand & strWork
      Case Else
        If strCommand <> "" Then
          Select Case LCase(Mid(strCommand, 1, 1))
            Case "d"
              strWrk = CStr(intDay)
              If Len(strCommand) = 2 Then
                If Len(strWrk) = 1 Then
                  strWrk = "0" & strWrk
                End If
              End If
              strResult = strResult & strWrk
            Case "m"
              Select Case Len(strCommand)
                Case 1
                  strWrk = CStr(intMonth)
                Case 2
                  strWrk = CStr(intMonth)
                  If Len(strWrk) = 1 Then
                    strWrk = "0" & strWrk
                  End If
                Case 3
                  strWrk = DateFormaterGetMonthName(intMonth, boolDKNames)
                  strWrk = Mid(strWrk, 1, 3)
                  If Mid(strCommand, 1, 1) = "M" Then
                    strWrk = UCase(Mid(strWrk, 1, 1)) & LCase(Mid(strWrk, 2, Len(strWrk)))
                  Else
                    strWrk = LCase(strWrk)
                  End If
                Case 4
                  strWrk = DateFormaterGetMonthName(intMonth, boolDKNames)
                  If Mid(strCommand, 1, 1) = "M" Then
                    strWrk = UCase(Mid(strWrk, 1, 1)) & LCase(Mid(strWrk, 2, Len(strWrk)))
                  Else
                    strWrk = LCase(strWrk)
                  End If
              End Select
              strResult = strResult & strWrk
            Case "y"
              strWrk = CStr(intYear)
              If Len(strCommand) = 2 Then
                strWrk = Mid(strWrk, 3, 2)
              End If
              strResult = strResult & strWrk
            Case "h"
              strWrk = CStr(intHour)
              If Len(strCommand) = 2 Then
                If Len(strWrk) = 1 Then
                  strWrk = "0" & strWrk
                End If
              End If
              strResult = strResult & strWrk
            Case "n"
              strWrk = CStr(intMinute)
              If Len(strCommand) = 2 Then
                If Len(strWrk) = 1 Then
                  strWrk = "0" & strWrk
                End If
              End If
              strResult = strResult & strWrk
            Case "s"
              strWrk = CStr(intSecond)
              If Len(strCommand) = 2 Then
                If Len(strWrk) = 1 Then
                  strWrk = "0" & strWrk
                End If
              End If
              strResult = strResult & strWrk
          End Select
        End If
        strResult = strResult & strWork
        strCommand = ""
    End Select
  Wend
  DateFormaterVisual = Mid(strResult, 1, Len(strResult) - 1)
End Function

Function DateFormaterCreateDate(intDay, intMonth, intYear, intHour, intMinute, intSecond)
  Dim strWork
  Dim strWrk
  Dim datWork
 
  datWork = CDate(strDate)
  strWork = ""
  If LCase(GetLocale) = "da" Then
    strWrk = CStr(intDay)
    If Len(strWrk) = 1 Then
      strWrk = "0" & strWrk
    End If
    strWork = strWork & strWrk & "-"
    strWrk = CStr(intMonth)
    If Len(strWrk) = 1 Then
      strWrk = "0" & strWrk
    End If
    strWork = strWork & strWrk & "-"
  Else
    strWrk = CStr(intMonth)
    If Len(strWrk) = 1 Then
      strWrk = "0" & strWrk
    End If
    strWork = strWork & strWrk & "-"
    strWrk = CStr(intDay)
    If Len(strWrk) = 1 Then
      strWrk = "0" & strWrk
    End If
    strWork = strWork & strWrk & "-"
  End If
  strWrk = CStr(intYear)
  If Len(strWrk) = 1 Then
    strWrk = "0" & strWrk
  End If
  strWork = strWork & strWrk & " "
  strWrk = CStr(intHour)
  If Len(strWrk) = 1 Then
    strWrk = "0" & strWrk
  End If
  strWork = strWork & strWrk & ":"
  strWrk = CStr(intMinute)
  If Len(strWrk) = 1 Then
    strWrk = "0" & strWrk
  End If
  strWork = strWork & strWrk & ":"
  strWrk = CStr(intSecond)
  If Len(strWrk) = 1 Then
    strWrk = "0" & strWrk
  End If
  strWork = strWork & strWrk
  datWork = CDate(strWork)
  DateFormaterCreateDate = datWork
End Function

%>

håber i kan hjælpe
Emil
Avatar billede eagleeye Praktikant
26. marts 2004 - 17:28 #1
Prøv at tilføje dette inde i dit loop:

    If blnBGColor = True Then
      strBGColor = "#999966"
      blnBGColor = False
    Else
      strBGColor = "#CCCC99"
      blnBGColor = True
    End If


Sådan her:

            While Not objRS.EOF

    If blnBGColor = True Then
      strBGColor = "#999966"
      blnBGColor = False
    Else
      strBGColor = "#CCCC99"
      blnBGColor = True
    End If

        Response.Write "<tr bgcolor="""& strBGColor &"""><td valign=top width=""20%"" align=left>" & vbCrLf
        Response.Write "<a href=""clickcount.asp?id=" & objRS("ID") & Chr(34) & "
..
..kode
..
Avatar billede thesurfer Nybegynder
26. marts 2004 - 17:52 #2
eagleeye> Hvad er grunden til at du bruger en "switch" (blnBGColor)?

Kan man ikke bare gøre sådan her?:

strBGColor = "#CCCC99"

While Not objRS.EOF

    If strBGColor = "#CCCC99" Then
      strBGColor = "#999966"
    Else
      strBGColor = "#CCCC99"
    End If

        Response.Write "<tr bgcolor="""& strBGColor &"""><td valign=top width=""20%"" align=left>" & vbCrLf
        Response.Write "<a href=""clickcount.asp?id=" & objRS("ID") & Chr(34) & "
..
..kode
..
Avatar billede The Real Yoda Juniormester
26. marts 2004 - 17:56 #3
vel endnu nemmere:

strBGcolor="#CCCC99"
strTMPx=strTMPx+1
if x/2=int(x/2) then strBGcolor="#999966"

på denne måde har du endda også tal på antallet af poster
Avatar billede internet Nybegynder
26. marts 2004 - 17:57 #4
Tak for hjælpen.
Avatar billede thesurfer Nybegynder
26. marts 2004 - 18:01 #5
therealyoda> Interessant. Kan du beskrive koden?
Avatar billede The Real Yoda Juniormester
26. marts 2004 - 19:01 #6
hehe..

ja ok .. lille fejl..

det skulle jo være:

strBGcolor="#CCCC99"
strTMPx=strTMPx+1
if strTMPx/2=int(strTMPx/2) then strBGcolor="#999966"

DOH!
Avatar billede thesurfer Nybegynder
26. marts 2004 - 19:10 #7
Undskyld spammen..
Kan du foreklare denne del på dansk? :-)
...
strTMPx=strTMPx+1
if strTMPx/2=int(strTMPx/2) ...
Avatar billede The Real Yoda Juniormester
26. marts 2004 - 19:29 #8
strTMPx=strTMPx+1

hver gang den smutter igennem loopet bliver x forhøjet med en..

dvs 1...2...3....4...5...6. osv..

if strTMPx/2=int(strTMPx/2)

checker om x er deleligt med to ..

hvis det er et lige tal vil strTMPx/2 være et helt tal og derfor være det samme som int(strTMPx/2)
hvis det er et ulige tal vil strTMPx/2 være et kommatal og derfor ikke være det samme som int(strTMPx/2)

håber det er forklaring nok...
Avatar billede eagleeye Praktikant
27. marts 2004 - 16:02 #9
Andre ville skrive det som

if x mod 2 = 0 then
Avatar billede The Real Yoda Juniormester
27. marts 2004 - 16:57 #10
ahhh.. smart..

den kendte jeg så ik lige..

men ja.. den er da klart smartere
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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