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 :
Il lance bien la requête pour chaque idkit :Array
(
[1] => 39
[5] => 40
[9] => 41
)
voici ma fonction :
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
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; }
Partager