Php les message ne s'affiche pas

yandelyano Messages postés 76 Date d'inscription   Statut Membre Dernière intervention   -  
graffx Messages postés 6506 Date d'inscription   Statut Contributeur Dernière intervention   -
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>
A voir également:

8 réponses

Passarinho44 Messages postés 963 Date d'inscription   Statut Contributeur Dernière intervention   132
 
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   Statut Membre Dernière intervention   4
 
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   Statut Contributeur Dernière intervention   132
 
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   Statut Membre Dernière intervention   13
 
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   Statut Membre Dernière intervention   4
 
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   Statut Membre Dernière intervention   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   Statut Contributeur Dernière intervention   132
 
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   Statut Contributeur Dernière intervention   1 975
 
mysql_query ("INSERT INTO coms VALUES ("," '. stripslahses($_POST['pseudo']) .' "," '. stripslahses($_POST['message']) .')") or die(mysql_error());


essaie comme ca
0