IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Créer des séries à partir de plusieurs colonnes [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Avril 2014
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Avril 2014
    Messages : 40
    Points : 35
    Points
    35
    Par défaut Créer des séries à partir de plusieurs colonnes
    Bonjour,
    Dans l'objectif de faire un reporting sous forme de camembert, je dois extraire les données distinctes de 7 colonnes (CODE_TRAV1 à 7) qui composent la série 2 ($serie2[]). La série 1 ($serie1[]) compte le nombre de fois que les éléments de la série2 sont trouvés. J'ai réussi à la faire pour une colonne voici le code :
    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
    33
    34
    35
    36
    37
    38
    39
    40
    41
     
    <?php
    		include("menu//chiens.php");
    		$code_chargee="V140";
    		// Extraire les codes travaux utilisé sur ce véhicule
    		// Extraire les codes travaux utilisé sur ce véhicule
    		$extract_codeTrav_rep = $bdd->query("SELECT DISTINCT CODE_TRAV1 FROM `ordre_reparation_essai` WHERE CODE_VEHICULE='".$code_chargee."'");
    		while($dataset_separated = $extract_codeTrav_rep->fetch())
    		{
    		   $serie2[] = $dataset_separated['CODE_TRAV1'];
    		}
    		$extract_codeTrav_rep->closeCursor();
     
    		$extract_count_trav = $bdd->query("SELECT count(CODE_TRAV1) FROM `ordre_reparation_essai` WHERE CODE_VEHICULE='".$code_chargee."'  GROUP BY CODE_TRAV1");
    		$serie1 = array();
    			while($serie1_separated = $extract_count_trav->fetch())
    			{
    			$serie1[] = $serie1_separated[0];
    			}
    		$extract_count_trav->closeCursor();
    ?>
    <table>
    <tr><th width="50">Code</th><th width="300" align="left">Désignation</th><th width="50">Nbr</th></tr>
    <?php
    $i = 0;
    $j = 0;
    while ($i < count($serie2)) {
    	$a = $serie2[$i];
    	echo ("<tr bgcolor='".( ($j++ % 2 == 0) ? '#e1e1e1' : '#ffffff' )."'>");
    	echo ("<td align='center'>".$a."</td>");
    	$rep_famille = $bdd->query("SELECT*FROM `taches` WHERE CODE_TACHE='".$a."'");
    	$famille_extraite= $rep_famille->fetch();
    	$famille=$famille_extraite['TACHE'];
    	echo ("<td align='left'>".$famille."</td>");
    	echo ("<td align='center'>".$serie1[$i]."</td></tr>");
    	$i++;
    }
     
    $rep_famille->closeCursor();
    ?>
    </table>
    J'ai tenté bons nombre de solutions sans succès. Je viens donc vers vous pour trouver la solution à mon problème.

  2. #2
    Nouveau membre du Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Avril 2014
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Avril 2014
    Messages : 40
    Points : 35
    Points
    35
    Par défaut
    Voici une solution que j'avais envisagé, j'ai cependant une erreur "Array to string conversion" que je n'arrive pas à résoudre :
    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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    <?php
    		include("menu//chiens.php");
    		$code_chargee="V140";
    		// Extraire les codes travaux utilisé sur ce véhicule
    		// Extraire les codes travaux utilisé sur ce véhicule
    		$extract_codeTrav_rep = $bdd->query("SELECT DISTINCT CODE_TRAV1,CODE_TRAV2,CODE_TRAV3,CODE_TRAV4,CODE_TRAV5,CODE_TRAV6,CODE_TRAV7 FROM `ordre_reparation_essai` WHERE CODE_VEHICULE='".$code_chargee."'");
    		$serie2 = array();
    		while($dataset_separated = $extract_codeTrav_rep->fetch())
    		{
    		   $serie2[] = $dataset_separated;
    		}
    		$extract_codeTrav_rep->closeCursor();
     
    		$extract_count_trav = $bdd->query("SELECT count(CODE_TRAV1)+count(CODE_TRAV2)+count(CODE_TRAV3)+count(CODE_TRAV3)+count(CODE_TRAV4)+count(CODE_TRAV5)+count(CODE_TRAV6)+count(CODE_TRAV7) FROM `ordre_reparation_essai` WHERE CODE_VEHICULE='".$code_chargee."'  GROUP BY CODE_TRAV1,CODE_TRAV2,CODE_TRAV3,CODE_TRAV4,CODE_TRAV5,CODE_TRAV6,CODE_TRAV7");
    		$serie1 = array();
    			while($serie1_separated = $extract_count_trav->fetch())
    			{
    			$serie1[] = $serie1_separated[0];
    			}
    		$extract_count_trav->closeCursor();
    ?>
    <table>
    <tr><th width="50">Code</th><th width="300" align="left">Désignation</th><th width="50">Nbr</th></tr>
    <?php
    $i = 0;
    $j = 0;
    while ($i < count($serie2)) {
    	$a= $serie2[$i];
    	echo ("<tr bgcolor='".( ($j++ % 2 == 0) ? '#e1e1e1' : '#ffffff' )."'>");
    	echo ("<td align='center'>".$a."</td>");
    	$rep_famille = $bdd->query("SELECT*FROM `taches` WHERE CODE_TACHE='".$a."'");
    	$famille_extraite= $rep_famille->fetch();
    	$famille=$famille_extraite['TACHE'];
    	echo ("<td align='left'>".$famille."</td>");
    	echo ("<td align='center'>".$serie1[$i]."</td></tr>");
    	$i++;
    }
     
    $rep_famille->closeCursor();
    ?>
    </table>
    Merci pour votre coup de main !!!

  3. #3
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 235
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 235
    Points : 15 532
    Points
    15 532
    Par défaut
    affiche le contenu des variables pour vérifier qu'elles contiennent bien ce que tu souhaites

  4. #4
    Membre actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2012
    Messages
    131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2012
    Messages : 131
    Points : 242
    Points
    242
    Par défaut
    Bonjour,
    dans ta boucle où tu met $serie2[] = $dataset_separated, $dataset_separated est un array, donc que quand tu fait echo $serie2[$i] ça te génère une erreur
    pour surpasser cette erreur tu peux par exp faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $serie2[] = implode('-', $dataset_separated);

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Avril 2014
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Avril 2014
    Messages : 40
    Points : 35
    Points
    35
    Par défaut SOLUTION
    Bonjour à tous,
    J'ai trouvé une solution à mon problème :
    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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
     
    <?php
    $code_chargee="V140";
    // Extraire les codes travaux utilisé sur ce véhicule
    $extract_codeTrav_rep = $bdd->query("SELECT CODE_TRAV1,CODE_TRAV2,CODE_TRAV3,CODE_TRAV4,CODE_TRAV5,CODE_TRAV6,CODE_TRAV7 FROM `ordre_reparation` WHERE CODE_VEHICULE='".$code_chargee."'");
    $serie2 = array();
    // Générer la série à partir de la boucle
    while($dataset_separated = $extract_codeTrav_rep->fetch())
    {
       $serie2[] = $dataset_separated;
    }
    // Mettre fin à la requête
    $extract_codeTrav_rep->closeCursor();
     
     
    // Initier une boucle pour chaque élément trouvé
    $i = 0;
    while ($i < count($serie2)) {
        $serie2[$i]=array_filter($serie2[$i]); 
            foreach ($serie2[$i] as $codeUnique){
                $result[] =($codeUnique);
            }
        $i++;
    }
    // La série2 ne peut as avoir de doublon
    $serie2 = array_unique($result);
     
    // Compter le nombre de code enregistré
    $nbr_code=count($serie2);
     
    // Créer une requête pour chaque élément trouvé
    foreach ($serie2 as $key =>$codeTache){
            for ($k = 1; $k < 8; $k++) {
                $extract_count_trav = $bdd->query("SELECT count(CODE_TRAV".$k.") FROM `ordre_reparation` WHERE CODE_VEHICULE='".$code_chargee."' AND CODE_TRAV".$k."='".$codeTache."'");
                $serie_separated= $extract_count_trav->fetch();
                $code_trav[$k] = $serie_separated[0];
                $extract_count_trav->closeCursor();
            }
     
    // Faire une somme pour chaque code trouvé
    $serie1[$key]=array_sum($code_trav);
    }
    ?>
    // Faire le tableau des valeurs trouvées
    <table>
        <tr><th width="50">Code</th><th width="300" align="left">Désignation</th><th width="50">Nbr</th></tr>
    <?php
        $j = 0;            
        foreach ($serie2 as $key =>$a){
            echo ("<tr bgcolor='".( ($j++ % 2 == 0) ? '#e1e1e1' : '#ffffff' )."'>");
            echo ("<td align='center'>".$a."</td>");
            $rep_famille = $bdd->query("SELECT*FROM `taches` WHERE CODE_TACHE='".$a."'");
            $famille_extraite= $rep_famille->fetch();
            $famille=$famille_extraite['TACHE'];
            echo ("<td align='left'>".$famille."</td>");
            echo ("<td align='center'>".$serie1[$key]."</td></tr>");
            }
        $rep_famille->closeCursor();
    ?>
    </table>
    Si quelqu'un à une autre solution plus simple je suis preneur...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 26/01/2007, 14h58
  2. Créer un bitmap à partir de plusieurs autres
    Par MiJack dans le forum Delphi
    Réponses: 4
    Dernier message: 08/06/2006, 13h47
  3. Créer des imagettes à partir des fichires TIF
    Par Chikh001 dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 03/05/2006, 11h59
  4. Comment créer des relances à partir d'1 table
    Par Rod_75 dans le forum Access
    Réponses: 9
    Dernier message: 01/03/2006, 15h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo