theprogrammeur Posté 6 Avril 2007 Posté 6 Avril 2007 Bonjour J'ai créé un livre d'or et j'ai une erreur que je ne sais pas résoudre: <!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" /> <style type="text/css"> form, .pages { text-align:center; } </style> </head> <body> <form method="post" action="livreor.php"> <p>Merci de laisser un message dans mon livre d'or</p> <p> Pseudo : <input name="pseudo" /><br /> Message :<br /> <textarea name="message" rows="8" cols="35"></textarea> <br /> <input type="submit" value="Envoyer" /> </p> </form><p class="pages"><?phpmysql_connect("localhost", "user", "mot_de_passe") or die("Echec lors de la connection");mysql_select_db("ma_base");//Si message envoyé, enregistrement//dans la BDD//(utilisation des htmlentities)if (isset($_POST['pseudo']) AND isset($_POST['message'])){ $pseudo = htmlentities($_POST['pseudo'], ENT_QUOTES); // On utilise htmlentities par mesure de sécurité $message = htmlentities($_POST['message'], ENT_QUOTES); // De même pour le message $message = nl2br($message); // Pour le message, comme on utilise un textarea, il faut remplacer les Entrées par des <br /> // On peut enfin enregistrer ) mysql_query("INSERT INTO livreor VALUES('', '" . $pseudo . "', '" . $message . "')");}// Ecriture des liens//vers les différentes pages//si il y en a// nbre de messages par page$nombreDeMessagesParPage = 20; // Essayez de changer ce nombre pour voir )// recupération des messages$retour = mysql_query('SELECT COUNT(*) AS nb_messages FROM livreor');$donnees = mysql_fetch_array($retour);$totalDesMessages = $donnees['nb_messages'];// calcul du nombre de pages à créer$nombreDePages = ceil($totalDesMessages / $nombreDeMessagesParPage);// écriture de tous les liensecho 'Page : ';for ($i = 1; $i <= $nombreDePages; $i++){ echo '<a href="livreor.php?page=' . $i . '">' . $i . '</a> ';}?></p><?php//Affichage de tous le messages//utilisation de GET//boucle pour tout afficherif (isset($_GET['page'])){ $page = $_GET['page']; // rucup n° page}else //1e visite, 1e page{ $page = 1;}// n° 1e message$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> a écrit :<br />' . $donnees['message'] . '</p>';}mysql_close();?></body></html> Ce qui coince, c'est while ($donnees = mysql_fetch_array($reponse))
captain_torche Posté 6 Avril 2007 Posté 6 Avril 2007 Lorsque tu postes de longs extraits de code, il est conseillé d'utiliser la balise CODEBOX, qui ne nuit pas à la lecture des messages. J'ai édité ton post en ce sens. En ce qui concerne ton problème, ta requête doit être incorrecte. Je te conseille pour commencer, de mettre la requête dans une variable (comme ça, tu peux l'afficher pour la tester dans PhpMyAdmin). De plus, après une requête, tu peux utiliser la fonction mysql_error() pour connaître le message d'erreur renvoyé par le serveur MySQL. Ca donnerait, par exemple : <?php$query = "SELECT * FROM livreor ORDER BY id DESC LIMIT $premierMessageAafficher, $nombreDeMessagesParPage";/* Tu peux mettre des variables dans une chaîne entre double quotes, elles seront interprétées. Tu éviteras ainsi de mal concaténer tes chaînes */$reponse = mysql_query($query) or die(mysql_error());?> Quel message d'erreur obtiens-tu ? La requête fonctionne-t'elle sous PhpMyAdmin ?
theprogrammeur Posté 6 Avril 2007 Auteur Posté 6 Avril 2007 L'erreur que j'obtiens est la suivante: Unknown column 'id' in 'order clause' De plus, j'ai remarqué que le commentaire que j'avais posté en essai dans mon livre d'or s'était bien inscrit dans la BDD. Comme il ne s'est pas affiché, j'en déduis que c'est un problème....d'affichage
Kent Posté 6 Avril 2007 Posté 6 Avril 2007 C'est just qu'il n'existe pas de champs "id" ou alors il ne s'appele pas comme ça, peut-être idmessage ? idreponse ? ..
theprogrammeur Posté 7 Avril 2007 Auteur Posté 7 Avril 2007 Je suis bête, j'avais mal nommé un champ de ma table. J'avais créé le champ IP au lieu du champ ID. Maintenant le problème est réglé. Merci de votre aide!
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant