[PHP] Livre d'or, problème....

Résolu/Fermé
Signaler
Messages postés
27
Date d'inscription
vendredi 14 novembre 2008
Statut
Membre
Dernière intervention
6 avril 2009
-
 Utilisateur anonyme -
Bonjour,
Je vous explique mon problème :
Alors, tout d'abord je voulais faire un livre d'or en PHP, ce que j'ai fais mais il avait un problème, alors j'ai repris un script et il s'avère qu'il ce même problème :
Les message ne s'affiche pas et apparemment ce n'est pas un problème de connexion à la DB, alors si vous pouviez m'aidez cela serait sympa voici le script :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
<head>
<title>Livre d'or</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
</head>
<body>
<form action="" method="post">
<p>
Pseudo :<input type="text" name="message" id="message"/><br />
Message :<textarea rows="5" cols="18" value="Entrez votre message ici...."></textarea>
<input type="submit" value="Stupéfix !" />
</p>
</form>

<p class="pages">
<?php
mysql_connect("HOTE", "PSEUDO", "MDP");
mysql_select_db("BASEDEDONNES");
if(isset($_POST['pseudo']) AND isset($_POST['message'])) //Si un visiteur laisse un message on l'enregistre
{
$pseudo = mysql_real_escape_string(htmlspecialchars($_POST['pseudo']));
$message = mysql_real_escape_string(htmlspecialchars($_POST['message']));
$message = nl2br($message);
mysql_query("INSERT INTO livreor VALUE('', '" . $pseudo . "', '" . $message . "')");
}

// On met dans une variable le nombre de messages qu'on veut par page
$nombreDeMessagesParPage = 20; // Essayez de changer ce nombre pour voir :o)
// On récupère le nombre total de messages
$retour = mysql_query('SELECT COUNT(*) AS nb_messages FROM livreor');
$donnees = mysql_fetch_array($retour);
$totalDesMessages = $donnees['nb_messages'];

// On calcule le nombre de pages à créer
$nombreDePages = ceil($totalDesMessages / $nombreDeMessagesParPage);
// Puis on fait une boucle pour écrire les liens vers chacune des pages
echo 'Page : ';
for ($i = 1 ; $i <= $nombreDePages ; $i++)
{
echo '<a href="livreor.php?page=' . $i . '">' . $i . '</a> ';
}
?>
</p>
<?php


// --------------- Etape 3 ---------------
// Maintenant, on va afficher les messages
// ---------------------------------------

if (isset($_GET['page']))
{
$page = $_GET['page']; // On récupère le numéro de la page indiqué dans l'adresse (livreor.php?page=4)
}
else // La variable n'existe pas, c'est la première fois qu'on charge la page
{
$page = 1; // On se met sur la page 1 (par défaut)
}

// On calcule le numéro du premier message qu'on prend pour le LIMIT de MySQL
$premierMessageAafficher = ($page - 1) * $nombreDeMessagesParPage;

$reponse = mysql_query('SELECT * FROM livreor ORDER BY ID DESC LIMIT ' . $premierMessageAafficher . ', ' . $nombreDeMessagesParPage);
while($donnees = mysql_fetch_array($reponse))
{
echo'
<p><strong> ' . $donnees['pseudo'] . '</strong> à écrit :</p><p> ' .$donnees['message'] . ' </p> ';

}
mysql_close();
?>
</body>
</html>

Merci !!

14 réponses

Messages postés
79
Date d'inscription
samedi 28 mars 2009
Statut
Membre
Dernière intervention
11 avril 2009
4
Salut,

j'ai ta réponse :

remplace tout ton formulaire par :

<form action="" method="post">
<p>
Pseudo :<input type="text" name="pseudo" id="message"/><br />
Message :<textarea rows="5" name="message" cols="18" value="Entrez votre message ici...."></textarea>
<input type="submit" value="Stupéfix !" />
</p>
</form>

