Page 1 sur 1

Tutoriel : Comment faire un livre d'or ?

MessagePosté: 09 Sep 2005 09:46
de Vally8
Aujourd'hui : Comment faire un livre d'or ????

Un livre d'or se décompose en 2 grandes parties : l'affichage du livre et l'enregistrement des messages par les utilisateurs.

1/ L'enregistrement des messages.

La methode la plus simple pour faire un livre d'or est bien sur d'utiliser une base de données. Il vous faut donc la créer.

Regardons les champs dont vous allez avoir besoin : l'email de la personne, le site internet de la personne, la date du message et le message bien sur !

Donc dans sql creez votre table : par exemple :

Code: Tout sélectionner
CREATE TABLE `monlivredor` (
  `pseudo` varchar(20) ,
  `mail` varchar(40),
  `web` varchar(40),
  `date` datetime NOT NULL default '0000-00-00 00:00:00',
  `message` text,
  PRIMARY KEY  (`pseudo`,`date`)
)


Voilà :)

Maintenant, il vous faut un formulaire, qui sera dans la page signer par exemple :)

Le formulaire doit contenir les champs a remplir, un bouton pour valider et un lien vers la page qui se chargera de faire l'enregistrement (ici enregistrement.php, mais cela doit etre spécifié dans la balise form pour la valeur de l'attribut action)

Dans le corps de votre page (entre les balises <body> et </body> donc, mettez le formulaire qui ressemble à peu pres à ca :

Code: Tout sélectionner
<form method="POST" action="enregistrement.php" enctype="application/x-www-form-urlencoded" name="" >
<table cellpadding="1" cellspacing="0" align="center" bgcolor="#666666" border="0">
<tr>
  <th align="center" height="20"><b>Entrer vos commentaires ci dessous :</b>
  </th>
</tr>
<tr>
  <td>
  <table border=0 cellpadding=3 align="center" cellspacing="0" bgcolor="#555555">
  <tr>
    <td  width="32%"><u>Nom :</u>
    </td>
    <td  > <input class="input" type="text" name="pseudo" value="" size=40 >
    </td>
  </tr>
  <tr>
    <td  width="32%"><u>Email :</u>
    </td>
    <td  > <input class="input" type="text" name="mail" value="" size=40 >
    </td>
  </tr>
  <tr>
    <td  width="32%"> <u>URL :</u>
    </td>
    <td  > <input class="input" type="text" name="web" size=40 >
    </td>
  </tr>
  <tr>
    <td  valign="top" width="32%"> <u>Commentaires :</u>
    </td>
    <td  > <textarea class="input" name="message" cols="40" rows="10" ></textarea>
    </td>
  </tr>
  <tr>
    <td  width="32%"> <input class="button" type="reset" name="reset" value="Effacer" >
    </td>
    <td  align=RIGHT > <input class="button" type="submit" name="OK" value="Valider" >
    </td>
  </tr>
  </table>
  </td>
</tr>
</table>
</form>


Ensuite, il faut faire quelque chose de ces données : elle seront traitées dans enregistrement.php :
Code: Tout sélectionner
<?

//ici les parametres pour la connexion
   $host="monhost";
   $user="monuser";
   $base="mabase";
   $passe="monpass";

   $table="monlivredor";

//on effectue la connexion
       $serveur = @mysql_connect("$host","$user","$passe");

//Selection de la base de données
       $select_base=@mysql_selectdb("$base");

//Si la connexion echoue
if (!$select_base)
{
    echo "Mauvaise configuration!!!";
}
//Sinon
else
{
if (isset($HTTP_POST_VARS))
{
   $pseudo = $HTTP_POST_VARS['pseudo'];
   $mail = $HTTP_POST_VARS['mail'];
   $web = $HTTP_POST_VARS['web'];
   $pseudo = $HTTP_POST_VARS['pseudo'];
   $message = $HTTP_POST_VARS['message'];



  $query = "INSERT INTO `monlivredor` ( `pseudo` , `mail` , `web` , `message` , `date` )VALUES ('$pseudo', '$mail', '$web', '$message', NOW( ))";
  $result = MYSQL_QUERY($query);
   echo "<h1>Merci d'avoir signé mon livre d'or.</h1>
              <div align= center>
      <a href=index.php>Retourner au livre d'or</a>
      </div>
      ";

}
else
{
   echo "<h1>Erreur dans l'utilisation du fichier</h1>
              <div align= center>
      <a href=index.php>Retourner au livre d'or</a>
      </div>
      ";
}
}
?>




En fait, ici, c'est vraiment simple, il suffit de récuperer les valeurs entrées et de les mettres dans la base de données.... En verifiant quand meme 2 ou 3 petites choses...
Attention, chez free $user et $base ont la meme valeur ;) (en effet, votre base a pour nom votre login)

