Problème affichage requette MySQL

Eléphanteau du PHP | 39 Messages

09 mai 2011, 21:40

Bonjour !

Bon, je sais, ma question parrait vraiment idiote (j'ai même un peu honte :oops: ) mais voila ça fait une semaine que je bloque, et ça m'énerve ! :twisted:

Je réalise une petite page toute simple (apparament pas si simple que ça #-o ) avant de m'attaquer à un plus gros projet, et voila que je veux afficher le resultat d'une requete SQL d'un BDD MySQL. Sauf qu'il m'affiche donc mon image logo, puis mon menu avec mes liens, puis une boite d'erreur incomprehensible, et rien d'autre, ni les "echo" normaux ni le contenu de ma BDD que j'ai demandé ...

Le code est en PHP et XHTML, avec une requette MySQL. Je travaille en Localhost donc ma BDD est sur mon ordi, gérée avec le PhpMyAdmin de WAMP.
Voici mon code :

Code : Tout sélectionner

<!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>Super Boulet - Acceuil</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> </head> <body> <div class="entete"> <img src="img/logo.png" alt="logo" href="index.php" class="logo" /><br /> <!-- debut menu --> <a href="2.php" ><img src="img/bouletterie.png" alt="bouletterie" /></a> <a href="3.php" ><img src="img/concept.png" alt="concept" /></a> <a href="4.php" ><img src="img/nouveauboulet.png" alt="nouveau_boulet" /></a> <a href="5.php" ><img src="img/infos.png" alt="infos" /></a> <a href="24.php"><img src="img/aleatoire.png" alt="aleatoire" /></a> <!-- fin menu --> </div> <div class="corps"> <img src="img/news.png" alt="news" /><br /><br /> <?php try { $pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION; $bdd = new PDO('mysql:host=localhost;dbname=sboulet', 'root', '', $pdo_options); /* BDD connecté */ /* $nb_msgs = $bdd->query('SELECT COUNT(*) AS nb_billets FROM messages'); */ /* $donnees = $bdd->query('SELECT * FROM messages ORDER BY date_creation DESC LIMIT 0, 30'); */ } catch (Exception $e) /* erreur BDD */ { die('Erreur : ' . $e->getMessage()); } ?> <p> test </p> <?php $donnees = $bdd->query('SELECT * FROM messages ORDER BY date_creation DESC LIMIT 0, 30'); /* convertion des donnees */ $id = $donnees['id']; $pseudo = $donnees['pseudo']; $note_nega = $donnes['note_nega']; $note_posi = $donnees['note_posi']; $message = $donnees['message']; $date_creation = $donnes['date_creation']; /* boucle affichage messages */ for ($nombre_msg = 1; $nombre_msg <=30; $nombre_msg++); { echo 'poste le'; echo $date_creation; echo 'par'; echo $peusdo; ?><br /><?php echo $message; echo 'mais, tu es un vrai boulet !'; echo $note_nega; ?><a href="7.php" > +1 </a><br /><?php echo 'oups, pas fait expres ...'; echo $note_posi; ?><a href="8.php" > +1 </a><br /> <a href="6.php?id=<?php echo $id; ?>" > Commentaires </a><br /><br /><br /> <?php } $donnees->closeCursor(); ?> <p> test </p> </body> </html>
Merci d'avance :D

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

09 mai 2011, 21:46

tu n’emploie pas correctement l'extension PDO => http://www.siteduzero.com/tutoriel-3-34 ... x-bdd.html

@+
Il en faut peu pour être heureux ......

Eléphanteau du PHP | 39 Messages

10 mai 2011, 21:35

Merci ! Mais j'ai essayé, modifié mon code, cherché l'erreur, et bug ... en ligne 53 sur le WHILE
voici mon nouveau code :

Code : Tout sélectionner

<!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>Super Boulet - Acceuil</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> </head> <body> <div class="entete"> <img src="img/logo.png" alt="logo" href="index.php" class="logo" /><br /> <!-- debut menu --> <a href="2.php" ><img src="img/bouletterie.png" alt="bouletterie" /></a> <a href="3.php" ><img src="img/concept.png" alt="concept" /></a> <a href="4.php" ><img src="img/nouveauboulet.png" alt="nouveau_boulet" /></a> <a href="5.php" ><img src="img/infos.png" alt="infos" /></a> <a href="24.php"><img src="img/aleatoire.png" alt="aleatoire" /></a> <!-- fin menu --> </div> <div class="corps"> <img src="img/news.png" alt="news" /><br /><br /> <?php $PARAM_hote='localhost'; // le chemin vers le serveur $PARAM_port='3306'; $PARAM_nom_bd='sboulet'; // le nom de votre base de données $PARAM_utilisateur='root'; // nom d'utilisateur pour se connecter $PARAM_mot_passe=''; // mot de passe de l'utilisateur pour se connecter try { $connexion = new PDO('mysql:host='.$PARAM_hote.';port='.$PARAM_port.';dbname='.$PARAM_nom_bd, $PARAM_utilisateur, $PARAM_mot_passe); /* BDD connectee */ } catch(Exception $e) { /* erreur connection */ echo 'Une erreur est survenue !'; echo 'Erreur : '.$e->getMessage().'<br />'; echo 'N° : '.$e->getCode(); die(); } /* Requette BDD */ $resultats=$connexion->query("SELECT * FROM messages ORDER BY date_creation "); // Requette MySQL $resultats->setFetchMode(PDO::FETCH_OBJ); // on dit qu'on veut que le résultat soit récupérable sous forme d'objet ?> ?> <p> test </p> <?php /* boucle affichage messages */ $nombre_msg = 1 while( $ligne = $resultats->fetch() ) { echo 'poste le'; echo '.$ligne->date_creation.'; echo 'par'; echo '.$ligne->pseudo.'; ?><br /><?php echo '.$ligne->message.'; echo 'mais, tu es un vrai boulet !'; echo '.$ligne->note_nega.'; ?><a href="7.php" > +1 </a><br /><?php echo 'oups, pas fait expres ...'; echo '.$ligne->note_posi'; ?><a href="8.php" > +1 </a><br /> <a href="6.php?id=<?php echo $id; ?>" > Commentaires </a><br /><br /><br /> <?php } $resultats->closeCursor(); ?> <p> test </p> </body> </html>

ViPHP
ViPHP | 2291 Messages

11 mai 2011, 08:11

Il manque un ; ici
$nombre_msg = 1
ImageCe que l'on apprend par l'effort reste toujours ancré beaucoup plus longtemps.

Eléphanteau du PHP | 39 Messages

11 mai 2011, 13:40

Ah oui #-o je vais essayer merci

Eléphanteau du PHP | 39 Messages

11 mai 2011, 13:51

ça fonctionne, sauf que au lieu de m'afficher le contenu des variables il me met .$ligne->pseudo. (par exemple) au lieu du pseudo demandé directement.
Ca me parraissait étrange dans le guide du Zer0 d'utiliser cette variable comme ça (je pensais prioché dans l'array $ligne[' '] ) ...

Code : Tout sélectionner

<!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>Super Boulet - Acceuil</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> </head> <body> <div class="entete"> <img src="img/logo.png" alt="logo" href="index.php" class="logo" /><br /> <!-- debut menu --> <a href="2.php" ><img src="img/bouletterie.png" alt="bouletterie" /></a> <a href="3.php" ><img src="img/concept.png" alt="concept" /></a> <a href="4.php" ><img src="img/nouveauboulet.png" alt="nouveau_boulet" /></a> <a href="5.php" ><img src="img/infos.png" alt="infos" /></a> <a href="24.php"><img src="img/aleatoire.png" alt="aleatoire" /></a> <!-- fin menu --> </div> <div class="corps"> <img src="img/news.png" alt="news" /><br /><br /> <?php $PARAM_hote='localhost'; // le chemin vers le serveur $PARAM_port='3306'; $PARAM_nom_bd='sboulet'; // le nom de votre base de données $PARAM_utilisateur='root'; // nom d'utilisateur pour se connecter $PARAM_mot_passe=''; // mot de passe de l'utilisateur pour se connecter try { $connexion = new PDO('mysql:host='.$PARAM_hote.';port='.$PARAM_port.';dbname='.$PARAM_nom_bd, $PARAM_utilisateur, $PARAM_mot_passe); /* BDD connectee */ } catch(Exception $e) { /* erreur connection */ echo 'Une erreur est survenue !'; echo 'Erreur : '.$e->getMessage().'<br />'; echo 'N° : '.$e->getCode(); die(); } /* Requette BDD */ $resultats=$connexion->query("SELECT * FROM messages ORDER BY date_creation "); // Requette MySQL $resultats->setFetchMode(PDO::FETCH_OBJ); // on dit qu'on veut que le résultat soit récupérable sous forme d'objet ?> ?> <p> test </p> <?php /* boucle affichage messages */ $nombre_msg = 1; while( $ligne = $resultats->fetch() ) { echo 'poste le'; echo '.$ligne->date_creation.'; echo 'par'; echo '.ligne->pseudo.'; ?><br /><?php echo '.ligne->message.'; echo 'mais, tu es un vrai boulet !'; echo 'ligne->note_nega.'; ?><a href="7.php" > +1 </a><br /><?php echo 'oups, pas fait expres ...'; echo '.$ligne->note_posi.'; ?><a href="8.php" > +1 </a><br /> <a href="6.php?id=<?php echo '.ligne->id.'; ?>" > Commentaires </a><br /><br /><br /> <?php } $resultats->closeCursor(); ?> <p> test </p> </body> </html>

ViPHP
ViPHP | 5462 Messages

11 mai 2011, 13:58

pas besoin de while c'est
foreach($resultats as $ligne) 
ou alors c'est
while( $ligne = $resultats->fetchObject() )
et dans ce cas le setFetchMode est inutile



le closeCurosr est inutile dans ton cas

ViPHP
ViPHP | 2577 Messages

11 mai 2011, 14:38

Bonjour,

echo '.ligne->pseudo.'; ca affiche .ligne->pseudo.
echo '.$ligne->pseudo.'; ca affiche .$ligne->pseudo.
echo ".$ligne->pseudo."; ca affiche la valeur avec les points devant et derrière
echo $ligne->pseudo ; ca affiche la valeur

Lorsque l'on met une chaine entre ', PHP transmet le texte tel quel. Par contre entre ", il remplace les variables avant.

Eléphanteau du PHP | 39 Messages

12 mai 2011, 19:05

Merci, ça marche ! Un petit coup de CSS et ça sera (presque) parfait ! Merci beaucoup :D