Un livre d'or pour votre site ! ( un guestbook )

Soyez le premier à donner votre avis sur cette source.

Vue 28 080 fois - Téléchargée 978 fois


Description

Voici un petit livre d'or couplé avec mon autre fonction qui permet de faire un paging.
N'oubliez pas de mettre le fichier adovbs.inc (présent dans le zip) dans le même répertoire.

Source / Exemple :


<%Option Explicit%>
<!--#include file="adovbs.inc"-->
<%
    ' ************************************************************
    ' Code Réalisé par Nicolas SOREL ( Nix pour les intimes :) )
    ' Pour le site ASPFr.com
    ' Retrouvez d'autres scripts ASP sur www.ASPFr.com
    ' Vous avez le droit d'utiliser ce script dans vos pages mais si vous souhaitez
    ' l'exposer sur un autre site de programmation merci de me contacter 
    ' (contact@vbfrance.com)
    ' ************************************************************

	Dim MonDSN, MaConnexion
		MonDSN = "DBQ=" & Server.MapPath("livredor.mdb") & ";Driver={Microsoft Access Driver (*.mdb)};"
	Set MaConnexion = Server.CreateObject("ADODB.Connection")
        MaConnexion.ConnectionTimeout = 30    
        MaConnexion.CommandTimeout = 30
        MaConnexion.Open MonDSN

    Dim NumPageEnCours
    Dim TaillePage
    Dim MaxPages
    Dim MaxEnrgs
    Dim CombienDeRecs
    Dim RecordsetLivreOr
	Dim MessagePostOK
	Dim RequeteLivreOr
	
	Function AfficheFormLivreDor (RecupRequest)
	' MessagePostOK = 0 => Récupère les Request et les met dans les champs (en cas d'erreur de saisie par exmple)
	' MessagePostOK = 1 => Champs vide
%>
		<div align="center"><font face="Arial" size="2">Pour nous encourager à continuer notre travail, laissez-nous un petit mot ...</font></div>
		<br>
		<form action="livredor.asp" method="post"><input type="hidden" name="Signer" value="1">
		<table width="350" border="0" cellspacing="0" cellpadding="2" align="center">
			<tr>
				<td align="right"><font face="Arial" size="2"><b>Nom :</b></font></td>
				<td><input type="text" name="Nom" size="35"<%If MessagePostOK = 0 Then%> value="<%=Request("Nom")%>"<%End If%>></td>
			</tr>
			<tr>
				<td align="right"><font face="Arial" size="2"><b>E-Mail :</b></font></td>
				<td><input type="text" name="EMail" size="35"<%If MessagePostOK = 0 Then%> value="<%=Request("EMail")%>"<%End If%>></td>
			</tr>
			<tr>
				<td align="right" valign="top"><font face="Arial" size="2"><b>Commentaire :</b></font></td>
				<td><textarea cols="30" rows="10" name="Comment"><%If MessagePostOK = 0 Then%><%=Request("Comment")%><%End If%></textarea></td>
			</tr>
			<tr>
				<td colspan="2" align="right"><input type="submit" value="Signer !"></td>
			</tr>
		</table>
		</form>
<%
	End Function

Function Livre2Txt(LeTxt)
	Dim TxtTmp
	TxtTmp = LeTxt
	TxtTmp = Replace(TxtTmp,"<",">")
	TxtTmp = Replace(TxtTmp,">",">")
	TxtTmp = Replace(TxtTmp,vbCrLf,"<br>")
	Livre2Txt = TxtTmp
End Function
	
Function AfficherLivreDor ()
	NumPageEnCours = Request("quelpage")
	If NumPageEnCours = "" then NumPageEnCours = 1
	TaillePage=10

		' Construction de la requete SQL :
		' ------------------------------
		RequeteLivreOr = "SELECT * FROM livredor ORDER BY LivreDate DESC, LivreHeure DESC"

		' Recup des donnees dans la base :
		' ------------------------------
		Set RecordsetLivreOr = Server.CreateObject("ADODB.Recordset")
		RecordsetLivreOr.cursorlocation = aduseclient
		RecordsetLivreOr.cachesize = 5
		RecordsetLivreOr.Open RequeteLivreOr,MaConnexion
		
		RecordsetLivreOr.pagesize = TaillePage
		MaxPages = Cint(RecordsetLivreOr.pagecount)
		MaxEnrgs = Cint(RecordsetLivreOr.pagesize)
		
		If Not RecordsetLivreOr.EOF Then RecordsetLivreOr.absolutepage = NumPageEnCours
		CombienDeRecs=0

