Requetes Mysql

Résolu
maxredphenix Messages postés 58 Date d'inscription vendredi 8 septembre 2006 Statut Membre Dernière intervention 9 novembre 2012 - 8 juil. 2012 à 22:48
maxredphenix Messages postés 58 Date d'inscription vendredi 8 septembre 2006 Statut Membre Dernière intervention 9 novembre 2012 - 26 juil. 2012 à 20:03
Bonjour,

J'essaie depuis quelques temps de trouver le moyen de créer un tableau divisé catégories/sous catégories de ce genre la:
___________________________________________________________
Type..................nbre ds le mois.......nbre dans l'année
___________________________________________________________
type1.................16.......................60
...element1...........5........................xx
...element2...........5........................xx
...element3...........6........................xx
type2.................30.......................55
...element4...........10.......................xx
...element5...........10.......................xx
...element6...........10.......................xx

J'ai essayé de faire une requête dans ce genre là pour le mois en cours mais ça ne fonctionne pas:
TYPE DE MATERIEL |
<?php echo $moislettre ?> |
CUMUL <?php echo $annee ?> |

<?php
require_once('../php/connexionbdd.php'); // Connexion à mysql via le fichier connexion.php
//Requete permettant l'affichage du tableau d'occupation via la table correctif
$reqmateriel=mysql_query(\"SELECT id,c.ensemble,COUNT(c.element) AS NBRE_ELEMENT,c.element,w.debut_inter FROM correctif AS c LEFT JOIN work_times AS w ON c.id = w.intervention_id WHERE MONTH(w.debut_inter)=$mois AND YEAR(w.debut_inter)=$annee GROUP BY c.ensemble,c.element ORDER BY c.ensemble,c.element\");
while ($datas = mysql_fetch_assoc($reqmateriel)) {
?>
----

<?php echo $datas['element'];?>,
<?php echo $row['NBRE_ELEMENT'];?>,
<?php ?>,
<?php } ?>


Les variables $mois et $annee sont défini plus haut et sont ok car elles sont utilisées par d'autres requêtes.

J'espère que quelqu'un pourra m'aider parce que je trouve pas et en plus je trouve personnes qui aurait eu le même problème

Merci d'avance

maxredphenix

41 réponses

cs_ghuysmans99 Messages postés 3982 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 16
18 juil. 2012 à 21:31
En reprenant le code donné dans ton post "super ça j'ai plus d'erreur maintenant",
c'est simple à adapter : au lieu de faire un echo de l'ensemble directement, mettre ça
(ce qui est entre le premier while et le $ensemble= ) dans une chaine en prenant
soin d'ajouter une colonne contenant par exemple {nbreAnnée} que tu remplaceras ensuite
par la valeur de la variable qui contiendra la somme (calculée dans le second while ).

Fais très attention aux injections SQL, je vois que tu inclus directement
certaines variables dans le SQL sans même vérifier leur contenu. Si ce sont des entiers, si tu ne veux
pas te compliquer la vie, caste-les en int (au lieu de $n, (int)$n ). Pour les chaines de
caractères, crée une fonction Pure comme ceci :
function Pure($s) {return get_magic_quotes_gpc() ? $s : mysql_real_escape_string($s);}

Tes SQL seront donc sous cette forme :
"SELECT * FROM matable WHERE champStr ='" . Pure($champStr) . "' AND champInt= " . (int)$champInt


Ta $reqElement peut être simplifiée (vu que tu ne lis pas tout) :
"SELECT COUNT(c.element) AS NBRE_ELEMENT_MOIS FROM correctif AS c LEFT JOIN demande AS d ON c.id_appel = d.id
WHERE MONTH(d.date_appel)=".(int)$mois." AND YEAR(d.date_appel)=".(int)$annee." AND ENSEMBLE = '".Pure($ensemble)."'
GROUP BY ELEMENT ORDER BY ENSEMBLE"


Les deux requêtes peuvent être lancées à chaque itération de cette manière :
while ($req3 = mysql_fetch_assoc($reqElementAnnee))
{
if (!($req4 = mysql_fetch_assoc($reqElement))) die("argh");
//[...]
}


VB.NET is good ... VB6 is better
Utilise Réponse acceptée quand un post répond à ta question
3
cs_ghuysmans99 Messages postés 3982 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 16
9 juil. 2012 à 18:42
As-tu essayé d'afficher le SQL et de le lancer dans phpMyAdmin (ou MySQL Query Browser) ?

VB.NET is good ... VB6 is better
Utilise Réponse acceptée quand un post répond à ta question
0
maxredphenix Messages postés 58 Date d'inscription vendredi 8 septembre 2006 Statut Membre Dernière intervention 9 novembre 2012
9 juil. 2012 à 21:24
Bonsoir,

Merci pour ta réponse,

Oui j'ai tenté dans phpmyadmin et il me dit qu'il y a aucun résultat alors il y a bien des données dans les tables. Je viens donc de changer ma requête par un autre champ date qui en plus m'evite de faire un autre left join:

SELECT c.id, c.id_appel, d.date_appel, d.batiment, SUM( c.ensemble ) AS NBRE_ENSEMBLE, c.ensemble FROM correctif AS c LEFT JOIN demande AS d ON c.id_appel = d.id WHERE MONTH(d.date_appel)=$mois AND YEAR( d.date_appel )=$annee GROUP BY d.batiment ORDER BY d.batiment


Mais ce n'est pas encore ça, dans phpmyadmin, c'est ok il me donne bien un résultat mais pour le tableau c'est pas terrible.
Voila le résultat de la requete dans phpmyadmin:
id____id_appel____date_appel____batiment____NBRE_ENSEMBLE____ensemble
1______1_________2012-06-08______Bt 035 _______0____________Telephone Principal
2______3_________2012-06-22______Bt 148 _______0____________Telecopie
3______4_________2012-06-20______Bt 160 _______0____________Telecopie

Et voila ce que j'obtiens dans ma page web:
http://dl.dropbox.com/u/31901874/Copie%20site%20pour%20forum/erreur%20tableau.jpg


Merci pour ton aide
maxredphenix
0
maxredphenix Messages postés 58 Date d'inscription vendredi 8 septembre 2006 Statut Membre Dernière intervention 9 novembre 2012
9 juil. 2012 à 21:28
oups j'ai fait mes corrections sur un autre tableau avec lequel j'ai aussi des soucis. Je refais tout cela et je t'envoie ça de suite.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
maxredphenix Messages postés 58 Date d'inscription vendredi 8 septembre 2006 Statut Membre Dernière intervention 9 novembre 2012
9 juil. 2012 à 21:56
Donc voila le résultat de mon tableau phpmyadmin:

id___ensemble________NBRE_ELEMENT____element_________date_appel
3____Telecopie_____________1_________7007____________2012-06-20
2____Telecopie_____________1_________7083____________2012-06-22
1____Telephone Principal___1______TEMPORIS 700_______2012-06-08

Voila ma nouvelle requete:
SELECT c.id, c.ensemble, COUNT( c.element ) AS NBRE_ELEMENT, c.element, d.date_appel
FROM correctif AS c
LEFT JOIN demande AS d ON c.id_appel = d.id
WHERE MONTH( d.date_appel ) =  $mois
AND YEAR( d.date_appel ) =  $annee
GROUP BY c.ensemble, c.element
ORDER BY c.ensemble, c.element


Voila ce que ça donne maintenant:
http://dl.dropbox.com/u/31901874/Copie%20site%20pour%20forum/erreur%20tableau2.jpg

Mais j'arrive pas a faire comme j'ai demandé dans mon 1er post. Ce qui donnerai dans le cas présent:

Type..................nbre ds le mois.......nbre dans l'année
___________________________________________________________
Télécopie.................2.......................2
...7007...................1.......................1
...7083...................1.......................1
Téléphone principale......1.......................1
...Temporis 700...........1.......................1

Si tu peux répondre je suis plus que preneur.

Merci et bonne soirée

maxredphenix
0
cs_ghuysmans99 Messages postés 3982 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 16
9 juil. 2012 à 22:23
Solution 1 : rapide mais pas simple
Dans la boucle qui parcourt les résultats, tu dois remplir un tableau contenant les lignes du résultat (vu que tu ne peux pas ici prédire les "nmbre ds le mois/l'année" pour tes groupes) et ensuite l'afficher tout simplement.

Solution 2 : un peu plus lente mais facile à implémenter
Au lieu de tout faire en un SQL, tu utilises deux boucles imbriquées : une qui énumère les groupes et qui calcule les compteurs pour ceux-ci, et une autre qui donne les éléments pour chaque groupe (aussi avec les compteurs). Pas très élégant mais fonctionnel...

VB.NET is good ... VB6 is better
Utilise Réponse acceptée quand un post répond à ta question
0
maxredphenix Messages postés 58 Date d'inscription vendredi 8 septembre 2006 Statut Membre Dernière intervention 9 novembre 2012
9 juil. 2012 à 22:37
Merci pour ta solution, je vais tenter de faire la 2eme (jsuis débutant donc c'est pas gagner ). Par contre comment tu fais du coup pour afficher les données dans le tableau en respectant l'architecture ensemble/elements, j'ai un peu de mal a voir comment ça se fait avec ce type de boucle, désolé.

Merci d'avance
0
maxredphenix Messages postés 58 Date d'inscription vendredi 8 septembre 2006 Statut Membre Dernière intervention 9 novembre 2012
10 juil. 2012 à 07:22
Bonjour,

Vu que tu as l'air de pas mal connaitre sql est-ce tu pourrais répondre à cette question:

J'ai 2 tables: la 1ere "demande" et la 2eme "correctif", la première me sert à enregistrer des infos sur un client et la deuxième sur comment on l'a dépanné, pour faire la relation entre les 2 j'ai fait un LEFT JOIN entre l'id de la table demande et id_appel de la table correctif(qui s'enregistre automatiquement dans la table correctif et qui est identique à l'id de demande, il me sert à faire une jointure mais la table correctif à son propre id).

Donc pour faire un affichage des infos contenu dans les 2 tables je fais ceci:
$req=mysql_query("SELECT * FROM correctif AS c LEFT JOIN demande AS d ON c.id_appel = d.id ORDER BY c.id");
while ($datas = mysql_fetch_assoc($req)) {

}


Pourquoi un echo $datas['id']; me donne la valeur de id_appel? alors que moi je souhaite récupérer l'id de la table correctif et en plus celui de id_appel mais avec $datas['id_appel']; . Est-ce que cela vient de ma requête?

J'espère que tu seras me répondre parce que je trouve rien dans tous les tutos que j'ai lu.


Merci d'avance

maxredphenix
0
Lyle56 Messages postés 240 Date d'inscription jeudi 1 mai 2008 Statut Membre Dernière intervention 19 juillet 2012 2
10 juil. 2012 à 12:14
Bonjour,

Réponse rapide :
A mon avis, il y as une petite perte d'information du fait que les deux tables est un nom de champs identique (id justement).

tu peut faire soit :

$req=mysql_query("SELECT c.id as idCorrectif, * FROM correctif AS c LEFT JOIN demande AS d ON c.id_appel = d.id ORDER BY c.id");

et un echo $datas['idCorrectif'];

soit :
en base tu change les noms des index pour avoir id_correctif et id_demande
Ta jointure se fait alors sur c.id_appel = d.id_demande
et ton echo deviens donc $datas['id_correctif'];


Sans maitrise, la puissance n'est rien
Il ne faut pas vendre la peau de l'ours, non il ne faut pas.
0
maxredphenix Messages postés 58 Date d'inscription vendredi 8 septembre 2006 Statut Membre Dernière intervention 9 novembre 2012
10 juil. 2012 à 21:08
Bonsoir,

J'ai tenter la première solution mais cela ne fonctionne pas il me donne une erreur suite à *, je pense que sql ne veut pas faire une sélection d'un champ + tout en plus. Du coup j'ai changer le nom de l'id de mes tables, c'était tellement bête que j'y pensais même pas....snif. Depuis c'est niquel cela fonctionne super bien. Idem pour les requêtes, c'est bête je connaissais la partie sql de phpmyadmin mais je m'en servais jamais, depuis que tu me l'as dit je fais que ça (en plus ça me donne les erreurs donc c'est génial).

Par contre j'ai cherché pour les boucles et je trouve pas comment faire un affichage des données dans mon tableau, j'ai tenter ceci mais sans succes:
<?php
require_once('connexionbdd.php'); // Connexion à mysql via le fichier connexion.php
$reqEnsemble=mysql_query("SELECT c.ensemble, d.date_appel FROM correctif AS c LEFT JOIN demande AS d ON c.id_appel = d.id WHERE MONTH( d.date_appel )=$mois AND YEAR( d.date_appel )=$annee GROUP BY c.ensemble ORDER BY c.ensemble");
while ($req1 = mysql_fetch_assoc($reqEnsemble)) { 
echo '<tr>';
echo '<td align="center">'.htmlentities($req1['c.ensemble']).'</td>';
$reqElement=mysql_query("SELECT c.id, c.ensemble, COUNT( c.element ) AS NBRE_ELEMENT, c.element, d.date_appel FROM correctif AS c LEFT JOIN demande AS d ON c.id_appel = d.id WHERE MONTH( d.date_appel )=$mois AND YEAR( d.date_appel )=$annee  AND c.ensemble = $req1['ensemble'] GROUP BY c.element ORDER BY c.element");
while ($req2 = mysql_fetch_assoc($reqElement)) { 
echo '
';
echo htmlentities($req2['c.element']);
echo '<td align="center">'.htmlentities($req1['NBRE_ELEMENT']).'</td>';
echo '</tr>';
}
}
?>


Merci pour ton aide
0
cs_ghuysmans99 Messages postés 3982 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 16
12 juil. 2012 à 00:16
Déjà une petite erreur:
$reqElement=mysql_query("SELECT c.id, c.ensemble, COUNT( c.element ) AS NBRE_ELEMENT, c.element, d.date_appel FROM correctif AS c LEFT JOIN demande AS d ON c.id_appel = d.id WHERE MONTH( d.date_appel )=$mois AND YEAR( d.date_appel )=$annee  AND c.ensemble = {$req1['ensemble']} GROUP BY c.element ORDER BY c.element");


VB.NET is good ... VB6 is better
Utilise Réponse acceptée quand un post répond à ta question
0
maxredphenix Messages postés 58 Date d'inscription vendredi 8 septembre 2006 Statut Membre Dernière intervention 9 novembre 2012
12 juil. 2012 à 18:59
Bonsoir,

Je viens de tenter ce que tu m'a corrigé, mais maintenant j'ai une erreur de type mysql_fetch_assoc() mais j'ai l'impression que ma requête est correct donc je comprends pas. Voila le screenshot de la page
http://dl.dropbox.com/u/31901874/Copie%20site%20pour%20forum/erreur%20tableau%20element.jpg

Le code actuel (j'en ai profité pour faire des alias afin d’éviter les erreurs de visualisation et corrigé une erreur, j'avais une requete avec c.id alors que j'ai changé l'id en idCorrectif suite à tes précédents conseils):
<col style= \"width:60%\">
<col style=\"width:20%\">
<col style=\"width:20%\">
----

 TYPE DE MATERIEL  |
<?php echo $moislettre ?> |
CUMUL <?php echo $annee ?> |

<?php
require_once('connexionbdd.php'); // Connexion à mysql via le fichier connexion.php
$reqEnsemble =mysql_query(\"SELECT c.ensemble AS ENSEMBLE, d.date_appel FROM correctif AS c LEFT JOIN demande AS d ON c.id_appel = d.id WHERE MONTH(d.date_appel)=$mois AND YEAR(d.date_appel)=$annee GROUP BY ENSEMBLE ORDER BY ENSEMBLE\") or die(mysql_error());
while ($req1 = mysql_fetch_assoc($reqEnsemble)) {
echo '----
';
echo ''.htmlentities($req1['ENSEMBLE']).', ';
$reqElement=mysql_query(\"SELECT c.idCorrectif, c.ensemble AS ENSEMBLE, COUNT(c.element) AS NBRE_ELEMENT, c.element AS ELEMENT, d.date_appel FROM correctif AS c LEFT JOIN demande AS d ON c.id_appel = d.id WHERE MONTH( d.date_appel )=$mois AND YEAR( d.date_appel )=$annee AND ENSEMBLE = {$req1['ENSEMBLE']} GROUP BY ELEMENT ORDER BY ENSEMBLE\");
while ($req2 = mysql_fetch_assoc($reqElement) or die(mysql_error())) {
echo '
';
echo htmlentities($req2['ELEMENT']);
echo ''.htmlentities($req1['NBRE_ELEMENT']).', ';
echo '';
}
}
?>



Voila ce que donne la première requête ($reqEnsemble)dans phpmyadmin:
_____________________________________________
ENSEMBLE------------------------date_appel
_____________________________________________
Telecopie----------------------2012-06-22
Telephone Principal------------2012-06-08
_____________________________________________

2eme requête ($reqElement)sans l'appel à req1, Ça donne ceci:
______________________________________________________________________________
idCorrectif-----ENSEMBLE---------NBRE_ELEMENT--------ELEMENT--------date_appel
3-------------Telecopie--------------1----------------7007-----------2012-06-20
2-------------Telecopie--------------1---------------7083------------2012-06-22
1-------------Telephone Principal----1-------------TEMPORIS 700------2012-06-08
_______________________________________________________________________________

Merci de ton aide et passe une bonne soirée

maxredphenix
0
cs_ghuysmans99 Messages postés 3982 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 16
14 juil. 2012 à 12:19
Tu as fait attention au message en-dessous "Unknown column Telecopie in WHERE clause" ?

VB.NET is good ... VB6 is better
Utilise Réponse acceptée quand un post répond à ta question
0
maxredphenix Messages postés 58 Date d'inscription vendredi 8 septembre 2006 Statut Membre Dernière intervention 9 novembre 2012
15 juil. 2012 à 11:50
Bonjour,

Oui c'est justement pour cela que je t'ai donné toutes les infos parce que je comprends pas pourquoi j'ai cette erreur alors que la 1ere requête ainsi que la 2eme trouvent bien les ensembles donc logiquement la liaison devrait ce faire, mais ce n'est pas le cas.

J'ai refais d'autres tests mais j'ai toujours cette erreur, de plus je vois pas pourquoi il me marque Unknown column pour telecopie alors que c'est un champ et non une colonne, la colonne devrait être "ensemble".

Qu'est ce que tu en penses?

Merci
0
cs_ghuysmans99 Messages postés 3982 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 16
15 juil. 2012 à 14:31
Un simple oubli de guillemets dans la seconde requête :
$ensemble = mysql_real_escape_string($req1['ENSEMBLE']);
$reqElement=mysql_query("[...]ENSEMBLE = '$ensemble' GROUP BY ELEMENT ORDER BY ENSEMBLE");


Tu aurais dû afficher la requête

VB.NET is good ... VB6 is better
Utilise Réponse acceptée quand un post répond à ta question
0
maxredphenix Messages postés 58 Date d'inscription vendredi 8 septembre 2006 Statut Membre Dernière intervention 9 novembre 2012
15 juil. 2012 à 17:09
super ça j'ai plus d'erreur maintenant. Désolé pour la requête

Par contre c'est bizarre il s’arrête au premier ensemble trouvé, vu que j'ai rajouté de nouvelle ligne dans ma table j'ai maintenant l'ensemble interphone qui s'affiche et donc le seul élément qui lui est rattaché pour le moment soit: 7044 mais j'ai en tout 3 ensembles dans la table! c'est comme si le 2eme while arrêtait la boucle du 1er.

voila le screenshot de ce que ça donne et la requête exécuté dans phpmyadmin:
http://dl.dropbox.com/u/31901874/Copie%20site%20pour%20forum/tableau%20mat%C3%A9riel.jpg

Le nouveau code:
<col style= \"width:60%\">
<col style=\"width:20%\">
<col style=\"width:20%\">
----

 TYPE DE MATERIEL  |
<?php echo $moislettre ?> |
CUMUL <?php echo $annee ?> |

<?php
require_once('connexionbdd.php'); // Connexion à mysql via le fichier connexion.php
$reqEnsemble =mysql_query(\"SELECT c.ensemble AS ENSEMBLE, d.date_appel, COUNT(c.element) AS NBRE_ELEMENT
FROM correctif AS c LEFT JOIN demande AS d ON c.id_appel = d.id
WHERE MONTH(d.date_appel)=$mois AND YEAR(d.date_appel)=$annee
GROUP BY ENSEMBLE ORDER BY ENSEMBLE\") or die(mysql_error());
while ($req1 = mysql_fetch_assoc($reqEnsemble)) {
echo '----
';
echo ''.htmlentities($req1['ENSEMBLE']).', ';
echo ''.htmlentities($req1['NBRE_ELEMENT']).', ';
echo '';
$ensemble = mysql_real_escape_string($req1['ENSEMBLE']);
$reqElement=mysql_query(\"SELECT c.idCorrectif, c.ensemble AS ENSEMBLE, COUNT(c.element) AS NBRE_ELEMENT, c.element AS ELEMENT, d.date_appel
FROM correctif AS c LEFT JOIN demande AS d ON c.id_appel = d.id
WHERE MONTH( d.date_appel )=$mois AND YEAR( d.date_appel )=$annee AND ENSEMBLE = '$ensemble'
GROUP BY ELEMENT ORDER BY ENSEMBLE\");
while ($req2 = mysql_fetch_assoc($reqElement) or die(mysql_error())) {
echo '----
';
echo ''.htmlentities($req2['ELEMENT']).', ';
echo ''.htmlentities($req2['NBRE_ELEMENT']).', ';
echo '';
}
}
?>


En tout cas je suis content, maintenant j'ai plus d'erreur et il me trouve bien des résultat et le relie correctement, c'est déjà bien.

Encore merci pour ton aide, c'est super sympa
0
cs_ghuysmans99 Messages postés 3982 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 16
15 juil. 2012 à 18:04
Le "or die(mysql_error())" n'a rien à faire dans la seconde boucle (une erreur peut survenir mais alors ça sera avec le mysql_query...)

VB.NET is good ... VB6 is better
Utilise Réponse acceptée quand un post répond à ta question
0
maxredphenix Messages postés 58 Date d'inscription vendredi 8 septembre 2006 Statut Membre Dernière intervention 9 novembre 2012
15 juil. 2012 à 18:58
Je cherche depuis 1h pourquoi ça ne fonctionnait pas alors qu'il y avait juste à enlever le or die, dur dur...en tout cas je te remercie cela fonctionne maintenant et j'ai bien l'affichage de tous ce qui doit l'être.

Pour ce qui est de l'affichage des valeurs sur l'année en cours, je dois refaire 2 autres requêtes non? ou alors il y a moyen de le faire avec dans celle actuelle?

Juste comme ça, un petit conseil. J'ai un fichier php qui me sert à créer des graphiques via jpgraph, j'ai fait un require_once à mon fichier de connexion à la bdd. Est-ce que c'est mieux de faire un mysql_close après chaque requête+création graphique (requêtes sur plusieurs tables differentes et jointures dans certaine) ou bien je les enchaîne tous et c'est à la fin du fichier php que je fais ma cloture. Je te demande ça parce que je voudrais gagner en rapidité dans la création des graphique vu qu'il y en à 20 à créer.

Merci et passe une bonne soirée
0
cs_ghuysmans99 Messages postés 3982 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 16
15 juil. 2012 à 22:21
Pour le nombre sur l'année, je crois que tu n'as pas le choix, vu qu'on ne peut pas
le trouver via les données qu'on est en train d'afficher. Ce que tu peux faire par contre
c'est calculer les sommes pour l'année/le mois des groupes à partir des éléments à l'intérieur de
ces groupes (ce qui t'évite de faire d'autres requêtes), il te suffit de mettre le code des éléments
dans une chaine de caractères avant de l'afficher une fois que tu as stocké les sommes de ces 2 champs.

Le plus élégant est de n'utiliser qu'une seule connexion tout au long du script (il ne faut qu'un tout
petit instant pour en établir une nouvelle, mais vu que ça ne sert à rien, autant ne pas le faire).


Bonne fin de soirée

VB.NET is good ... VB6 is better
Utilise Réponse acceptée quand un post répond à ta question
0
maxredphenix Messages postés 58 Date d'inscription vendredi 8 septembre 2006 Statut Membre Dernière intervention 9 novembre 2012
16 juil. 2012 à 18:26
Bonjour,

je viens seulement de voir ton message, ok pour la déconnexion mysql, je vais faire comme tu as dit. En attendant j'avais commencé à créer 2 requêtes différentes:
require_once('connexionbdd.php'); // Connexion à mysql via le fichier connexion.php				
$reqEnsemble=mysql_query("SELECT c.ensemble AS ENSEMBLE, d.date_appel, COUNT(c.element) AS NBRE_ELEMENT_MOIS
FROM correctif AS c LEFT JOIN demande AS d ON c.id_appel = d.id 
WHERE MONTH(d.date_appel)=$mois AND YEAR(d.date_appel)=$annee 
GROUP BY ENSEMBLE ORDER BY ENSEMBLE");
$reqEnsembleAnnee=mysql_query("SELECT c.ensemble AS ENSEMBLE, d.date_appel, COUNT(c.element) AS NBRE_ELEMENT_ANNEE
FROM correctif AS c LEFT JOIN demande AS d ON c.id_appel = d.id 
WHERE YEAR(d.date_appel)=$annee 
GROUP BY ENSEMBLE ORDER BY ENSEMBLE");	
while ($req1 mysql_fetch_assoc($reqEnsembleAnnee) && $req2 mysql_fetch_assoc($reqEnsemble)) { 
echo '<tr>';
echo '<td align="left" style="background-color:yellow">'.htmlentities($req1['ENSEMBLE']).'</td>';
echo '<td align="center" style="color:red; font-weight:bold; background-color:yellow">'.htmlentities($req2['NBRE_ELEMENT_MOIS']).'</td>';
echo '<td align="center" style="color:blue; font-weight:bold; background-color:yellow">'.htmlentities($req1['NBRE_ELEMENT_ANNEE']).'</td>';
echo '</tr>';
$ensemble = mysql_real_escape_string($req2['ENSEMBLE']);
$ensemble_annee = mysql_real_escape_string($req1['ENSEMBLE']);
$reqElement=mysql_query("SELECT c.idCorrectif, c.ensemble AS ENSEMBLE, COUNT(c.element) AS NBRE_ELEMENT_MOIS, c.element AS ELEMENT, d.date_appel 
FROM correctif AS c LEFT JOIN demande AS d ON c.id_appel = d.id 
WHERE MONTH( d.date_appel )=$mois AND YEAR( d.date_appel )=$annee AND ENSEMBLE = '$ensemble' 
GROUP BY ELEMENT ORDER BY ENSEMBLE");
$reqElementAnnee=mysql_query("SELECT c.idCorrectif, c.ensemble AS ENSEMBLE, COUNT(c.element) AS NBRE_ELEMENT_ANNEE, c.element AS ELEMENT, d.date_appel 
FROM correctif AS c LEFT JOIN demande AS d ON c.id_appel = d.id 
WHERE YEAR( d.date_appel )=$annee AND ENSEMBLE = '$ensemble_annee' 
GROUP BY ELEMENT ORDER BY ENSEMBLE");
while ($req3 mysql_fetch_assoc($reqElementAnnee) && $req4 mysql_fetch_assoc($reqElement)) {
echo '<tr>';
echo '<td align="right">'.htmlentities($req3['ELEMENT']).'</td>';
echo '<td align="center">'.htmlentities($req4['NBRE_ELEMENT_MOIS']).'</td>';
echo '<td align="center">'.htmlentities($req3['NBRE_ELEMENT_ANNEE']).'</td>';
echo '</tr>';
}
}


Mais comme tu peux le voir sur le lien sur le lien ci-dessous, c'est pas encore ça. Il m'affiche seulement le nombre total d'élément dans le mois en cours mais même pas les intitulés, alors que si je sépare les codes j'obtiens de bon résultat. C'est la liaison qui va pas entre les 2 requêtes je pense. Je vais regarder pour faire comme tu as dit, mais pour le moment j'ai du mal à visualiser comment le faire.
http://dl.dropbox.com/u/31901874/Copie%20site%20pour%20forum/Requetes%20tableau.jpg

Merci et bonne soirée
0
Rejoignez-nous