Php les message ne s'affiche pas

Fermé
yandelyano Messages postés 76 Date d'inscription mercredi 13 août 2008 Statut Membre Dernière intervention 17 décembre 2011 - 12 sept. 2009 à 21:52
graffx Messages postés 6506 Date d'inscription jeudi 22 mars 2007 Statut Contributeur Dernière intervention 24 mars 2019 - 13 sept. 2009 à 17:14
Bonjour, bon jour j'ai realiser un livre d'or mais quand j'ecri un commentaire, ça ne s'affich pas.. je voudrais savoir s'il y'avait une erreur?








<?php
include("banner.php");
?>
<form method="post" action="commentaires.php">
<p>Mon site vous plaît ? Laissez-moi un message !</p>
<p>
Pseudo : <input type="text" name="pseudo" /><br />
Message :<br />
<textarea name="message" rows="8" cols="35"></textarea><br />
<input type="submit" value="Envoyer" />
</p>
</form>
<p>

<?php
mysql_connect('localhost', 'utilisateur', 'motdepasse');
mysql_select_db('coolblog_data');

if (isset($_POST['pseudo']) && isset($_POST['message']))
{
$sql = ('INSERT INTO coms VALUES ("","'.$_POST['pseudo'].'","'.$_POST['message'].'")');
mysql_query($sql);

}

$nombreDeMessagesParPage = 20;

$retour = mysql_query('SELECT COUNT(*) AS nb_messages FROM coms');
$donnees = mysql_fetch_array($retour);
$totalDesMessages = $donnees['nb_messages'];

$nombreDePages = ceil($totalDesMessages / $nombreDeMessagesParPage);

echo 'Page : ';
for ($i = 1 ; $i <= $nombreDePages ; $i++)
{
echo '<a href="commentaires.php?page=' . $i . '">' . $i . '</a> ';
}
?>

</p>
<?php
if(isset($_GET['page']))
{
$page = $_GET['page'];
}
else
{
$page = 1;
}

$premierMessageAafficher = ($page - 1) * $nombreDeMessagesParPage;

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

while ($donnees = mysql_fetch_array($reponse))
{
echo '<p><strong>' . $donnees['pseudo'] . '</strong> a écrit :<br />' . $donnees['message'] . '</p>';
}

mysql_close();
?>

<p> okay </p>
</body>
</html>

8 réponses

Passarinho44 Messages postés 963 Date d'inscription mercredi 28 mai 2008 Statut Contributeur Dernière intervention 13 juin 2012 132
12 sept. 2009 à 22:08
Essaie de remplacer :
$sql = ('INSERT INTO coms VALUES ("","'.$_POST['pseudo'].'","'.$_POST['message'].'")');

Par
$sql = "INSERT INTO coms VALUES ('','".$_POST['pseudo']."','".$_POST['message']."')";

Dis moi si ça règle le problème.
Là tu avais un problème dans les quotes et guillemets.
Quand tu mets du texte dans une variable comme ici il est préférable de mettre des guillemets plutôt que des quotes.
Et dans ta requete SQL il vaut mieux utiliser des quotes que des guillemets.
J'ai donc inversé tes quotes et tes guillemets et j'ai enlever les parenthèses englobant le tout car elle étaient plutôt inutiles.
0
Luan1604 Messages postés 130 Date d'inscription dimanche 6 septembre 2009 Statut Membre Dernière intervention 19 octobre 2009 4
12 sept. 2009 à 22:20
Salut,

J'aurais envie de dire la même chose que Passarinho44 à deux trois trucs près. Je vais partir de la requête corrigée par Passarinho44 car je la trouve plus propre.

Il m'arrive personnellement qu'une requête ne marche pas car je n'ai pas mis de addslashes donc.

$sql = "INSERT INTO coms VALUES ('','".addslashes($_POST['pseudo'])."','".addslashes($_POST['message'])."')"; 


Ca va simplement ajouter des \ quand il verra des '.


Ensuite, remplacer ceci:
echo '<p><strong>' . $donnees['pseudo'] . '</strong> a écrit :<br />' . $donnees['message'] . '</p>'; 


Par ceci:
echo '<p><strong>' . stripslashes($donnees['pseudo']) . '</strong> a écrit :<br />' . htmlentities(nl2br(stripslashes($donnees['message']))) . '</p>'; 


Ca fera en sorte que lorsqu'il y a un \, ce sera enlevé. Ensuite, j'ai désactivé la possibilité de mettre du html par sécurité (htmlentities) et fait en sorte que les sauts à la ligne marche. Ce sont quelques suggestions pour que votre script aille mieux.

Luan.
0
Passarinho44 Messages postés 963 Date d'inscription mercredi 28 mai 2008 Statut Contributeur Dernière intervention 13 juin 2012 132
12 sept. 2009 à 22:29
J'ajouterai même que plutôt que les addslashes, utiliser la fonction mysql_real_escape_string() qui ajoutera les \ mais évitera également d'autres problèmes que l'on pourrait trouver avec les requetes MySQL =)
0
yandelyano Messages postés 76 Date d'inscription mercredi 13 août 2008 Statut Membre Dernière intervention 17 décembre 2011 13
12 sept. 2009 à 23:49
merci pour la reponse mais ça ne marche pas non plus =( , et je voudrais rajouter que le texte entré par les viisiteur ne s'enregistrent meme pas sur la BBD
0

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

Posez votre question
Luan1604 Messages postés 130 Date d'inscription dimanche 6 septembre 2009 Statut Membre Dernière intervention 19 octobre 2009 4
13 sept. 2009 à 00:08
Vous voulez afficher des messages entrés par les visiteurs mais sans les enregistrer dans la base de donnée ? OU bien vouliez-vous dire qu'une entrée est crée dans la base de donnée mais que le champs "message" reste vide ?

Remplacer:
mysql_query($sql);

Par
mysql_query($sql) or die(mysql_error());

Et donnez-moi l'erreur que ça renvoie lorsque vous ajoutez un message s'il vous plaît.

0
yandelyano Messages postés 76 Date d'inscription mercredi 13 août 2008 Statut Membre Dernière intervention 17 décembre 2011 13
13 sept. 2009 à 00:13
non ce que je voulais dir c que meme les entrés ne sont pas créés
jai mis le "or die.." voici l'erreur:
Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING in /www/hostse.com/c/o/o/coolblog/htdocs/commentaires.php on line 21

et voici la ligne 21

mysql_query "INSERT INTO coms VALUES ('','".$_POST['pseudo']."','".$_POST['message']."')" or die(mysql_error());
0
Passarinho44 Messages postés 963 Date d'inscription mercredi 28 mai 2008 Statut Contributeur Dernière intervention 13 juin 2012 132
13 sept. 2009 à 17:11
Remplace
mysql_query "INSERT INTO coms VALUES ('','".$_POST['pseudo']."','".$_POST['message']."')" or die(mysql_error());
par

mysql_query ("INSERT INTO coms VALUES ('','". stripslahses($_POST['pseudo']) ."','". stripslahses($_POST['message']) ."')") or die(mysql_error());
0
graffx Messages postés 6506 Date d'inscription jeudi 22 mars 2007 Statut Contributeur Dernière intervention 24 mars 2019 1 973
13 sept. 2009 à 17:14
mysql_query ("INSERT INTO coms VALUES ("," '. stripslahses($_POST['pseudo']) .' "," '. stripslahses($_POST['message']) .')") or die(mysql_error());


essaie comme ca
0