TP CHAT [classer les massages !]

Résolu/Fermé
Kali01? Messages postés 122 Date d'inscription mercredi 8 mai 2013 Statut Membre Dernière intervention 12 novembre 2015 - 15 mars 2014 à 15:34
 Utilisateur anonyme - 16 mars 2014 à 07:42
Bonjour tout le monde ,
J'apprend actuellement le PHP, MySQL sur le site du zéro, je viens d'arriver au TP "chat" ->

http://fr.openclassrooms.com/informatique/cours/concevez-votre-site-web-avec-php-et-mysql/instructions-pour-realiser-le-tp-2

Je suis bloqué sur le fait que l'on veuille que seuls les dix derniers messages soient affichés..
J'ai donc écrit cette requête :
'SELECT TOP 10 * FROM chat ORDER BY id DESC'


Hors celà m'affiche une erreur :
[Fatal error: Call to a member function fetch() on a non-object in C:\wamp\www\CHAT\minichat.php on line 29]

Voici le reste du code que j'ai fait :
<!DOCTYPE html>
<html>
	<head>
	</head>
	
	<body>
		<form action="minichat_post.php" method="post">
		<p>
		Pseudo :<input type="text" name="login"/>
		<br>
		Message :<input type="text" name="message"/>
		<br>
		<input type="submit" value="Envoyer"/>
		</p>
		
		<br><br>
		<?php
		try
		{
			$bdd =new PDO('mysql:host=localhost;dbname=mini_chat', 'root', '');
		}
		catch(Exeption $e)
		{
			die('Erreur : '.$e->getMessage());
		}
		
		$reponse = $bdd->query('SELECT TOP 10 * FROM chat ORDER BY message DESC');
		
		while($donnees = $reponse->fetch())
	{
	?>
	
	<p>
	<strong> <?php echo $donnees['login']; ?></strong> : <?php echo $donnees['message']; ?>
	</p>
	
	
	
	<?php
	}
	$reponse->closeCursor();
	
	?>
	
	</body>
	
	
</html>


La base de donnée s'appelle mini_chat et j'utilise donc une table nommée chat qui contient "id" ( en AUTO ), "login" et "message"

J'arrive a afficher les messages dans le bon ordre grasse a DESC mais pas que les dix derniers....



Merci


2 réponses

dan-b Messages postés 80 Date d'inscription samedi 15 septembre 2012 Statut Membre Dernière intervention 20 octobre 2014 7
15 mars 2014 à 16:08
bonjour,

l'erreur signifie que la requête a échoué (ce qu'on voit d'ailleurs en testant si $response = false)
il me semble que "select top" ne marche pas avec mysql, il faut utiliser l'instruction limit (voir la correction du TP:)
0
Utilisateur anonyme
16 mars 2014 à 07:42
Exactement, il se peut que ta bdd ne supporte pas la commande SELECT TOP! Pour obtenir les dix derniers messages entrés, tu devrais écrire comme ceci:

SELECT * FROM chat ORDER BY id DESC LIMIT 10
0