Non affichage des tableaux PHP/SQL
Tchek
-
Tchek -
Tchek -
Bonjour, je conçoit un site web et je suis sur le forum mais lors du test les tableaux sensé affiché les messages du forum ne s'affichent pas. j'ai fais des tests pour voir ou est le problème et y a un bout de code dans lequel rien ne s'exécute s'ait pas pourquoi. je vous poste ce code ci-dessous:
<table> <?php //Début de la boucle while($data = $query->fetch()) { //On affiche chaque catégorie if( $categorie != $data['cat_id'] ) { //Si c'est une nouvelle catégorie on l'affiche $categorie = $data['cat_id']; ?> <p>les tableaux veulent pas s'afficher!!!!</p> <tr> <th></th> <th class="titre"><strong><?php echo stripslashes(htmlspecialchars($data['cat_nom'])); ?> </strong></th> <th class="nombremessages"><strong>Sujets</strong></th> <th class="nombresujets"><strong>Messages</strong></th> <th class="derniermessage"><strong>Dernier message</strong></th> </tr> <?php } //Ici, on met le contenu de chaque catégorie ?> <?php // Ce super echo de la mort affiche tous // les forums en détail : description, nombre de réponses etc... echo'<tr><td><img src="./images/message.gif" alt="message" /></td> <td class="titre"><strong> <a href="./voirforum.php?f='.$data['forum_id'].'"> '.stripslashes(htmlspecialchars($data['forum_name'])).'</a></strong> <br />'.nl2br(stripslashes(htmlspecialchars($data['forum_desc']))).'</td> <td class="nombresujets">'.$data['forum_topic'].'</td> <td class="nombremessages">'.$data['forum_post'].'</td>'; // Deux cas possibles : // Soit il y a un nouveau message, soit le forum est vide if (!empty($data['forum_post'])) { //Selection dernier message $nombreDeMessagesParPage = 15; $nbr_post = $data['topic_post'] +1; $page = ceil($nbr_post / $nombreDeMessagesParPage); echo'<td class="derniermessage"> '.date('H\hi \l\e d/M/Y',$data['post_time']).'<br /> <a href="./voirprofil.php?m='.stripslashes(htmlspecialchars($data['membre_id'])).'&action=consulter">'.$data['membre_pseudo'].' </a> <a href="./voirtopic.php?t='.$data['topic_id'].'&page='.$page.'#p_'.$data['post_id'].'"> <img src="./images/go.gif" alt="go" /></a></td></tr>'; } else { echo'<td class="nombremessages">Pas de message</td></tr>'; } //Cette variable stock le nombre de messages, on la met à jour $totaldesmessages += $data['forum_post']; //On ferme notre boucle et nos balises }//fin de la boucle $query->CloseCursor(); echo '</table></div>'; ?>
A voir également:
- Non affichage des tableaux PHP/SQL
- Affichage double ecran - Guide
- Easy php - Télécharger - Divers Web & Internet
- Windows 11 affichage classique - Guide
- Tableaux croisés dynamiques - Guide
- Fusionner deux tableaux excel - Guide
13 réponses
Voici la requête:
<code>
<?php
$query=$db->prepare('SELECT cat_id, cat_nom,
forum_forum.forum_id, forum_name, forum_desc, forum_post,
forum_topic, auth_view, forum_topic.topic_id,
forum_topic.topic_post, post_id, post_time, post_createur,
membre_pseudo,
membre_id
FROM forum_categorie
LEFT JOIN forum_forum ON forum_categorie.cat_id =
forum_forum.forum_cat_id
LEFT JOIN forum_post ON forum_post.post_id =
forum_forum.forum_last_post_idLEFT JOIN forum_topic ON forum_topic.topic_id = forum_post.topic_id
LEFT JOIN forum_membres ON forum_membres.membre_id =
forum_post.post_createur
WHERE auth_view <= :lvl
ORDER BY cat_ordre, forum_ordre DESC' );
$query->bindValue(':lvl',$lvl,PDO::PARAM_INT);
$query->execute();
?>
<code>
<?php
$query=$db->prepare('SELECT cat_id, cat_nom,
forum_forum.forum_id, forum_name, forum_desc, forum_post,
forum_topic, auth_view, forum_topic.topic_id,
forum_topic.topic_post, post_id, post_time, post_createur,
membre_pseudo,
membre_id
FROM forum_categorie
LEFT JOIN forum_forum ON forum_categorie.cat_id =
forum_forum.forum_cat_id
LEFT JOIN forum_post ON forum_post.post_id =
forum_forum.forum_last_post_idLEFT JOIN forum_topic ON forum_topic.topic_id = forum_post.topic_id
LEFT JOIN forum_membres ON forum_membres.membre_id =
forum_post.post_createur
WHERE auth_view <= :lvl
ORDER BY cat_ordre, forum_ordre DESC' );
$query->bindValue(':lvl',$lvl,PDO::PARAM_INT);
$query->execute();
?>
je ne comprend pas trop comment tu fais le test si c'est une nouvelle catégorie ?
avant ta boucle while a quelle valeur as tu initialisé la variable $categorie ??
//On affiche chaque catégorie
if( $categorie != $data['cat_id'] )
{
//Si c'est une nouvelle catégorie on l'affiche
$categorie = $data['cat_id'];
avant ta boucle while a quelle valeur as tu initialisé la variable $categorie ??
//On affiche chaque catégorie
if( $categorie != $data['cat_id'] )
{
//Si c'est une nouvelle catégorie on l'affiche
$categorie = $data['cat_id'];
catégorie est initialisé à NULL
il y a une table qui contiendra les catégories de forum l'autre sur les messages de chaque catégories, un pour les membres, l'autre pour les messages et les informations de chaque message, utilisée pour écrire le nom de chaque forum et leur description. etc. J'utilise le tutoriel tiré du site du zér0.
il y a une table qui contiendra les catégories de forum l'autre sur les messages de chaque catégories, un pour les membres, l'autre pour les messages et les informations de chaque message, utilisée pour écrire le nom de chaque forum et leur description. etc. J'utilise le tutoriel tiré du site du zér0.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour moi j'ai le même problème mais j'ai l'impression que la condition du
Merci d'avance
while($data = $query->fetch())n'est pas vérifier car lorsque je regarde le code source dans le navigateur au niveau des balises <table> il n'y a rien de marquer. Quelqu'un aurait-il une idée?
Merci d'avance
peut être que ta requette n'a retourné aucun résultat, pour voir le nombre:
//mets cette ligne juste avant ta boucle while pour avoir le nombre de résultats trouvés: echo $query->rowCount() . ' résultat(s)'; while($data = $query->fetch())
Bonsoir effectivement la requête ne retourne aucun résultat; j'ai 0 résultat. Je crois qu'il faudrait que je revoie ma base de données ou bien? Merci Alain_42 pour cette nouvelle astuce.
je pense que tu devrait revoir ta requette, eventuellement faire afficher les erreur au moment de l'execution de celle çi
try catch
vas voir sur Google comment daire avec mysql PDO
try catch
vas voir sur Google comment daire avec mysql PDO
Bonjour jusqu'à présent j'ai pas trouver de solution à mon problème rien ne s'affiche sous la boucle while j'ai inséré un try catch dans le requête de connexion à la BD et il me retourne aucune erreur de connexion à la BD. Je pense que l'erreur est dans la requête mais j'arrive pas à la trouvé. c'est un projet que je doit rendre en fin septembre et la ch8 pas très avancé. Aider moi
s'l vous plaît.
Execute ça dans phpMyAdmin, :
En remplaçant biensure ":l v l" par une valeur qui existe dans ta BD !
Si ça donne un résultat, c'est que t'a mal exécuter ta requête coté PHP !
Si ça ne retourne aucun résultat, alors la condition "auth_view <= :lvl" est fausse, pour en être sure, enlève la condition, et re-exécute la requête !
SELECT cat_id, cat_nom, forum_forum.forum_id, forum_name, forum_desc, forum_post, forum_topic, auth_view, forum_topic.topic_id, forum_topic.topic_post, post_id, post_time, post_createur, membre_pseudo, membre_id FROM forum_categorie LEFT JOIN forum_forum ON forum_categorie.cat_id = forum_forum.forum_cat_id LEFT JOIN forum_post ON forum_post.post_id = forum_forum.forum_last_post_id LEFT JOIN forum_topic ON forum_topic.topic_id = forum_post.topic_id LEFT JOIN forum_membres ON forum_membres.membre_id = forum_post.post_createur WHERE auth_view <= :lvl GROUP BY cat_id, cat_nom, forum_forum.forum_id, forum_name, forum_desc, forum_post, forum_topic, auth_view, forum_topic.topic_id, forum_topic.topic_post, post_id, post_time, post_createur, membre_pseudo, membre_id ORDER BY cat_ordre, forum_ordre DESC
En remplaçant biensure ":l v l" par une valeur qui existe dans ta BD !
Si ça donne un résultat, c'est que t'a mal exécuter ta requête coté PHP !
Si ça ne retourne aucun résultat, alors la condition "auth_view <= :lvl" est fausse, pour en être sure, enlève la condition, et re-exécute la requête !
pour voir éventuellement les erreurs rajoutes les lignes de part et d'autre de la query:
////rajoutes cette ligne $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); ///// $query=$db->prepare('SELECT cat_id, cat_nom, forum_forum.forum_id, forum_name, forum_desc, forum_post, forum_topic, auth_view, forum_topic.topic_id, forum_topic.topic_post, post_id, post_time, post_createur, membre_pseudo, membre_id FROM forum_categorie LEFT JOIN forum_forum ON forum_categorie.cat_id = forum_forum.forum_cat_id LEFT JOIN forum_post ON forum_post.post_id = forum_forum.forum_last_post_idLEFT JOIN forum_topic ON forum_topic.topic_id = forum_post.topic_id LEFT JOIN forum_membres ON forum_membres.membre_id = forum_post.post_createur WHERE auth_view <= :lvl ORDER BY cat_ordre, forum_ordre DESC' ); $query->bindValue(':lvl',$lvl,PDO::PARAM_INT); //rajoutes ça pour voir les erreurs de ta requette if (!$query) { echo "<br />PDO::errorInfo():<br />"; print_r($db->errorInfo()); } /// $query->execute();
Merci pour vos réponses.
@JooS la requête s'exécute bien dans phpMyAdmin avec la condition et même sans la condition tous se passe bien.
@Alain_42 voici les messages d'erreurs que je retrouve:
@JooS la requête s'exécute bien dans phpMyAdmin avec la condition et même sans la condition tous se passe bien.
@Alain_42 voici les messages d'erreurs que je retrouve:
Uncaught exception 'PDOException' with message 'SQLSTATE[42S02]: Base table or view not found: 1146 Table 'test.forum_categorie' doesn't exist'
Uncaught exception 'PDOException' with message 'SQLSTATE[42S02]: Base table or view not found: 1146 Table 'test.forum_categorie' doesn't exist'
Re ...
Si ça s'est bien exécuté sous phpMyAdmin alors ça devrais aussi via PDO !
PS : La variable $lvl doit contenir une valeur qui peut donner un résultat, essaye avec la même valeur que t'avais utiliser sous phpMyAdmin !
Quant a la connexion vers la BD, utilise ce code pour gérer les erreurs, au lieu d'utiliser errorInfo partout ou tu va !
Mettez en résolu quand c'est résolu -.- ...
Si ça s'est bien exécuté sous phpMyAdmin alors ça devrais aussi via PDO !
$req = $db->prepare('SELECT cat_id, cat_nom, ff.forum_id, forum_name, forum_desc, forum_post, forum_topic, auth_view, ft.topic_id, ft.topic_post, post_id, post_time, post_createur, membre_pseudo, membre_id FROM forum_categorie fc LEFT JOIN forum_forum ff ON fc.cat_id = ff.forum_cat_id LEFT JOIN forum_post fp ON fp.post_id = ff.forum_last_post_id LEFT JOIN forum_topic ft ON ft.topic_id = fp.topic_id LEFT JOIN forum_membres fm ON fm.membre_id = fp.post_createur WHERE auth_view <= :lvl GROUP BY cat_id, cat_nom, ff.forum_id, forum_name, forum_desc, forum_post, forum_topic, auth_view, ft.topic_id, ft.topic_post, post_id, post_time, post_createur, membre_pseudo, membre_id ORDER BY cat_ordre, forum_ordre DESC'); $req->bindParam(':lvl', $lvl, PDO::PARAM_INT); $req->execute(); while($data = $req->fetch()) { var_dump($data); }
PS : La variable $lvl doit contenir une valeur qui peut donner un résultat, essaye avec la même valeur que t'avais utiliser sous phpMyAdmin !
Quant a la connexion vers la BD, utilise ce code pour gérer les erreurs, au lieu d'utiliser errorInfo partout ou tu va !
try { $pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION; $db = new PDO('mysql:host=localhost;dbname=base_de_donnees', 'root', '', $pdo_options); } catch (Exception $e) { die('Erreur : ' . $e->getMessage()); }
Mettez en résolu quand c'est résolu -.- ...