Bonjour à tous ,
Apres avoir lus les differents tutos présent sur le net (y compris celui présent sur ce site ), je pense avoir compris les jointures, et j'aimerais les appliqués sur mon forum.
Explications :
J'ai 2 tables :
Categories
id
titre
1
Projet
et
Forums
id
categorie
titre
description
nombreSujets
nombreReponses
dernier_message
auteur_dernier_mesage
1
1
Les news
Toutes les news sont ici !
1
3
Ouverture du forum
Hybrix
J'ais donc essayé les jointures , ce qui donne :
Forums
id
titre
id
categorie
titre
description
nombreSujets
nombreReponses
dernier_message
auteur_dernier_mesage
1
Projet
1
1
Les news
Toutes les news sont ici !
1
3
Ouverture du forum
Hybrix
Ce qui donne en php :
$retour = query("SELECT categories.id AS id_categories, categories.titre, forums.id AS id_forums, forums.categorie, forums.titre, forums.description FROM categories LEFT JOIN forums ON categories.id = forums.categorie");
Mais cela ne donne aucun résultat :
Le forum : ICI
J'aimerais donc affiché pour chaque categories le forum étant dedans.
Exemple : La catégorie projet contient le forum "Les news" car categorie est egal à l'id de la table catégories.
Avant j'avais fait des requetes dans des boucles, ce qui donnais :
//Recuperation des forums require("admin/identifiants.inc.php"); mysql_connect($host, $ftp_pseudo, $ftp_code); mysql_select_db("forums"); $retour_categories = query("SELECT * FROM categories ORDER BY id");
//Affichage des categories while($categories = mysql_fetch_assoc($retour_categories)) { $tpl -> set_var('numero_categorie', $categories['id']); $tpl -> set_var('titre_categorie', $categories['titre']); $retour_forums = query("SELECT * FROM forums WHERE categorie='".$categories['id']."' ORDER BY id"); /* Cette requete a enlever */
$req = 'c.id_categories,c.titre,f.id_forum,f.categorie,f.titre,f.description FROM categories c LEFT JOIN forums f ON c.id_categories = f.categorie ORDER BY c.id_categorie, f.id_forum'; $res = mysql_query($req);
Non , ça ne marche pas ,ça affiche l'erreur :
"Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in /mnt/112/sdc/d/d/sybrixmail/forum/forum.php on line 39".
Mon problème ,c'est qu'apres avoir réussi à récuperer les infos je ne sais comment faire pour les affiché en boucle.
Pour le moment j'ai cela :
//Recuperation des forums require("admin/identifiants.inc.php"); mysql_connect($host, $ftp_pseudo, $ftp_code); mysql_select_db("forums"); $retour_categories = query("SELECT categories.id_categories, categories.titre, forums.id_forums, forums.categorie, forums.titre, forums.description
FROM categories
LEFT JOIN forums
ON categories.id_categories = forums.categorie");
//Affichage des categories et forums while($categories = mysql_fetch_assoc($retour_categories)) { $tpl -> set_var('numero_categorie', $categories['categories.id_categories']); $tpl -> set_var('titre_categorie', $categories['categories.titre']);
Tu ne dois pas utiliser $categorie[nomtable.champs] pour utiliser les infos, tu dois utilise $categorie[champs]
De toute facon vu l'erreur ca vient de la requete
Pourant elle à l'air correcte :/
C'est quoi l'espace entre le select et le premier champs?
Rajoute un mysql_error(), il devrait te donner une erreur plus précise
Bin l'erreur est très claire, il ne trouve pas categories.titre
Ce qui veut dire que le champ titre n'existe pas dans la table categories ou s'appelle différement
J'ai modifié, une partie du problème est résolu , mais reglement n'est pas dans la partie projet , il est dans projet ,mais le code à crée une deuxième catégorie, alors qu'il devrais être avec Les news.
Ah, oui, logique, j'ai eu ce problème aussi
pour enlever ca, dans ta boucle tu dois faire une condition
//Si la variable categorie[categorieencour] existe, alors on a afficher la categorie, on ne l'affiche plus
//Sinon, on l'affiche
Ce code doit fonctionner
//Recuperation des forums require("admin/identifiants.inc.php"); mysql_connect($host, $ftp_pseudo, $ftp_code); mysql_select_db("forums"); $retour_categories = query("SELECT categories.id_categories, categories.titre, forums.id_forums, forums.categorie, forums.titre, forums.description
FROM categories
LEFT JOIN forums
ON categories.id_categories = forums.categorie");
Bin en fait, c'est normal.
Par contre ce qui n'est pas normal c'est que tu n'aies pas de notice d'undefined variable :/
L'id de ta catégorie c'est bien numero_categorie, non?
J'ai testé ton bout de code ,et toujours rien, les catégories étaient tous appellées "Projet"
[Aide] Forums et Jointures
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Web Developer
Web Developer
Web Developer