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

Résolu/Fermé
ClemsZer0 Messages postés 27 Date d'inscription vendredi 14 novembre 2008 Statut Membre Dernière intervention 6 avril 2009 - 4 avril 2009 à 18:13
 Utilisateur anonyme - 6 avril 2009 à 20:39
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 !!
A voir également:

14 réponses

Bigfish72 Messages postés 79 Date d'inscription samedi 28 mars 2009 Statut Membre Dernière intervention 11 avril 2009 4
4 avril 2009 à 18:30
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
ClemsZer0 Messages postés 27 Date d'inscription vendredi 14 novembre 2008 Statut Membre Dernière intervention 6 avril 2009 1
4 avril 2009 à 20:04
Merci BigFish, mais maintenant cela n'affiche qu'un seul message....:,(
0
Bigfish72 Messages postés 79 Date d'inscription samedi 28 mars 2009 Statut Membre Dernière intervention 11 avril 2009 4
4 avril 2009 à 20:11
Étonnant, chez moi ça affiche tous les messages bidon que j'ai créés. Ta table comprend bien trois champs ?
0
ClemsZer0 Messages postés 27 Date d'inscription vendredi 14 novembre 2008 Statut Membre Dernière intervention 6 avril 2009 1
4 avril 2009 à 20:24
Oui oui !
ID int(11) Non
pseudo varchar(255) latin1_swedish_ci Non
message text
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Bigfish72 Messages postés 79 Date d'inscription samedi 28 mars 2009 Statut Membre Dernière intervention 11 avril 2009 4
4 avril 2009 à 20:31
tu as combien de messages ? Ont-ils bien des ID différents ?
0
ClemsZer0 Messages postés 27 Date d'inscription vendredi 14 novembre 2008 Statut Membre Dernière intervention 6 avril 2009 1
4 avril 2009 à 20:33
Mon dieu !!! Tu as raison je n'avais pas mis l'id en auto_increment !! Merci !
0
ClemsZer0 Messages postés 27 Date d'inscription vendredi 14 novembre 2008 Statut Membre Dernière intervention 6 avril 2009 1
5 avril 2009 à 15:21
Euh maintenant j'ai un autre problème quand je mets un message trop long et ben il ne s'affiche pas...
0
Utilisateur anonyme
5 avril 2009 à 15:31
Change le type de ton champ message en LONGTEXT à la place de TEXT.
0
ClemsZer0 Messages postés 27 Date d'inscription vendredi 14 novembre 2008 Statut Membre Dernière intervention 6 avril 2009 1
5 avril 2009 à 18:53
Non, ça marche pas....:,(
0
Utilisateur anonyme
5 avril 2009 à 19:46
Quesque tu met comme message ?
0
ClemsZer0 Messages postés 27 Date d'inscription vendredi 14 novembre 2008 Statut Membre Dernière intervention 6 avril 2009 1
5 avril 2009 à 19:56
Un message de bienvenue à ceux qui viennent sur le livre d'or, basique quoi !
0
Utilisateur anonyme
5 avril 2009 à 20:13
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
ClemsZer0 Messages postés 27 Date d'inscription vendredi 14 novembre 2008 Statut Membre Dernière intervention 6 avril 2009 1
5 avril 2009 à 20:25
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
Utilisateur anonyme
6 avril 2009 à 12:49
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
ClemsZer0 Messages postés 27 Date d'inscription vendredi 14 novembre 2008 Statut Membre Dernière intervention 6 avril 2009 1
6 avril 2009 à 20:33
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
Utilisateur anonyme
6 avril 2009 à 20:39
il y a aussi le word comme livre d'or
0