Bonjour,
Pour un tableau récapitulatif des chiffres par technicien et par mois, j'ai besoin de procéder à une requête SQL très similaire plusieurs fois. Pour simplifier l'écriture du fichier générant ce tableau, j'ai voulu tenté une fonction contenant la requête SQL et les variables allant bien avec.
J'ai donc une fonction avec 5 options à définir qui va faire un "return" sur une variable nouvelle nommée $res. Je l'ignorai mais cette variable est en fait un tableau donc j'ai obtenu le fameux "ressources id#". J'ai donc voulu appelé la fonction plusieurs fois et stocker les résultats dans un nouveau tableau appelé $chiffre.
Étonnamment toutes mes lignes contiennent la valeur 0. J'ai donc voulu procéder à divers tests, ma requête SQL est valide car si je n'exécute la fonction qu'une fois et que j'appelle le résultat $res[0], j'obtiens bien ma valeur attendue.
Si j'appelle deux fois ma fonction en faisant un echo $res[0] entre chaque appel, j'obtiens deux fois la première valeur calculée...
Pour finir de me déprimer l'utilisation d'un tableau pour stocker mes résultats de façon incrémentielle dans la fonction elle-même ne m'a permis que de ne plus avoir la moindre réponse correcte...
Je me tourne donc vers vous pour me donner une piste ou la solution.
Je vous poste ci-dessous les 2 fichiers : d'un côté le fichier du tableau et de l'autre la fonction.
La fonction :
Le fichier PHP :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 <? include ("connect_db.php"); function suivi_tech($tech, $mois, $classe, $prestataire, $annee) { $mois_fd = mktime (0,0,0,$mois,1,$annee); $mois_ff = mktime (0,0,0,$mois+1,1,$annee); if ($classe == "dirisi") $classe_finale = 'c.statut = "entreprise" AND c.societe = "X"'; if ($classe == "societe") $classe_finale = 'c.statut = "entreprise"'; if ($classe == "particulier") $classe_finale = 'c.statut = "particulier"'; $sql = 'SELECT SUM(i.montant_factu) FROM interventions AS i JOIN clients AS c ON i.id_clients = c.id WHERE i.user = "'.$tech.'" AND '.$classe_finale.' AND i.date_intervention < "'.$mois_ff.'" AND i.date_intervention > "'.$mois_fd.'" AND c.prestataire = "'.$prestataire.'"'; $res = mysql_query ($sql) or die ('Erreur : '.mysql_error() ); if (isset($res)) return $res; } ?>
Et j'ai beau cherché je ne vois pas ce qui cloche.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32 <?php include ("connect_db.php"); require ('function.php'); echo '<div class="titre">Suivi technicien</div>'; $technicien = array('A', 'B', 'C', 'D', 'E'); $mois_fr = array ('Janvier', 'Février', 'Mars', 'Avril', 'Mai', 'Juin', 'Juillet', 'Août', 'Septembre', 'Octobre', 'Novembre', 'Décembre'); for ($i = 0; $i < sizeof($technicien); $i ++) { echo '<table width="500px" cellpadding="5" cellspacing="0"><tr><th colspan="2" class="nom_tech">'.$technicien[$i].'</th></tr>'; echo '<tr><td>Mois</td><td>Particulier</td><td>Société</td><td>X</td></tr>'; for ($j = 0; $j < sizeof($mois_fr); $j ++) { $chiffre = array (); suivi_tech($technicien[$i],$j+1,particulier,aucun,2011); $chiffre [] = $res[0]; suivi_tech($technicien[$i],$j+1,societe,aucun,2011); $chiffre [] = $res[0]; suivi_tech($technicien[$i],$j+1,societe,S,2011)*0.8; $chiffre [] = $res[0]; suivi_tech($technicien[$i],$j+1,societe,T,2011)*0.75; $chiffre [] = $res[0]; suivi_tech($technicien[$i],$j+1,X,aucun,2011); $chiffre [] = $res[0]; echo '<tr><td>'.$mois_fr[$j].'</td>'; echo '<td>'.$chiffre[0].'</td>'; echo '<td>'.$chiffre[1]+$chiffre[2]+$chiffre[3].'</td>'; echo '<td>'.$chiffre[4].'</td>'; echo '</tr>'; } echo '</table>'; } ?>
Merci par avance de votre aide et déjà d'avoir eu la patience de tout lire
Partager