Agenda (affichage des événements provenant d'une base de données sur un calendrier)

Description

Ce script se connecte à une base de données (SQLServer ici), et va afficher les événements disponibles pour le mois sélectionner sur un calendrier dynamique.
Peut également servir uniquement de calendrier sur un site.
Très facilement évolutif avec par exemple l'ajout de thème d'événement, de tris...

Source / Exemple :


' ##############################################################
' Agenda.asp
' Affiche un agenda d'événement (configurer ici pour SQL Server)
' Romain Mourer @2002
' romain_mourer@yahoo.fr
' ##############################################################

<!-- #include file='connexion.asp' -->
<%
Function DtPrevSunday(ByVal dt)
	' Cette foction va renvoyer la date du premier jour à afficher sur
	' le calendrier (en général jour du mois précédent)
	Do While WeekDay(dt) > vbSunday
		dt = DateAdd("d", -1, dt)
    Loop
	DtPrevSunday = dt
End Function
'--------------------------------------------------

dim rsEvenement

'----------------------------------------------------------
' Function aganda_recherche_evenement(DateMois)
' Cherche s'il existe un événement à la date donnée
' Argument(s) : DateMois
'----------------------------------------------------------
Function aganda_recherche_evenement(DateMois)
	Set rsRecherche = server.CreateObject("ADODB.Recordset")

	strSql = "SELECT Agenda.* FROM Agenda WHERE " _
		& " month(dateEvenement)= " & month(DateMois) & " and year(dateEvenement) = " & year(DateMois) & " AND day(dateEvenement) = " & day(DateMois) & " ORDER BY DateEvenement"
		
	rsRecherche.Open StrSql, DBConn
	if not rsRecherche.eof then
		aganda_recherche_evenement = "oui"
	else
		aganda_recherche_evenement = "non"
	end if
	
	rsRecherche.close
	set rsRecherche=nothing
End Function

'----------------------------------------------------------
' Function seance_recherche_Annee(DateAVoir)
' Affiche le calendrier de recherche d'un événement
' Argument(s) : DateAVoir
'----------------------------------------------------------
Function agenda_recherche (DateAVoir)
	Dim dtToday 
	dtToday = Date()

	Dim dateMoisCourant ' Date du 1er jour du mois
	Dim dateTmpCourant ' Date du 1er jour à afficher sur le calendrier
						' en général, jour du mois précédent

	' recherche du premier jour du mois
	dateTmp = DateAVoir
	dateJour = day(dateTmp)
	dateTmp = dateadd("d", (-dateJour+1), dateTmp)

	dateMoisCourant = dateTmp

	Dim iDay, iWeek, sFontColor
%>

    <table CELLPADDING="3" class="Agenda" border="0">
		<tr VALIGN="MIDDLE" ALIGN="CENTER">
			<td COLSPAN="7">
				<table CELLPADDING="0" CELLSPACING="0" WIDTH="100%" BORDER="0" width="100%" class="AgendaMois">
					<tr VALIGN="MIDDLE" ALIGN="CENTER">
						<td WIDTH="10%" ALIGN="center">
							<a href="agenda.asp?view_date=<%= dateadd("m", -1, dateMoisCourant) %>"><<</a>
						</td>
						<td WIDTH="80%">
							<font FACE="Arial" COLOR="#000000">
							<b><small><%=MonthName(Month(dateMoisCourant)) & " " & Year(dateMoisCourant)%></small></b>
							</font>
						</td>
						<td WIDTH="10%" ALIGN="center">
							<a href="agenda.asp?view_date=<%= dateadd("m", 1, dateMoisCourant) %>">>></a>
						</td>
					</tr>
				</table>
			</td>
		</tr>
        <tr VALIGN="TOP" ALIGN="CENTER" BGCOLOR="#000099">
	        <% For iDay = vbSunday To vbSaturday %>
            <th WIDTH="14%"><font FACE="Arial" SIZE="-2" COLOR="#FFFFFF"><%=left(WeekDayName(iDay), 3)%></font></th>
		    <%Next %>
        </tr>
<%

	dateTmpCourant = DtPrevSunday(dateMoisCourant)
	
	For iWeek = 0 To 5
		Response.Write "<TR VALIGN=TOP>" & vbCrLf

		Dim sBGCOLOR 
		sBGCOLOR = "#52B4CB"
		sfontColor = "#000000"
		For jour = 0 To 6
			sBGCOLOR = "#52B4CB"
			If Month(dateTmpCourant) = Month(dateMoisCourant) Then
				' Si on est sur le mois en cours
				if cint(Day(dateTmpCourant)) = cint(day(DateAVoir)) then
					' Si jour sélectionné, ou jour d'aujourd'hui
					if (cint(Day(dateTmpCourant)) = cint(day(date()))) AND (Month(dateTmpCourant) = Month(date())) then 
						' Aujourd'hui
						sBGCOLOR = "#0000FF"
					elseif Month(dateTmpCourant) = Month(date()) then
						sBGCOLOR = "#DCF0F4"
						sfontColor = "#FF0000"
					end if
				'else
				'	if cint(Day(dateTmpCourant)) = cint(day(date()))  AND (Month(dateTmpCourant) = Month(date())) then 
						' Aujourd'hui
						'sBGCOLOR = "#0000FF"
				'	elseif Month(dateTmpCourant) = Month(date()) then
				'		sBGCOLOR = "#52B4CB"
				'	end if
					'sBGCOLOR = "#99ccff"
				end if
				
				' On va vérifier s'il y a au moins un évenement ce jour au quel cas on change la couleur
				if aganda_recherche_evenement (day(dateTmpCourant) & "/" & monthname(month(dateTmpCourant)) & "/" & year(dateTmpCourant)) = "oui" then
					sBGCOLOR = "#3BA554"
				end if
			else
				' c'est encore le mois précédent
				sBGCOLOR = "#52B4CB"
			End If
			
			Response.Write "<TD HEIGHT=20 bgcolor='" & sBGCOLOR & "' >"
         
  			If Month(dateTmpCourant) = Month(dateMoisCourant) Then
				If dateTmpCourant = dtToday Then
					sFontColor = "#ff0000"
	            Else
					sFontColor = "#00000"
				End If
             
				Response.Write "<a href=agenda.asp?" & "view_date=" & day(dateTmpCourant) & "/" & monthname(month(dateTmpCourant)) & "/" & year(dateTmpCourant) & ">"
				Response.Write "<FONT FACE=""verdana"" SIZE=""-2"" COLOR=""" & sFontColor & """><B>"
				Response.Write Day(dateTmpCourant) & "</a></B></FONT><BR>"

			End If

			Response.Write "</TD>" & vbCrLf
			dateTmpCourant = DateAdd("d", 1, dateTmpCourant)
		Next
		Response.Write "</TR>" & vbCrLf 
	Next
%>
<%
	Response.Write "</table>"
	
End Function

'--------------------------------------------------------------------------------
' Function seance_rechercher(VoirDate)
' Affiche le résultat de la recherche
' Argument(s) : VoirDate
'				
'--------------------------------------------------------------------------------
Function evenement_recherche (VoirDate)
	
	Set rsEvenement = server.CreateObject("ADODB.Recordset")

	if Request.QueryString("tous") = "jour" then
		strSql = "SELECT Agenda.* FROM Agenda WHERE " _
		& " month(dateEvenement)= " & month(VoirDate) & " and year(dateEvenement) = " & year(VoirDate) & " AND day(dateEvenement) = " & day(VoirDate) & " ORDER BY DateEvenement"
	elseif Request.QueryString("tous") = "mois" then
		strSql = "SELECT Agenda.* FROM Agenda WHERE " _
		& " month(dateEvenement)= " & month(VoirDate) & " and year(dateEvenement) = " & year(VoirDate) & " ORDER BY DateEvenement"
	else
		strSql = "SELECT Agenda.* FROM Agenda WHERE " _
			& " month(dateEvenement)= " & month(VoirDate) & " and year(dateEvenement) = " & year(VoirDate) & " AND day(dateEvenement) = " & day(VoirDate) & " ORDER BY DateEvenement"
	end if
	rsEvenement.Open StrSql, DBConn
	%>
	
<table border="0" cellpadding="0" cellspacing="0" width="100%" height="100%">
	<tr>
		<td width="50%" align="center" height="5" class="haut_milieu"><br>
			<%agenda_recherche("" & VoirDate & "")%>
		</td>
	</tr>
	<tr>
		<td valign="top"><br>
			<div align="center"><font size="1"><b>Liste des évenements du <%=VoirDate%></b></font></div>
			<%
			if rsEvenement.eof then
				Response.Write "<div align=center><br><font face=verdana size=1 color=#000080>Aucun événement ce jour.</font><br></div>"
			end if
			do while not rsEvenement.eof
				if trim(rsEvenement("description")) = ""  then
					Response.Write "<li><font color='#4E6FB7' size='2'><b>" & rsEvenement("Libelle") & "</b></font></li><br>"
				else
					Response.Write "<li><a href='#' onClick='voirEvenement(" & rsEvenement("idAgenda") & ");'><font color='#4E6FB7' size='2'><b><u>" & rsEvenement("Libelle") & "</u></b></font></a></li><br>"
				end if
				rsEvenement.movenext
			Loop
			rsEvenement.close()
			set rsEvenement=nothing
			%>
		</td>
	</tr>
</table>
<%
	DBConn.Close
	set DBConn = nothing
End Function

'----------------------------------
' Affichage de la page
' Appel aux différentes fonctions
'----------------------------------
%>
<html>
<head>
<title>Agenda</title>
<script language="javascript">
function voirEvenement(idEvenement) {
	lien = "user_agenda_fiche.asp?idEvenement=" + idEvenement;
	open(lien,'Agenda','width=700,height=500,toolbar=no,location=no,directories=no,status=no,scrollbars=yes,menubar=no,resizable=yes,top=10,left=10');
}
</script>
</head>
<body bgcolor="#FFFFFF">
<table width="60%" align="center">
	<tr>
		<td align="left" valign="top" width="572" height="395" bgcolor="#FFFFFF">
			<%
			Select Case Request("action")
			case default
				if Request("view_date") <> "" then
					evenement_recherche(Request("view_date"))
				else
					evenement_recherche(date())
				end if
			End Select
			%>
		</td>
	</tr>
</table>
</body>
</html>

Conclusion :


Le fichier agenda.asp se trouve dans le zip avec le fichier connexion.asp et la requête de création de la table "Agenda"

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.