A voir également:
- Non affichage des tableaux PHP/SQL
- Easy php - Télécharger - Divers Web & Internet
- Tableaux croisés dynamiques - Guide
- Affichage double ecran - Guide
- Citez un des logiciels lui permettant de faire des calculs sur des tableaux de nombres (tableur). ✓ - Forum Logiciels
- Fusionner deux tableaux excel - Guide
13 réponses
JooS
Messages postés
2468
Date d'inscription
mardi 22 janvier 2008
Statut
Membre
Dernière intervention
8 juin 2016
228
24 août 2012 à 23:50
24 août 2012 à 23:50
Salut, tu peux montrer la requête !
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();
?>
JooS
Messages postés
2468
Date d'inscription
mardi 22 janvier 2008
Statut
Membre
Dernière intervention
8 juin 2016
228
Modifié par JooS le 25/08/2012 à 01:25
Modifié par JooS le 25/08/2012 à 01:25
A première vu !
SQL : T'as oublier le GROUP BY
PHP : Dans ton cas, c'est bindParam
quant au reste, il faut que t'explique le rôle de chaque table, et ce que tu veux avoir comme résultat !
SQL : T'as oublier le GROUP BY
PHP : Dans ton cas, c'est bindParam
quant au reste, il faut que t'explique le rôle de chaque table, et ce que tu veux avoir comme résultat !
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
25 août 2012 à 09:11
25 août 2012 à 09:11
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.
JooS
Messages postés
2468
Date d'inscription
mardi 22 janvier 2008
Statut
Membre
Dernière intervention
8 juin 2016
228
Modifié par JooS le 25/08/2012 à 18:31
Modifié par JooS le 25/08/2012 à 18:31
Pas compris, désolé !
Y a une jointure entre 5 tables dans ta requête !
Y a une jointure entre 5 tables dans ta requête !
nom de table(champ1, champ2, ...)Essaye de mieux expliquer !
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
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
28 août 2012 à 18:38
28 août 2012 à 18:38
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.
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
29 août 2012 à 20:21
29 août 2012 à 20:21
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.
JooS
Messages postés
2468
Date d'inscription
mardi 22 janvier 2008
Statut
Membre
Dernière intervention
8 juin 2016
228
4 sept. 2012 à 16:21
4 sept. 2012 à 16:21
Alors ta BD est vide !
JooS
Messages postés
2468
Date d'inscription
mardi 22 janvier 2008
Statut
Membre
Dernière intervention
8 juin 2016
228
Modifié par JooS le 5/09/2012 à 12:28
Modifié par JooS le 5/09/2012 à 12:28
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 !
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
5 sept. 2012 à 15:01
5 sept. 2012 à 15:01
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();
JooS
Messages postés
2468
Date d'inscription
mardi 22 janvier 2008
Statut
Membre
Dernière intervention
8 juin 2016
228
5 sept. 2012 à 15:46
5 sept. 2012 à 15:46
Jointure => GROUP BY
Variable => bindParam
Variable => bindParam
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'
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
5 sept. 2012 à 21:40
5 sept. 2012 à 21:40
et ben voilà:
Table 'test.forum_categorie' doesn't exist'
la table forum_categorie n'existe pas
Table 'test.forum_categorie' doesn't exist'
la table forum_categorie n'existe pas
JooS
Messages postés
2468
Date d'inscription
mardi 22 janvier 2008
Statut
Membre
Dernière intervention
8 juin 2016
228
Modifié par JooS le 5/09/2012 à 22:46
Modifié par JooS le 5/09/2012 à 22:46
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 -.- ...