2/ L'affichage du livre d'or

En général, on affiche le livre d'or dans la page index.php. Dans votre corps de fichier, il vous suffit d'ajouter un lien vers la signature du livre, et la liste des messages que vous avez dans la base de données

Code: Tout sélectionner
<div align ="center">
<a href ="signer.php">Signer le livre d'or</a><br>
</div>

<?

//ici les parametres pour la connexion
   $host="monhost";
   $user="monuser";
   $base="mabase";
   $passe="monpass";

   $table="monlivredor";

//on effectue la connexion

       $serveur = @mysql_connect("$host","$base","$passe");

//Selection de la base de données qui porte le meme nom que votre login

       $select_base=@mysql_selectdb("$base");

//Si la connexion echoue

if (!$select_base)

{
//Afficher la ligne suivante

    echo "Mauvaise configuration!!!";

}
//Sinon

else
{
echo "<hr>";

   $res = mysql_query( "SELECT * FROM  `monlivredor`order by 'date' DESC", $serveur);
   if ($res)
   {
   while ( $q = mysql_fetch_array ($res, MYSQL_ASSOC) )
   {
      $pseudo = $q[pseudo];
      $mail = $q[mail];
      $web = $q[web];
      $message = $q[message];
      $date = $q[date];

      // il faut décortiquer la date pour avoir un affichage plus sympa
      $annee = substr("$date", 0, 4);
      $mois = substr("$date", 5, 2);
      $jour = substr("$date", 8, 2);
      $heure = substr("$date", 11, 18);

      // Pour garder les retours à la ligne
      $message = str_replace("\n","<br>",$message);
      
      echo "<b>$pseudo : <a href=\"mailto:$mail\">$mail</a> -$pageweb</b><br>\n
            Le $jour/$mois/$annee à $heure :<br>\n
            $message<br>
            <hr>";
   }
   }
}
?>



Voilà ;) vous savez tout sur les livres d'or maintenant :oui:

Il ne vous reste plus qu'à changer l'affichage comme vous le souhaitez ;)

Si vous avez la moindre question, n'hesitez pas :ok:

MessagePosté: 09 Sep 2005 09:51
de ryoko.lila
Merci :pouce: (a cause de moi, tout ces tutos XD)
Bon je doit crée des tables si j'ai bien compris (javais pas fait)
J'ai pris les fichier de free, mais je doit créer alors encor un autre : enregistrement.php.
Let'go! Baby :pouce: (j'suis contente :goutter: )

MessagePosté: 09 Sep 2005 09:54
de Vally8
oui, tu as une table a enregistrer : le code dans le 1er encadré, tu le colles dans une fenetre SQL de ta base de données

ensuite, tu as 3 fichiers a sauvegarder :
dans l'ordre :

signer.php
enregistrer.php
index.php

et n'oublies pas de mettre ton entete et ton pied de page dans les fichiers signer et index (tout ce qu'il y a avant le <body> ET tout ce qu'il y a apres le <body>)

MessagePosté: 09 Sep 2005 11:05
de ryoko.lila
Code: Tout sélectionner
$host="monhost";

quest qui faut mette a la place de monhost? merci

MessagePosté: 09 Sep 2005 11:09
de Vally8
sur ta machine avec easy php : localhost
sur le serveur free : sql.free.fr

MessagePosté: 09 Sep 2005 11:22
de ryoko.lila
Ca marche :fete: !
Merci!! je doit voir la mise en forme ^^
http://ryoko.lila.free.fr/site/guestbook.php
mais comment je fais pour suprimer des messages, je dans le faire dans la tabla?

MessagePosté: 09 Sep 2005 12:34
de Vally8
oui, pour supprimer les messages, tu vas dans ta base de données, tu cliques sur monlivredor puis afficher, tu coches celui (ou ceux) que tu veux effacer et tu cliques sur la croix rouge : ca va te demander une confirmation : tu dis oui et voilà ;)

effectivement, il ne reste plus qu'a changer la couleur du tableau ;)