%>
	<table width="400" border="0" align="center" class="ListeOr">
		<tr>
			<td align="Center"><font face="Arial" size="4" color="#000080"><b>Mon Livre d'Or à MOI que j'ai ! :)</b></font><br><font face="Arial" size="2"><a href="#signer">Cliquez ici</a> pour signer le livre d'or<br><br></font></td>
		</tr>
		<%If RecordsetLivreOr.EOF Then%>
			<tr><td align="center"><font face="Arial" size="2"><b>Le livre est vide pour l'instant</b></font><br><br></td></tr>
		</table>
			<%Exit Function%>
		<%Else%>
			<%Do UNTIL RecordsetLivreOr.EOF OR CombienDeRecs >= MaxEnrgs%>
				<tr><td align="right" bgcolor="#FFFFB0"><font face="Arial" size="1">Message de <a href="mailto:<%=Livre2Txt(RecordsetLivreOr("LivreEMail"))%>"><%=Livre2Txt(RecordsetLivreOr("LivreNom"))%></a>  le  <%=WeekDayName(WeekDay(RecordsetLivreOr("LivreDate")))%> <%=Day(RecordsetLivreOr("LivreDate"))%> <%=MonthName(Month(RecordsetLivreOr("LivreDate")))%> <%=Year(RecordsetLivreOr("LivreDate"))%> à <%=RecordsetLivreOr("LivreHeure")%></font></td></tr>
				<tr><td align="left"><font face="Arial" size="2"><%=Livre2Txt(RecordsetLivreOr("LivreComment"))%></font></td></tr>
				<tr><td> </td></tr>
				<%
				RecordsetLivreOr.MoveNext
				CombienDeRecs = CombienDeRecs + 1
			Loop%>
			<tr><td align="center"><div align="center"><%Call PagingBar()%></div></td></tr>
	</table>
		<%End If%>
	<%
		RecordsetLivreOr.Close
		Set RecordsetLivreOr = Nothing
	
	End Function

	Function SignerLivreDor()
	' Recuperation des donnees utilisateur :
	' ------------------------------------
	Dim strNom, strEMail, strComment, strIP, Item
	strNom = Replace(Request.Form("Nom"), "'", "''")
	strEMail = Replace(Request.Form("EMail"), "'", "''")
	strComment = Replace(Request.Form("Comment"), "'", "''")
	strIP = Request.ServerVariables("REMOTE_ADDR")

	'Verficiation de la validite des informations :
	'--------------------------------------------
	For Each Item In Request.Form
		If Request.Form(Item) = "" Then%>
			<font color="#FF0000">Vous n'avez pas saisie tous les champs, veuillez saisir tous les champs.<br></font>
			<%
				SignerLivreDor = False
				Exit Function
			%>
		<%End If%>
	<%Next%>

	<%If InStr(strEmail,"@") = 0 OR InStr(strEmail,".") = 0 Then%>
		<font color="#FF0000"><font color="#0000FF"><%=Request.Form("EMail")%></font> ne semble pas être une e-mail valide veuillez la resaisir.<br></font>
		<%
			SignerLivreDor = False
			Exit Function
		%>
	<%End If%>
<%
	' Construction de la requete SQL :
	' ------------------------------
	RequeteLivreOr = "INSERT INTO livredor (LivreNom, LivreEMail, LivreComment, LivreIP)"
	RequeteLivreOr = RequeteLivreOr & "VALUES('" & strNom & "', '" & strEMail & "', '" & strComment &"', '" & strIP &"')"

	' Ajout des donnees dans la base :
	' ------------------------------
	MaConnexion.Execute RequeteLivreOr

	If Err.Number = 0 Then
		SignerLivreDor = True
	Else
		SignerLivreDor = False
	End If
End Function
%>

