j'ai mis en place un livre d'or sur mon site avec une base de donnée pour que les messages soient validés avant qu'ils apparaissent.
Le problème est que quand je valide un des messages, tout les messages de la bdd apparaissent !
de plus je dois passer par le phpadmin pour les effacer alors que j'ai créer des fichiers pour cela.
voici le code que j'ai intégré dans ma page livredor.php3
<?
// Variables de connexion (voir fichier "lisez-moi.txt")
$host = "mysql5-4.bdb";
$user = "xxx";
$pass = "xxx";
$bdd = "xxx";
// Nombre de messages affichés par page
$msg_pges = "15";
// Présentation du livre d'or
$fontFace = "verdana,arial,hevetica"; // Police par défaut
$fontSize = "2"; // Taille de la police par défaut
$couleurBandeauMsg = "#5aa0fe"; // Couleur du fond du texte des titres
$couleurFondMsg = "white"; // Couleur du fond du texte des messages
$fontColorTitreMsg = "white"; // Couleur du texte des TITRES de messages
$fontColorTexteMsg = ""; // Couleur du texte des messages
/****************************************************************************************/
/**************************** Ne plus rien modifier à partir d'ici **********************/
/****************************************************************************************/
$FONT_DEF = "<FONT FACE=$fontFace SIZE=$fontSize>"; // Ne pas éditer
$FONT_TITRE_MSG = "<FONT FACE=$fontFace SIZE=$fontSize COLOR=\"$fontColorTitreMsg\">"; // Ne pas éditer
$FONT_TEXTE_MSG = "<FONT FACE=$fontFace SIZE=$fontSize COLOR=\"$fontColorTexteMsg\">"; // Ne pas éditer
$pageCourante = basename($PHP_SELF);
if ($HTTP_POST_VARS)
{
if (($pseudo=="")||($message==""))
{
print "<BR><TABLE WIDTH=95%>";
print "<TR><TD><CENTER><B>$FONT_DEF
Vous devez au moins indiquer un pseudo et taper un message pour signer le livre d'or!</B></FONT><BR>";
print "<A HREF=$pageCourante>$FONT_DEF"."Retour à la liste des messages</FONT></A>";
$niet = "niet";//signale l'erreur pour ne pas afficher les messages
print "<HR WIDTH=95% NOSHADE SIZE=1></FONT><CENTER></TD></TR></TABLE>";
}else{
$date=date('d m Y, H:i');
if ($url=="http://"){$url="";}
MYSQL_CONNECT("$host","$user","$pass") or die("Impossible de se connecter");
@mysql_select_db("$bdd") or die("Base de données non sélectionnée.");
$query = "INSERT INTO livredor (pseudo,email,pays,url,message,date) VALUES";
$query .="('$pseudo', '$email', '$pays', '$url', '$message', '$date')";
$result = MYSQL_QUERY($query);
MYSQL_CLOSE;
$pseudo="";$email="";$pays="";$url="";$message="";//pour ne pas ré-afficher dans le formulaire
}
}
if ($niet=="")
{
MYSQL_CONNECT("$host","$user","$pass") or die("Impossible de se connecter");
@mysql_select_db("$bdd") or die("Base de données non sélectionnée.");
$query = "SELECT * from livredor WHERE etatMessage LIKE 'valide' ";
$result = MYSQL_QUERY($query);
$nbreTotal = MYSQL_NUMROWS($result);
if ($nbreTotal!="0")
{
/* ------------------------------------------------------------------------------------ */
/* -------------------------- Définition du nombre de pages --------------------------- */
/* ------------------------------------------------------------------------------------ */
$nbrePages = ceil($nbreTotal/$msg_pges);
if ($page==""){$page="0";}
$premierMsg = ($page * $msg_pges);
$dernierMsg = ($premierMsg + $msg_pges);
if ($nbrePages>1)
{
$code = "<CENTER><HR SIZE=1 NOSHADE>";
$code.= "| "; // Pour marquer la page, faire précéder de "Page ".($page + 1)." - "
$x = "0";
while ($x < $nbrePages)
{
if ($page != $x)
{
$code.= "<A HREF=$pageCourante?page=$x><B>".($x+1)."</B></A> | ";
}else{
$code.= " ".($x+1)." | ";
}
$x++;
}
$code.= "<HR SIZE=1 NOSHADE></CENTER>";
}
/* ------------------------------------------------------------------------------------ */
$query = "SELECT * from livredor ORDER by id DESC";
$result = MYSQL_QUERY($query);
$number = MYSQL_NUMROWS($result);
MYSQL_CONNECT("$host","$user","$pass") or die("Impossible de se connecter");
@mysql_select_db("$bdd") or die("Base de données non sélectionnée.");
print "$FONT_DEF<CENTER>$code<BR>$number messages <br> <A HREF=#poster>Sign the Guest Book</A> </FONT><HR SIZE=1 WIDTH=75% NOSHADE>";
// Lecture de la base quoi qu'il arrive
$i=($number-1);
$i="$premierMsg";
WHILE ($i<$dernierMsg)
{
$t_pseudo = mysql_result($result,$i,"pseudo");
$t_email = mysql_result($result,$i,"email");
$t_pays = mysql_result($result,$i,"pays");
$t_url = mysql_result($result,$i,"url");
$t_message = mysql_result($result,$i,"message");
$t_date = mysql_result($result,$i,"date");
$t_id = mysql_result($result,$i,"id");
print "<TABLE WIDTH=95% BORDER=0 CELLPADDING=0 CELLSPACING=0>";
print "<TR><TD>$FONT_DEF"."$t_date</FONT></TD></TR>";
print "<TR><TD BGCOLOR=$couleurBandeauMsg>";
if ($t_email)
{
print "<A HREF=mailto:$t_email>$FONT_TITRE_MSG";
print "$t_pseudo</FONT></A>$FONT_TITRE_MSG, $t_pays</FONT>";
}else{
print "<B>$FONT_TITRE_MSG";
print "$t_pseudo</FONT></B>$FONT_TITRE_MSG, $t_pays</FONT>";
}
if ($t_url)
{
print "$FONT_TITRE_MSG, webmaster du site </FONT>";
print "<A HREF=\"$t_url\" target=\"_blank\">$FONT_TITRE_MSG$t_url</FONT></A>";
}
print "</TD></TR><TR><TD BGCOLOR=$couleurFondMsg>$FONT_TEXTE_MSG";
print "$t_message</FONT></TD></TR></TABLE>";
print "<BR>";
$i++;
if ($i==$number){$i=$dernierMsg;}
}
}else{
print "<CENTER>$FONT_DEF"."<B>No message.</B></FONT></CENTER>";
}
print "$FONT_DEF$code";
}
/*********************************** Formulaire *****************************************/
?>
le code de ma page index.php dans mon dossier admin
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Restaurant Le Hors Pistes</title>
</head>
<?php
$serveur = "mysql5-4.bdb";
$user = "xxx";
$pwd = "xxx";
$base = "xxx";
//connexion au serveur
mysql_connect($serveur,$user,$pwd) OR DIE("Connexion au serveur MySQL impossible");
//selection de la base de données
mysql_select_db($base) OR DIE("Impossible de se connecter à la base");
//on sélectionne les messages de la table livredor où l'état est "en attente" en les ordonnant selon l'id
$requete = "SELECT * FROM livredor WHERE etatMessage LIKE 'en attente' ORDER BY id";
//on envoie la requête
$envoi = mysql_query($requete) OR DIE("La requete n'a pas ete envoyee.");
//on va traiter les messages l'un après l'autre
while($resultat = mysql_fetch_array($envoi)){
//on affiche l'id du message et son contenu :
print("Message n° ".$resultat['id']." : <br />".$resultat['message']."<br />");
//on affiche un lien de validation
print("<a href='valider.php?id=".$resultat['id']."'>Valider ce message</a><br />");
//on affiche un lien de suppression
print("<a href='supprimer.php?id=".$resultat['id']."'>Supprimer ce message</a><br />");
}
?>
et le code de ma page valider.php dans ce même dossier
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Restaurant Le Hors Pistes</title>
</head>
<?php
$serveur = "mysql5-4.bdb";
$user = "xxx";
$pwd = "xxx";
$base = "xxx";
//connexion au serveur
mysql_connect($serveur,$user,$pwd);
//selection de la base de données
mysql_select_db($base);
//récupération de l'id passé dans l'URL
$idMessage = $_GET['id'];
//écriture de la requête de mise à jour
$requete = "UPDATE livredor SET etatMessage = 'valide' WHERE id = '".$idMessage." '";
//envoi de la requête au serveur mysql (le or die() arrête le programme en cas d'échec)
$envoi = mysql_query($requete) or die("Impossible de valider le message.");
//on confirme à l'administrateur que le message est bien validé
print("Le message a bien été validé.");
//au besoin on ajoute un lien pour revenir à la page d'administration
print("<a href='index.php'>Retour à liste des messages en attente.</a>");
?>
et enfin la page supprimer.php
]<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Restaurant Le Hors Pistes</title>
</head>
<?php
$serveur = "mysql5-4.bdb";
$user = "xxx";
$pwd = "xxx";
$base = "xxx";
//connexion au serveur
mysql_connect($serveur,$user,$pwd);
//selection de la base de données
mysql_select_db($base);
//récupération de l'id passé dans l'URL
$idMessage = $_GET['id'];
//écriture de la requête de mise à jour de l'état
$requete = "UPDATE livredor SET etatMessage = 'refuse' WHERE id = '".$idMessage."' ";
//envoi de la requête au serveur mysql (le or die() arrête le programme en cas d'échec)
$envoi = mysql_query($requete) or die("Impossible de supprimer le message.");
//on confirme à l'administrateur que le message est bien supprimé
print("Le message a bien été supprimé.");
//au besoin on ajoute un lien pour revenir à la page d'administration
print("<a href='index.php'>Retour à liste des messages en attente.</a>");
?>
ma base de donnée:
après plus de 3 semaines de recherche, je ne trouve pas l'erreur.
je craque, j'ai besoin de vous...
MERCI
Ce que l'on apprend par l'effort reste toujours ancré beaucoup plus longtemps.