Comment faire ...?
Posté : 29 janv. 2012, 12:09
Salutation à tous
Voici mon soucis (oui encore un, et c'est pas fini ^^)
J'ai besoin de compter le nombre d'entrées pour deux champs spécifique, dans une requête qui récupère les valeurs des tables pour les afficher.
Je vous explique: C'est pour mon forum, j'ai la requête qui permet d'afficher les catégories, les forums, les utilisateur et le nombre de messages située dedans.
Je vous met à la suite, le sql des tables (peut être sont elles mal agencer), et la requête sql.
Table t_cat
Comment compter le nombre de messages(post) et le nombre de sujets(topic)?
En espérant que vous avez compris mon problème.
Merci de votre aide
Cordialement
Voici mon soucis (oui encore un, et c'est pas fini ^^)
J'ai besoin de compter le nombre d'entrées pour deux champs spécifique, dans une requête qui récupère les valeurs des tables pour les afficher.
Je vous explique: C'est pour mon forum, j'ai la requête qui permet d'afficher les catégories, les forums, les utilisateur et le nombre de messages située dedans.
Je vous met à la suite, le sql des tables (peut être sont elles mal agencer), et la requête sql.
Table t_cat
CREATE TABLE IF NOT EXISTS `t_cat` (
`cat_id` int(11) NOT NULL AUTO_INCREMENT,
`cat_name` varchar(45) NOT NULL,
`cat_order` int(11) NOT NULL,
PRIMARY KEY (`cat_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;
Table t_forum
CREATE TABLE IF NOT EXISTS `t_forum` (
`forum_id` int(11) NOT NULL AUTO_INCREMENT,
`cat_id` int(11) NOT NULL,
`forum_name` varchar(45) NOT NULL,
`forum_description` varchar(45) CHARACTER SET latin1 COLLATE latin1_german2_ci NOT NULL,
`forum_order` int(11) NOT NULL,
`forum_nb_post` int(11) NOT NULL,
`forum_auth_view` tinyint(8) unsigned NOT NULL,
`forum_auth_post` tinyint(8) unsigned NOT NULL,
`forum_auth_topic` tinyint(8) unsigned NOT NULL,
`forum_auth_announce` tinyint(8) unsigned NOT NULL,
`forum_auth_moderation` tinyint(8) unsigned NOT NULL,
PRIMARY KEY (`forum_id`),
KEY `t_forum_FKIndex1` (`cat_id`),
KEY `fk_t_cat1` (`cat_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=14 ;
Table t_post
CREATE TABLE IF NOT EXISTS `t_post` (
`post_id` int(11) NOT NULL AUTO_INCREMENT,
`users_id` int(11) NOT NULL,
`topic_id` int(11) NOT NULL,
`post_content` text NOT NULL,
`post_date` datetime NOT NULL,
PRIMARY KEY (`post_id`),
KEY `t_post_FKIndex1` (`users_id`),
KEY `t_post_FKIndex3` (`topic_id`),
KEY `fk_t_topic` (`topic_id`),
KEY `fk_t_users1` (`users_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
Table t_topic
CREATE TABLE IF NOT EXISTS `t_topic` (
`topic_id` int(11) NOT NULL AUTO_INCREMENT,
`forum_id` int(11) NOT NULL,
`users_id` int(11) NOT NULL,
`topic_title` varchar(45) NOT NULL,
`topic_date` datetime NOT NULL,
`topic_nb_view` int(11) DEFAULT NULL,
`topic_type` varchar(45) NOT NULL,
`topic_statut` enum('0','1') NOT NULL,
PRIMARY KEY (`topic_id`),
KEY `t_topic_FKIndex1` (`users_id`),
KEY `t_topic_FKIndex2` (`forum_id`),
KEY `fk_t_forum1` (`forum_id`),
KEY `fk_t_users2` (`users_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
Table t_users
CREATE TABLE IF NOT EXISTS `t_users` (
`users_id` int(11) NOT NULL AUTO_INCREMENT,
`rank_id` int(10) NOT NULL DEFAULT '3',
`users_name` varchar(45) NOT NULL,
`users_pass` varchar(45) NOT NULL,
`users_mail` varchar(45) NOT NULL,
`users_web` varchar(45) NOT NULL,
`users_avatar` varchar(45) NOT NULL,
`users_signature` varchar(45) NOT NULL,
`users_inscription` int(11) NOT NULL,
`users_last_visit` int(11) NOT NULL,
`users_nb_post` int(11) NOT NULL,
`users_verif` enum('0','1') NOT NULL DEFAULT '0',
`users_code` text NOT NULL,
PRIMARY KEY (`users_id`),
KEY `fk_t_rank1` (`rank_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;
Voici la requête que j'ai, qui me permet de récupérer la(les) catégorie(s), le(s) forum, le(s) utilisateur(s), et normalement le nombre de message et le nombre de sujets$totaldesmessages = 0;
$totaldessujets = 0;
$categorie = NULL;
//on prepare la requete
$query=$cnx->prepare('SELECT t_cat.cat_id, t_cat.cat_name,
t_forum.forum_id, t_forum.forum_name, t_forum.forum_description,
t_post.users_id, t_post.post_id,
t_topic.topic_id,
t_users.users_id
FROM t_cat
LEFT JOIN t_forum ON t_cat.cat_id = t_forum.cat_id
LEFT JOIN t_topic ON t_forum.forum_id = t_topic.forum_id
LEFT JOIN t_post ON t_topic.topic_id = t_post.topic_id
LEFT JOIN t_users ON t_post.users_id = t_users.users_id
ORDER BY cat_order, forum_order ASC');
$query->execute();
J'ai besoin d'instancier $totaldesmessages et $totaldessujets a partir de cette requête, et là je ne sais pas encore faire.Comment compter le nombre de messages(post) et le nombre de sujets(topic)?
En espérant que vous avez compris mon problème.
Merci de votre aide
Cordialement