<%
Sub PagingBar()
    Dim StrHTML
    Dim PageEnCours
    Dim CompteurFin, CompteurDebut
    Dim i, LesVars, Item
	
    If MaxPages <> 0 Then
        PageEnCours = Request.ServerVariables("script_name")
        Response.Write "<table rows=""1"" cols=""1"" width=""97%""><tr>"
        Response.Write "<td align=""center"">"
        Response.Write "<font size=""2"" color=""#000000"" face=""Verdana, Arial,Helvetica, sans-serif"">"
        LesVars = ""
        For each Item In Request.Form
            If LCase(Item) <> "quelpage" And LCase(Item) <> "taillepage" Then
                LesVars = LesVars & "&" & LCase(Item) & "=" & server.URLencode(Request.Form(Item))
            End If
        Next
        For each Item In Request.QueryString
            If LCase(Item) <> "quelpage" And LCase(Item) <> "taillepage" Then
                LesVars = LesVars & "&" & LCase(Item) & "=" & server.URLencode(Request.QueryString(Item))
            End If
        Next
        If (NumPageEnCours mod 10) = 0 Then
            CompteurDebut = PageEnCours - 9
        Else
            CompteurDebut = NumPageEnCours - (NumPageEnCours mod 10) + 1
        End If

        CompteurFin = CompteurDebut + 9
        If CompteurFin > MaxPages Then CompteurFin = MaxPages
        If CompteurDebut <> 1 Then
            StrHTML = "<a href=""" & PageEnCours
            StrHTML = StrHTML & "?quelpage=" & 1
            StrHTML = StrHTML & "&taillepage=" & TaillePage
            StrHTML = StrHTML & LesVars
            StrHTML = StrHTML & """>Première page</a> : "
            Response.Write StrHTML
            StrHTML = "<a href=""" & PageEnCours
            StrHTML = StrHTML & "?quelpage=" & (CompteurDebut - 1)
            StrHTML = StrHTML & "&taillepage=" & TaillePage
            StrHTML = StrHTML & LesVars
            StrHTML = StrHTML & """>10 pages Précédente</a> <br>"
            Response.Write StrHTML
        End If
        Response.Write "["
        
        For i = CompteurDebut To CompteurFin
            If cstr(i) <> Cstr(NumPageEnCours) Then
                StrHTML = "<a href=""" & PageEnCours
                StrHTML = StrHTML & "?quelpage=" & i
                StrHTML = StrHTML & "&taillepage=" & TaillePage
                StrHTML = StrHTML & LesVars
                StrHTML = StrHTML & """>Page " & i & "</a>"
            Else
                StrHTML = "<b>Page " & i & "</b>"
            End If
            Response.Write StrHTML

            If i <> CompteurFin Then Response.Write " "
        Next
        Response.Write "]"

        If CompteurFin <> MaxPages Then
            StrHTML = "<br><a href=""" & PageEnCours
            StrHTML = StrHTML & "?quelpage=" & (CompteurFin + 1)
            StrHTML = StrHTML & "&taillepage=" & TaillePage
            StrHTML = StrHTML & LesVars
            StrHTML = StrHTML & """>10 pages Suivantes</a>"
            Response.Write StrHTML
            StrHTML = " : <a href=""" & PageEnCours
            StrHTML = StrHTML & "?quelpage=" & MaxPages
            StrHTML = StrHTML & "&taillepage=" & TaillePage
            StrHTML = StrHTML & LesVars
            StrHTML = StrHTML & """>Dernière page</a>"
            Response.Write StrHTML
        End If
        Response.Write "<br></font>"
        Response.Write "</td>"
        Response.Write "</table>"
    End If
End Sub
%> 
<html>
<head>
	<title>Livre d'or par Nix</title>
</head>
<body bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#0000FF" alink="#FF0000">
	<br><font face="Arial" size="2">
	<%MessagePostOK = 1%>
	<%If Request("Signer") = 1 Then%>
		<%If SignerLivreDor() = True Then%>
			<br><div align="center"><b>Merci d'avoir signé notre livre d'or.</b></div><br><br><%MessagePostOK = 1%>
		<%Else%><%MessagePostOK = 0%>
			Il y a eu un erreur.<br>
		<%End If%>
	<%End If%>
	<%Call AfficherLivreDor()%>
	<br><a name="signer"><%Call AfficheFormLivreDor(MessagePostOK)%>
</font>
</body>
</html>
<%
	MaConnexion.Close
	Set MaConnexion = Nothing
%>

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

dork_maule
Messages postés
22
Date d'inscription
mercredi 9 juin 2004
Statut
Membre
Dernière intervention
29 mars 2008
-
Y a un blems a ton truc a la ligne maconnexion.Execute requete... le prog bloc et dit que l'opération doit utlisier une requête qui peut être mise à jour.
Tu sais comment regler le blems car moi je n'y arrive pas(j'utilise l'asp que depuis 2 semaine:-) )
Dork_maule
cs_Jackboy
Messages postés
757
Date d'inscription
vendredi 7 septembre 2001
Statut
Membre
Dernière intervention
19 juin 2008
-
Pas si mal, mais le design n'est pas digne du site vbfrance.com, mais bon et le problème est que si le gars entre un bon gros texte, la feuille s'agrandit (surement à cause de tableau et sa peut causé des prob quand ta un site dynamique qui se modifie. Bon bien au moin sa aide ce code.
Salut Nix,

Je suis débutant et j'essaie de comprendre ce qu'il se passe. J'ai essayé d'installer ça sur mon site, mais à chaque fois, j'ai la page qui s'affiche en texte et non pas comme je le souhaiterais. Que se passe-t-il ?
M'en veux pas, je suis débutant !!

A+
il y a un BUG ligne 186 :
Remplacer la ligne
CompteurDebut = PageEnCours - 9
par
CompteurDebut = NumPageEnCours - 9
;-)
Il est bien!

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.