Les noms des champs n'étaient pas définis correctement.
0
Messages postés
27
Date d'inscription
vendredi 14 novembre 2008
Statut
Membre
Dernière intervention
6 avril 2009
1
Merci BigFish, mais maintenant cela n'affiche qu'un seul message....:,(
0
Messages postés
79
Date d'inscription
samedi 28 mars 2009
Statut
Membre
Dernière intervention
11 avril 2009
4
Étonnant, chez moi ça affiche tous les messages bidon que j'ai créés. Ta table comprend bien trois champs ?
0
Messages postés
27
Date d'inscription
vendredi 14 novembre 2008
Statut
Membre
Dernière intervention
6 avril 2009
1
Oui oui !
ID int(11) Non
pseudo varchar(255) latin1_swedish_ci Non
message text
0
Messages postés
79
Date d'inscription
samedi 28 mars 2009
Statut
Membre
Dernière intervention
11 avril 2009
4
tu as combien de messages ? Ont-ils bien des ID différents ?
0
Messages postés
27
Date d'inscription
vendredi 14 novembre 2008
Statut
Membre
Dernière intervention
6 avril 2009
1
Mon dieu !!! Tu as raison je n'avais pas mis l'id en auto_increment !! Merci !
0
Messages postés
27
Date d'inscription
vendredi 14 novembre 2008
Statut
Membre
Dernière intervention
6 avril 2009
1
Euh maintenant j'ai un autre problème quand je mets un message trop long et ben il ne s'affiche pas...
0

Change le type de ton champ message en LONGTEXT à la place de TEXT.
0
Messages postés
27
Date d'inscription
vendredi 14 novembre 2008
Statut
Membre
Dernière intervention
6 avril 2009
1
Non, ça marche pas....:,(
0

Quesque tu met comme message ?
0
Messages postés
27
Date d'inscription
vendredi 14 novembre 2008
Statut
Membre
Dernière intervention
6 avril 2009
1
Un message de bienvenue à ceux qui viennent sur le livre d'or, basique quoi !
0

A ouais. Il fait combien de lignes ton message ? Quels sont les messages qui s'affiche correctement ? Combien lignes font-ils ? Enfin, est-ce que tu as un message d'erreur PHP ou MYSQL ?
0
Messages postés
27
Date d'inscription
vendredi 14 novembre 2008
Statut
Membre
Dernière intervention
6 avril 2009
1
Alors plus simple je vais te mettre le message exactement comme je veux l'envoyez :
"Bonjour à tous !!
Bienvenue sur le Livre d'or de
TDP, autrement dit, le Grimoire
d'or !
Il est à votre disposition pour partager vos avis sur ce site, et
même, y proposez des idées pour l'améliorer !!
Petit rappel :
Le Livre d'or n'est pas un chat"
Voilà, après non je n'ai pas d'erreur, et quand je met des message test sa marche bien, alors....
0

Ce que j'ai fait c'est que j'ai refait la partie du code PHP d'envoi a ma sauce en reproduisant le schema de ta table SQL ce qu m'a eviter de perdre du temps a chercher l'erreur. Bon chez moi sa marche ainsi que ton message de bienvenue et le système de pagination des enregistrements. Reste à voir si ça marche chez toi.

livreor.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
<head>
<title>Livre d'or</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
</head>
<body>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<p>
Pseudo :<input type="text" name="pseudo" id="pseudo"/>
</p>
<p><br />
Message :</p>
<p>
<textarea rows="5" cols="18" name="message">Entrez votre message ici....</textarea>
</p>
<p>
<input type="submit" value="Stupéfix !" />
</p>
</form>

<p class="pages">
<?php
mysql_connect("SERVEUR", "LOGIN", "MDP");
mysql_select_db("BASEDONNEES");

if (isset($_POST['pseudo']) && isset($_POST['message']))
{
$pseudo = htmlspecialchars(mysql_real_escape_string($_POST['pseudo']));
$message = htmlspecialchars(mysql_real_escape_string($_POST['message']));
$message_sl = nl2br($message);
$query = mysql_query("INSERT INTO livreor VALUES('','" . $pseudo . "','" . $message_sl . "')")or die(mysql_error() . ',' . mysql_errno());
}

// On met dans une variable le nombre de messages qu'on veut par page
$nombreDeMessagesParPage = 20; // Essayez de changer ce nombre pour voir :o)
// On récupère le nombre total de messages
$retour = mysql_query('SELECT COUNT(*) AS nb_messages FROM livreor');
$donnees = mysql_fetch_array($retour);
$totalDesMessages = $donnees['nb_messages'];

// On calcule le nombre de pages à créer
$nombreDePages = ceil($totalDesMessages / $nombreDeMessagesParPage);
// Puis on fait une boucle pour écrire les liens vers chacune des pages
echo 'Page : ';
for ($i = 1 ; $i <= $nombreDePages ; $i++)
{
echo '<a href="livreor.php?page=' . $i . '">' . $i . '</a> ';
}
?>
</p>
<?php
if (isset($_GET['page']))
{
$page = $_GET['page']; // On récupère le numéro de la page indiqué dans l'adresse (livreor.php?page=4)
}
else // La variable n'existe pas, c'est la première fois qu'on charge la page
{
$page = 1; // On se met sur la page 1 (par défaut)
}

// On calcule le numéro du premier message qu'on prend pour le LIMIT de MySQL
$premierMessageAafficher = ($page - 1) * $nombreDeMessagesParPage;

$reponse = mysql_query('SELECT * FROM livreor ORDER BY ID DESC LIMIT ' . $premierMessageAafficher . ', ' . $nombreDeMessagesParPage);

while($donnees = mysql_fetch_array($reponse))
{
echo '<p><strong> ' . $donnees['pseudo'] . '</strong> à écrit :</p><p> ' . $donnees['message'] . ' </p>';
}
mysql_close();
?>
</body>
</html>

Tiens moi au courent.
0
Messages postés
27
Date d'inscription
vendredi 14 novembre 2008
Statut
Membre
Dernière intervention
6 avril 2009
1
Merci beaucoup, ça marche impec' !! Apparemment, cela devait être à cause que le mysql_query n'était pas dans une variable, enfin, bref, encore merci !!
0

il y a aussi le word comme livre d'or
0