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 :

Exécuter deux "While" sur une même requete


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    120
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 120
    Par défaut Exécuter deux "While" sur une même requete
    Bonjour,

    J'essaie de faire un graphique avec le module PChart, mais je transforme le code pour le rendre compatible avec une base de données.

    Au départ, il y a:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $MyData->addPoints(array(150,220,300,-250,-420,-200,300,200,100),"UTL");
    $MyData->addPoints(array(140,0,340,-300,-320,-300,200,100,50),"UCP");
    $MyData->setAxisName(0,"Hits");
    $MyData->addPoints(array("January","February","March","April","May","Juin","July","August","September"),"Months");
    Mais pour moi, les valeur sont dans une base de données, j'ai donc créer deux requetes:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $panne_1 = $bdd->query('SELECT * FROM ca_nb_panne WHERE Num_2=0');
    $panne_1 = $bdd->query('SELECT * FROM ca_nb_panne where Num_2!=0');
    et je fais en sorte que les résultats s'affiche dans un fichier au même format que si dessous:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    $fp = fopen("stat_nb_dfo_1.php","w+");
    fwrite($fp, "<?php \$MyData->addPoints(array(");
    
    // on fait une boucle qui va faire un tour pour chaque enregistrement
    	while ($donnees_1 = $panne_1->fetch())
    	{
    		fwrite($fp, $donnees_1['Nb_panne'] . ",");
    	}
    	fwrite($fp, "),\"1\");?>");
    	fclose($fp);
    mais lorsque je mes deux boucles while, l'une apres l'autre en rapport avec la même requete, le résultat ne s'inscrit quand dans un fichier

    Voici un extrait de mon code complet:

    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
    	include('connexion.php');
    	$panne_1 = $bdd->query('SELECT * FROM ca_nb_panne WHERE Num_2=0');
    	$panne_2 = $bdd->query('SELECT * FROM ca_nb_panne where Num_2!=0');
     
    //Creation d'un fichier pour le nombre de defaut
    $fp = fopen("stat_nb_dfo_1.php","w+");
    fwrite($fp, "<?php \$MyData->addPoints(array(");
    
    // on fait une boucle qui va faire un tour pour chaque enregistrement
    	while ($donnees_1 = $panne_1->fetch())
    	{
    		fwrite($fp, $donnees_1['Nb_panne'] . ",");
    	}
    	fwrite($fp, "),\"1\");?>");
    	fclose($fp);
     
     
    //Creation d'un fichier pour l'axe des ordonnées qui affiche le numéro
    $fp = fopen("stat_affiche_1.php","w+");
    fwrite($fp, "<?php \$MyData->addPoints(array(");
    
    // on fait une boucle qui va faire un tour pour chaque enregistrement
    	while ($donnees_1 = $panne_1->fetch())
    	{
    		fwrite($fp, $donnees_1['Num_1'] . ",");
    	}
    	fwrite($fp, "),\"No 1\");?>");
    	fclose($fp);
     
     
    //Creation d'un fichier pour le nombre de defaut
    $fp = fopen("stat_nb_dfo_2.php","w+");
    fwrite($fp, "<?php \$MyData->addPoints(array(");
    
    // on fait une boucle qui va faire un tour pour chaque enregistrement
    	while ($donnees_2 = $panne_2->fetch())
    	{
    	fwrite($fp, $donnees_2['Nb_panne'] . ",");
    	}
    fwrite($fp, "),\"2\");?>");
    fclose($fp);
    comment faire pour que les deux boucles s'exécutent et inscrivent les résultats dans les fichiers (qui eux sont bien créés automatiquements) ?

    Merci

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Alerte police du PHP :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    while ($donnees_1 = $panne_1->fetch())
    	{
    		$nbPanne[] = $row['Nb_panne'];
                    $Num1[] = $row['Num_1'];
    	}
    $MyData->addPoints($nbPanne,"UTL");
    Je n'ai par contre pas bien compris ce que tu voulais faire avec ce Num_1
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    120
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 120
    Par défaut
    Je souhaite, récupérer les valeurs de ma base et les mettre dans les lignes " $MyData->addPoints(array( " afin de pouvoir générer un graphique

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Pour ça je suis bien d'accord et je t'ai répondu.

    Mais dans ton premier de départ on "UTL" et "UCP" et dans ta tentative on a "1", "No 1" et "2".
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    120
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 120
    Par défaut
    J'avais modifier mes variables, voici le code que j'avais utilisé:

    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
    include('connexion.php');
    	$panne_1 = $bdd->query('SELECT * FROM ca_nb_panne WHERE Num_2=0');
    	$panne_2 = $bdd->query('SELECT * FROM ca_nb_panne where Num_2!=0');
     
    //Creation d'un fichier pour le nombre de defaut//
    $fp = fopen("stat_nb_dfo_1.php","w+");
    fwrite($fp, "<?php \$MyData->addPoints(array(");
     
    // on fait une boucle qui va faire un tour pour chaque enregistrement//
    	while ($donnees_1 = $panne_1->fetch())
    	{
    		fwrite($fp, $donnees_1['Nb_panne'] . ",");
    	}
    	fwrite($fp, "),\"No 1\");?>");
    	fclose($fp);
     
     
    //Creation d'un fichier pour l'axe des ordonnées qui affiche le numéro//
    $fp = fopen("stat_affiche_1.php","w+");
    fwrite($fp, "<?php \$MyData->addPoints(array(");
     
    // on fait une boucle qui va faire un tour pour chaque enregistrement//
    	while ($donnees_1 = $panne_1->fetch())
    	{
    		fwrite($fp, $donnees_1['Num_1'] . ",");
    	}
    	fwrite($fp, "),\"No 1b\");?>");
    	fclose($fp);
     
     
    //Creation d'un fichier pour le nombre de defaut
    $fp = fopen("stat_nb_dfo_2.php","w+");
    fwrite($fp, "<?php \$MyData->addPoints(array(");
     
    // on fait une boucle qui va faire un tour pour chaque enregistrement
    	while ($donnees_2 = $panne_2->fetch())
    	{
    	fwrite($fp, $donnees_2['Nb_panne'] . ",");
    	}
    fwrite($fp, "),\"No 2\");?>");
    fclose($fp);
    le code tel que je voudrais qu'il soit

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $MyData->addPoints(array(150,220,300,-250,-420,-200,300,200,100),"No 1");
    $MyData->addPoints(array(140,0,340,-300,-320,-300,200,100,50),"No 1b");
    $MyData->setAxisName(0,"Hits");
    $MyData->addPoints(array("January","February","March","April","May","Juin","July","August","September"),"No 2");

  6. #6
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fwrite($fp, "<?php \$MyData->addPoints(array(");
    Pourquoi tu ouvres des balises PHP à l'intérieur du code PHP ?
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  7. #7
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Ton exemple ne colles toujours pas entre le nom des colonnes et le resultat que tu souhaites puisque tu as mis "Nb_panne" pour le nom des mois.
    D'ailleurs est-ce que le nom des mois est ecrit litteralement dans ta bdd ?

    Tu as regardé ce qu'il faut faire à partir de mon exemple ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    120
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 120
    Par défaut
    @Bovino: j'ouvre les balise PHP à l'intérieur du code PHP pour que la ligne dans le fichier créer soit de la forme:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php $MyData->addPoints(array(valeur_recuperer_dans_la_base),"No 1"); ?>
    @Sabotage: j'ai regardé à partir de ton exemple mais je n'arrive pas à le faire fonctionner, il ne me sort qu'une valeur.

    Non, le nom des mois n'est pas écrit littéralement dans la bdd, je remplace cette ligne (tirée d'un exemple sur lequel je m'appuie) par le type de defaut

    Voici le code que j'utilise:
    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
     
    $panne_utl = $bdd->query('SELECT Type_panne FROM ca_nb_panne WHERE Num_UCP=0');
     
    //Creation d'un fichier pour l'axe des ordonnées qui affiche le numéro des UTL
     
    $fp = fopen("stat_affiche_utl.php","w+");
    fwrite($fp, "\$MyData->addPoints(array(");
     
    // on fait une boucle qui va faire un tour pour chaque enregistrement
    	while ($donnees_utl = $panne_utl->fetch())
    	{
    		fwrite($fp, $donnees_utl['Type_panne'] . ",");
    	}
    	fwrite($fp, "),\"Type de panne\");");
    	fclose($fp);
     
    $panne_utl1 = $bdd->query('SELECT Nb_panne FROM ca_nb_panne WHERE Num_UCP=0');
     
    $fp = fopen("stat_nb_dfo_utl.php","w+");
    fwrite($fp, "\$MyData->addPoints(array(");
     
    // on fait une boucle qui va faire un tour pour chaque enregistrement
    	while ($donnees_utl1 = $panne_utl1->fetch())
    	{
    	fwrite($fp, $donnees_utl1['Nb_panne'] . ",");
    	}
    fwrite($fp, "),\"UTL\");");
    fclose($fp);
     
    //*******************Stat panne UCP********************//
     
    $panne_ucp = $bdd->query('SELECT * FROM ca_nb_panne where Num_UCP!=0');
     
    //Creation d'un fichier pour le nombre de defaut UCP
     
    $fp = fopen("stat_nb_dfo_ucp.php","w+");
    fwrite($fp, "\$MyData->addPoints(array(");
     
    // on fait une boucle qui va faire un tour pour chaque enregistrement
    	while ($donnees_ucp = $panne_ucp->fetch())
    	{
    	fwrite($fp, $donnees_ucp['Nb_panne'] . ",");
    	}
    fwrite($fp, "),\"UCP\");");
    fclose($fp);

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    120
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 120
    Par défaut
    Après plusieurs heures de tests et de recherche, j'en ai déduit que je ne pouvais pas arriver au résultat que je souhaitait.

    Je suis par Excel pour mieux comprendre et voici mon tableau:
    Nom : doc1.JPG
