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 :

exploiter resultat d une requête dans un plusieurs boucles


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    89
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Mars 2009
    Messages : 89
    Par défaut exploiter resultat d une requête dans un plusieurs boucles
    Bonjour

    Voila j ai une fonction pour créer un fichier excel par lot

    Ma fonction à deux paramètres
    $id du projet
    List_idkit la liste des id des kits à traiter
    Pour chaque idkit de la liste (c est un tableau) que je parcours via un foreach
    Je fais une requête sur mysql pour récupérer les informations sur l idkit
    | =>> Il me retourne plusieurs résultats.
    |=>> j exploite ses resultats via un while

    Mon problème c est qu il ne rentre jamais dans ce while je ne sais pas pourquoi. et il ne me provoque aucun erreur ???

    Merci de votre aide.

    list_idkit :
    Array
    (
    [1] => 39
    [5] => 40
    [9] => 41
    )
    Il lance bien la requête pour chaque idkit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT e.id_etd, ep.id_prepa, es.id_site, ep.id_app, es.nom_site, ep.d_prepa, ep.d_crea_p, p.nom, p.prenom, e.nom_etd, e.ecglab, a.num_med, a.sn, a.sni, m.lib_mod, k.nom_kit FROM etude_prepa AS ep, etude_site AS es, contact_site AS cs, personne AS p, etude AS e, appareils AS a, modele AS m, etude_kit_c AS kc, etude_kit_p AS kp, etude_kit AS k WHERE ep.id_site = es.id_site AND es.id_site = cs.id_site AND cs.id_per = p.id_per AND es.id_etd = e.id_etd AND ep.id_app = a.id_app AND a.id_mod = m.id_mod AND ep.id_prepa = kc.id_prepa AND kc.id_kp = kp.id_kp AND kp.id_kit = k.id_kit AND k.id_kit = 39 ORDER BY m.lib_mod ASC
     
    SELECT e.id_etd, ep.id_prepa, es.id_site, ep.id_app, es.nom_site, ep.d_prepa, ep.d_crea_p, p.nom, p.prenom, e.nom_etd, e.ecglab, a.num_med, a.sn, a.sni, m.lib_mod, k.nom_kit FROM etude_prepa AS ep, etude_site AS es, contact_site AS cs, personne AS p, etude AS e, appareils AS a, modele AS m, etude_kit_c AS kc, etude_kit_p AS kp, etude_kit AS k WHERE ep.id_site = es.id_site AND es.id_site = cs.id_site AND cs.id_per = p.id_per AND es.id_etd = e.id_etd AND ep.id_app = a.id_app AND a.id_mod = m.id_mod AND ep.id_prepa = kc.id_prepa AND kc.id_kp = kp.id_kp AND kp.id_kit = k.id_kit AND k.id_kit = 40 ORDER BY m.lib_mod ASC
     
    SELECT e.id_etd, ep.id_prepa, es.id_site, ep.id_app, es.nom_site, ep.d_prepa, ep.d_crea_p, p.nom, p.prenom, e.nom_etd, e.ecglab, a.num_med, a.sn, a.sni, m.lib_mod, k.nom_kit FROM etude_prepa AS ep, etude_site AS es, contact_site AS cs, personne AS p, etude AS e, appareils AS a, modele AS m, etude_kit_c AS kc, etude_kit_p AS kp, etude_kit AS k WHERE ep.id_site = es.id_site AND es.id_site = cs.id_site AND cs.id_per = p.id_per AND es.id_etd = e.id_etd AND ep.id_app = a.id_app AND a.id_mod = m.id_mod AND ep.id_prepa = kc.id_prepa AND kc.id_kp = kp.id_kp AND kp.id_kit = k.id_kit AND k.id_kit = 41 ORDER BY m.lib_mod ASC
    voici ma fonction :
    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
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
     
    function fileprepa_kit($id, $list_idkit=array() ) {
        // PHPExcel
        include_once './data/phpexcel/Classes/PHPExcel.php';
        // on inclut la classe nécessaire à la lecture du fichier template
        // PHPExcel_IOFactory
        include_once './data/phpexcel/Classes/PHPExcel/IOFactory.php';
        // compteur et suivis  d erreur.
        $err = array();
        $i = 1;
     
           print("<pre>");
            print_r($list_idkit);
           print("</pre>");
     
        // liste des enregistrements appareil en preparation.
     
        foreach($list_idkit as $idkit) {
     
            //$idkit = $list_idkit[$i];
     
            $strSQL_prepakit = 'SELECT e.id_etd, ep.id_prepa, es.id_site, ep.id_app, es.nom_site, ep.d_prepa, ep.d_crea_p, p.nom, p.prenom, e.nom_etd, e.ecglab, a.num_med, a.sn, a.sni, m.lib_mod, k.nom_kit
                                FROM etude_prepa AS ep, etude_site AS es, contact_site AS cs, personne AS p, etude AS e, appareils AS a, modele AS m, etude_kit_c AS kc, etude_kit_p AS kp, etude_kit AS k
                                WHERE ep.id_site = es.id_site
                                AND es.id_site = cs.id_site
                                AND cs.id_per = p.id_per
                                AND es.id_etd = e.id_etd
                                AND ep.id_app = a.id_app
                                AND a.id_mod = m.id_mod
                                AND ep.id_prepa = kc.id_prepa
                                AND kc.id_kp = kp.id_kp
                                AND kp.id_kit = k.id_kit
                                AND k.id_kit = '.$idkit.'
                                ORDER BY m.lib_mod ASC';
            //
            // debug
            //
            echo $strSQL_prepakit.' </br>';
     
            $res_prepakit = requete_SQL($strSQL_prepakit);
     
                print("<pre>");
                print_r($res_prepakit);
                print("</pre>");
            while( $tabl_prepa = mysql_fetch_array($res_prepakit) ) {
     
                // récupérartion des données de la requête :
                $idetd = $tabl_prepa['id_etd'];
                $idprepa = $tabl_prepa['id_prepa'];
                $idsite = $tabl_prepa['id_site'];
                $idapp = $tabl_prepa['id_app'];
                $nom_site = $tabl_prepa['nom_site'];
                $dp = explode("-",$tabl_prepa['d_prepa']);
                $dprepa = $dp[2].'-'.$dp[1].'-'.$dp[0];
                $dc = explode(" ",$tabl_prepa['d_crea_p']);
                $dcd = explode("-",$dc[0]);
                //$dch = explode(":",$dc[1]);
                $d = $dcd[2].$dcd[1].$dcd[0];
                //$h = $dch[0].$dch[1].$dch[2];
                $dcrea = $d.'_'.$dc[1];
                $contact = $tabl_prepa['nom'].' '.$tabl_prepa['prenom'];
                $etude = $tabl_prepa['nom_etd'];
                $client = $tabl_prepa['ecglab'];
                $num_med = $tabl_prepa['num_med'];
                $sn = $tabl_prepa['sn'];
                $sni = $tabl_prepa['sni'];
                $modele = $tabl_prepa['lib_mod'];
                $nomkit = $tabl_prepa['nom_kit'];
     
                //on instancie un objet de lecture
                $objReader = PHPExcel_IOFactory::createReader('Excel2007');
     
                // le fichier template de l etude.
                $template = $etude.'_'.$modele;
     
                //
                // Debug echo
                //
                echo $template.' </br>';
                $template = valideChaine($template);
                echo $template.' </br>';
     
     
                //on charge le fichier qu'on veut lire
                $objPHPExcel = $objReader->load('./file/etd/etude_pharmatest/configuration_files/setuptemplate/'.$template.'.xlsx');
     
                // Set properties info dans les propietes du fichier
     
     
                echo "<p>".date('H:i:s') . " Set properties</p>";
                $objPHPExcel->getProperties()->setCreator("User")
        							 ->setLastModifiedBy("User")
        							 ->setTitle("Document de Preparation ".$num_med)
        							 ->setSubject("Modele ".$modele." Site : ".$nom_site)
                    ->setDescription("Office 2007 XLSX.\r\n")
        							 ->setKeywords("e".$idetd."_p".$idprepa."_s".$idsite."_a".$idapp)
        							 ->setCategory("idetude idprepa idsite idapp");
     
     
                //on modifie ce fichier Device Preparation Form
                echo "<p>".date('H:i:s') . " Set setCellValue</p>";
                $objPHPExcel->getActiveSheet()->setCellValue('B1',' # '.$idprepa.' / Device Preparation Form');
                $objPHPExcel->getActiveSheet()->setCellValue('B3',' '.$modele.'');
                $objPHPExcel->getActiveSheet()->setCellValue('B10',' '.$etude.' / '.$idetd.'');
                $objPHPExcel->getActiveSheet()->setCellValue('C5',' '.$num_med.' / '.$idapp.'');
                $objPHPExcel->getActiveSheet()->setCellValue('C6',' '.$sn.' ');
                $objPHPExcel->getActiveSheet()->setCellValue('C7',' '.$sni.' ');// Internal
                $objPHPExcel->getActiveSheet()->setCellValue('C8','  ');// Version
                $objPHPExcel->getActiveSheet()->setCellValue('C12',' '.$client.' ');
                $objPHPExcel->getActiveSheet()->setCellValue('C13',''.$nom_site.' / '.$idsite.'');
                $objPHPExcel->getActiveSheet()->setCellValue('C14',' '.$idkit.' - '.$nom_kit.' '); // Kit
                $objPHPExcel->getActiveSheet()->setCellValue('C15',''.$contact.'');
                $objPHPExcel->getActiveSheet()->setCellValue('C19','USER');
                $objPHPExcel->getActiveSheet()->setCellValue('C20',''.$dprepa.'');
     
                //on crée un nouveau fichier
                echo "<p>".date('H:i:s') . " Set createWriter</p>";
                $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
                // compatibilité avec office 2003
                echo "<p>".date('H:i:s') . " Set setOffice2003Compatibility</p>";
                $objWriter->setOffice2003Compatibility(true);
                // on le sauve  DANS LE FICHIER
                $fichiername = $dcrea.'_'.$i.'_'.$nom_site.'_'.$kp.'_'.$num_med.'.xlsx';
     
                //
                // Debug echo
                //
                echo "<p>".$fichiername.' </br>';
     
                $fichiername = valideChaine($fichiername);
                echo $fichiername.' </br>';
                $dosetd = valideChaine($etude);
                $dossite = valideChaine($nom_site);
     
                echo $dossite.' </br>';
     
                // teste l existence du repertoire ou le cree
                $path = './file/etd/'.$dosetd.'/configuration_files/'.$dossite.'/kit/';
                IsDir_or_CreateIt($path);
     
                $chemin =$path.$fichiername;
                echo $chemin.' </p>';
     
                echo "<p>".date('H:i:s') . " Set save</p>";
                $objWriter->save($chemin);
     
                 echo "<p>".$req_up_file.' </p>';
     
                if ( file_exists($chemin) ) {
                    $req_up_file = "UPDATE etude_prepa SET file_prepa = '$fichiername' WHERE id_prepa ='$idprepa'";
                    mysql_query($req_up_file) or die ('Erreur <br>".$req_up_file."<br>"'.$req_up_file.'"<br>"'.mysql_errno().' : ' . mysql_error());
                    echo '# '.$i.''.$req_up_file.' </br>';
                } else {
                    $err[$i][] = $chemin;
                }
     
                //$objWriter->Null;
                //$objPHPExcel->Null;
                $i++;
            }
        }
     
        return $err;
    }

  2. #2
    Membre chevronné Avatar de guigo
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    612
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 612
    Par défaut
    Essaye d'executer un echo de $res_prepakit direct en Sql.... Pour verifier ta requete.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    89
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Mars 2009
    Messages : 89
    Par défaut
    bah je fais un echo

    extrait de la fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
            //
            // debug
            //
            echo $strSQL_prepakit.' </br>';
    en citation au dessus du code de la fonction j ai mis l affichages des requêtes via echo.

  4. #4
    Membre chevronné Avatar de guigo
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    612
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 612
    Par défaut
    Oui mais moi g pas la bdd.
    Il faut que tu test si tes requêtes renvoie bien une ligne au moins. Sinon tu ne rentrera pas dans ta boucle.
    C'est pour ca test directe sur ton serveur sql

Discussions similaires

  1. Réponses: 2
    Dernier message: 06/06/2007, 21h50
  2. Resultat d'une requête dans un fichier
    Par SILO dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 31/10/2006, 16h59
  3. Réponses: 5
    Dernier message: 24/08/2006, 15h00
  4. Resultat d'une requête dans une variable
    Par issam16 dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 24/07/2006, 21h26
  5. Resultat d'une requête dans TEdit
    Par the watcher dans le forum Connexion aux bases de données
    Réponses: 5
    Dernier message: 08/09/2005, 18h00

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