Affichages : 195
Taille : 7,9 Ko

    Ce qui donne:
    Nom : doc2.JPG
Affichages : 188
Taille : 14,6 Ko

    Aussi à partir du fichier PHP pour la création des graphiques, je souhaite avoir ce code là:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $MyData->addPoints(array(5,2,0,),"Equip 1");
    $MyData->addPoints(array(0,0,2,),"Equip 2");
    $MyData->addPoints(array(1,2,0,),"Equip 3");
     
     $MyData->addPoints(array("Dfo1","Dfo2","Dfo3"),"Defauts");
    mais via une/des requetes SQL.

    Je n'arrive pas à mettre les valeurs de l'équipement 1 sur une ligne et à mettre un 0 (qui n'est pas entrée dans le bdd) lorsqu'il n'y a pas de valeur.

  10. #10
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Quelle est la structure de ta table ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    120
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 120
    Par défaut
    Voici la structure de ma table: (le type pour la date n'est pas correct, mais pas utile pour le moment)
    Nom : doc3.JPG
Affichages : 190
Taille : 24,6 Ko

    et voici son contenu:

    Nom : doc4.JPG
Affichages : 197
Taille : 28,6 Ko

    Sachant que cela peut s'incrémenter

    Merci

  12. #12
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Pour commencer, il va falloir traiter les dates avec une colonne de type DATE sinon on arrivera a rien.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  13. #13
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    120
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 120
    Par défaut
    J'ai remis la colonne "Date" au bon format:

    Nom : doc5.JPG
Affichages : 176
Taille : 74,2 Ko

  14. #14
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    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
     
    // Recupère les différents types de pannes existant
    $sth = $bdd->query('SELECT DISTINCT Type_panne FROM ca_nb_panne WHERE Num_UCP=0 ORDER BY Type_panne');
    while ($row = $sth->fetch(PDO::FETCH_ASSOC)) {
        $labels[] = $row['Type_panne'];
        // on prépare un tableau de données vierge
        $tblVierge[$row['Type_panne']] = 0;
    }
     
    // on recupère le nombre de pannes et on les classe :
    $sth = $bdd->query('SELECT Type_panne, Nb_panne, Num_Equip FROM ca_nb_panne WHERE Num_UCP=0');
    while ($row = $sth->fetch(PDO::FETCH_ASSOC)) {
        if (!isset($data[$row['Num_Equip']])) {
               $data[$row['Num_Equip']] = $tblVierge;
        }
        $data[$row['Num_Equip']][$row['Type_panne']] = $row['Nb_panne'];
    }
     
    // pour chaque équipe on ajoute une série de points :
    foreach ($data as $Num_Equipe=>$values) {
        $MyData->addPoints(array_values($values),$Num_Equipe);
    }
     
    $MyData->addPoints($labels,"Defauts");
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  15. #15
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    120
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 120
    Par défaut
    MERCI BEAUCOUP !!

    C'est tout a fait ce qu'il me fallait.

    Il me reste encore un peu (beaucoup) de chemin à faire en php / mysql à ce que je vois.

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

Discussions similaires

  1. [ODS HTML] Mettre deux graphiques côte à côte sur une même page
    Par mamclarss dans le forum ODS et reporting
    Réponses: 4
    Dernier message: 23/07/2012, 10h40
  2. Réponses: 3
    Dernier message: 03/09/2009, 09h48
  3. Faire deux défilements d'images sur une même page
    Par ndsaerith dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 02/09/2007, 18h42

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