Merci beaucoup ça marche
Après mise en ligne ca ne marche plus?
J ai le message d'erreur suivant:
voici ma page 16-telecharge-fichier-ods-oeuvres.php:Fatal error: Uncaught exception 'PHPExcel_Reader_Exception' with message 'Could not open C:/Users/CK/Documents/liste_oeuvre.ods for reading! File does not exist.' in /homepages/8//PHPExcel/Classes/PHPExcel/Reader/OOCalc.php:74 Stack trace: #0 /homepages/8//PHPExcel/Classes/PHPExcel/IOFactory.php(268): PHPExcel_Reader_OOCalc->canRead('C:/Users/CK/Doc...') #1 /homepages/8//PHPExcel/Classes/PHPExcel/IOFactory.php(191): PHPExcel_IOFactory::createReaderForFile('C:/Users/CK/Doc...') #2 /homepages/8//16-telecharge-fichier-ods-oeuvres.php(61): PHPExcel_IOFactory::load('C:/Users/CK/Doc...') #3 {main} thrown in /homepages/8//PHPExcel/Classes/PHPExcel/Reader/OOCalc.php on line 74
.htaccess:
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
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328 <?php // Variable de session // ------------------- session_start(); if (!isset($_SESSION['login'])) { header ('Location: index-fr.html'); exit(); } header('Content-type: text/html; charset=UTF-8'); // Include des fichiers PHPExcel require 'PHPExcel/Classes/PHPExcel.php'; require_once 'PHPExcel/Classes/PHPExcel/IOFactory.php'; // Importation classeur ods dans la table // -------------------------------------- // Connexion MYSQL // --------------- include('./connexion-a2bis.php'); // comme include inclut le fichier specifie, mais la difference est que si le code a deja ete inclus, il ne le sera pas une seconde fois // Si le formulaire a été soumis if(isset($_POST['Form_file_Submit'])) { $erreur = 0; // Si un fichier a été téléchargé if (is_uploaded_file($_FILES['fileToUpload']['tmp_name'])) { // Si le fichier a une extension ods if (strtolower(pathinfo ($_FILES['fileToUpload']['name'], PATHINFO_EXTENSION)) == 'ods') { // SUPPRESSION des anciens enregistrements // --------------------------------------- // Connexion MYSQL // Preparer la requete $sql = 'DELETE FROM liste_oeuvre'; $requete1 = $connexion_bdd ->prepare($sql); //Compiler et executer la requete $requete1->execute(); //Clore la requete preparee $requete1 -> closeCursor(); $requete1 = NULL; // Ouvre le fichier téléchargé et ENREGISTRE les nouveaux enregistrements // ---------------------------------------------------------------------- // si une seule feuille de donnees $objPHPExcel = PHPExcel_IOFactory::load("C:/Users/CK/Documents/liste_oeuvre.ods"); $worksheet = $objPHPExcel->setActiveSheetIndex(0); $worksheetTitle = $worksheet->getTitle(); $highestRow = $worksheet->getHighestRow(); $highestColumn = $worksheet->getHighestColumn(); $highestColumnIndex = PHPExcel_Cell::columnIndexFromString($highestColumn); $nrColumns = ord($highestColumn) - 64; // requete prepare $stmt = $connexion_bdd->prepare('INSERT INTO liste_oeuvre (id_photo, affichage, disponibilite, type, type_fr, type_en, format, intitule, themes, code_themes, rewriting_fr, rewriting_en, themes_en, technique, technique_en, hauteur, largeur, annee_creation, serie, epreuve_artiste, epreuve_artiste_en, technique_detail, slide, nom_image, ext_image) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)'); // insertion de chaque ligne each row for ($row=2; $row<=$highestRow; $row++) { $val=array(); for ($col = 0; $col < $highestColumnIndex; ++ $col) { $cell = $worksheet->getCellByColumnAndRow($col, $row); $val[$col] = $cell->getValue(); // remarque: $val[$col] <=> $val[] } $stmt->execute($val); } } else { $MsgErreur_ods = "<p style='color:red'>Le fichier n est pas un fichier ods.</p>"; } } if($erreur > 0) echo "<p style='color:red'>".$erreur." lignes n'ont pas été insérées car le nombre de champs du ods ne correspond pas au nombre de champs de la bdd.</p>"; } // UPLOAD D IMAGES Upload-Ajax-ABCI // -------------------------------- // Si le formulaire a été soumis // Avec : // * dossier Destination_Upload1 a la racine du site pour recevoir les images // * dossier Upload-Ajax-ABCI a la racine du site. Il contient: // * dossier Javascript. Il contient les fichiers // * jquery.js // * UploadAjaxABCI.js // * dossier Php_Upload. Il contient les fichiers // * func_RedimImage.php // * UploadAjaxABCI_Php_Load_Redimensions_optimise.php // * fichier UploadAjaxABCIServeur.php // * dossier Upload_Temp // Utilise le fichier "Php_Upload/UploadAjaxABCI_Php_Load_Redimensions_optimise.php" comme destination Ajax // header('Content-type: text/html; charset=UTF-8'); $UpAbci_fragmentSize = 4194304;// taille maximale des fragments (doit être inférieur ou égal à la configuration 'upload_max_filesize' du serveur). Les fichiers inférieurs à cette taille n'auront pas de sauvegarde temporaire. $UpAbci_uniqidForm = hash("sha256",uniqid(rand(), true)); // Jeton de formulaire (token); $_SESSION['UploadAjaxABCI'][$UpAbci_uniqidForm]['token'] = 1; ?> <?php // --------------------- // REPERAGE PAGE EN COURS // --------------------- $page_en_cours=basename(__FILE__); // --------------------- // IP du visiteur $ipvisiteur = $_SERVER["REMOTE_ADDR"]; // --------------------- // Format d'affichage de la date (au choix) //$date = date ( "d/m/Y H:i:s" ); // avec les heures:minutes:secondes $date = date ( "d/m/Y à H:i" ); //$date = date ( "d/m/Y" ); // --------------------- ?> <!DOCTYPE html> <!--on declare au validator le langage utilisé: html5--> <html lang="fr"> <?php include("0-head.php"); ?> <body> <div class="container"> <?php include("0-entete.php"); ?> <?php include("0-menu.php"); ?> <br> <hr> <hr> <div class="row"> <div class="col-lg-6 col-md-12 col-sm-12 col-xs-12"> <h1>Gestion de la liste des oeuvres, Administration du site</h1> Bienvenue <?php echo htmlentities(trim($_SESSION['login'])); ?> <br /> <a href="15-admin-deconnexion-fr.html" target="_self" title="Déconnexion">Déconnexion</a> <br /> <a href="15-admin-membre-fr.html" target="_self" title="Inscription">Retour à l'Acceuil, Administration du site</a> </div> </div> <br /><br /><br /> <div class="row"> <div class="col-lg-8"> <h4>Télécharger la liste des oeuvres (base au format Open Office, extension .ods)</h4> <form action="#" method="post" enctype="multipart/form-data"> <input type="file" name="fileToUpload"> <input type="submit" value="Upload Fichier" name="Form_file_Submit"> </form> <?php if(!empty($MsgErreur_ods)) { ?> <p class="message_erreur_yellow"><?php echo $MsgErreur_ods; ?></p> <?php } ?> </div> <div class="col-lg-4"> <a href="16-telecharge-fichier-ods-oeuvres-fr.html" target="_self" title="Inscription">Actualisation de la page pour afficher les images déja importées</a> </div> </div> <div class="row"> <div class="col-lg-12"> <div class="table-responsive"> <table class="table table-striped"> <h4>Liste des enregistrements (associer une photo)</h4> <tr> <th>id_photo</th> <th>nom_image</th> <th>image actuelle</th> <th>telecharge nouvelle image</th> </tr> <?php // Connexion MYSQL // --------------- include('./connexion-a2bis.php'); // Update du champs nom_image avec SELECT puis UPDATE // -------------------------------------------------- $sql1 = 'SELECT id_photo, type, intitule FROM liste_oeuvre'; try { $sql1 = $connexion_bdd->prepare($sql1); $sql1->execute(); /* Lie par les numéros de colonnes */ $sql1->bindColumn(1, $id_photo); $sql1->bindColumn(2, $type); $sql1->bindColumn(3, $intitule); /* Lie par les noms de colonnes */ $sth_update = $connexion_bdd->prepare("UPDATE liste_oeuvre SET nom_image=:nom_image WHERE id_photo=:id_photo"); while ($row = $sql1->fetch(PDO::FETCH_BOUND)) { include("16-str-replace-fr.html"); $intitule = str_replace($cible, $rempl, $intitule); // préserve le maximum de caractères utiles $intitule = mb_strtolower($intitule,'UTF-8'); // mb_strtolower: met tous les caractères en minuscules $intitule = preg_replace('#[^.a-z0-9_-]+#i', '-', $intitule); // uniquement alphanumérique et . et _ et - $intitule = preg_replace('#_{2,}#','_',$intitule); // supprime les occurences successives de '_' $intitule = rtrim($intitule,'_'); // Supprime le dernier "_" $sth_update->bindValue(':nom_image', $id_photo . '_' . $type . '_' . $intitule, PDO::PARAM_STR); $sth_update->bindValue(':id_photo', $id_photo); $sth_update->execute(); } } catch (PDOException $e) { print $e->getMessage(); } // Afficher le tableau des enregistrements // ----------------------------------------------------------------- //Preparer la requete $sql2 = 'SELECT * FROM liste_oeuvre'; $requete2 = $connexion_bdd ->prepare($sql2); //Compiler et executer la requete $requete2->execute(); //Recuperer toutes les donnees retournees foreach($requete2->fetchAll() as $donnee) {?> <tr> <td><?php echo $donnee['id_photo'] ?></td> <td><?php echo $donnee['nom_image'] ?></td> <td> <?php if ($donnee['ext_image']!='') { echo ('<img src="../Upload-Ajax-ABCI/Destination_Upload1/' . $donnee['nom_image'] . '_mini.' . $donnee['ext_image'] . '" alt="' . $donnee['nom_image'] . '" height="42" width="42">'); }?> </td> <td> <!-- Formulaire d'importation d'image d'oeuvre ---------------------------------------------> <div> <form id="form_redim<?=$donnee['id_photo']?>" action="#" method="post"> <!-- <fieldset style="border:2px solid #000;border-radius:5px;padding:1em">--> <!-- <legend>Upload</legend>--> <input type="file" name="upload_simple" multiple="multiple" /> <input type="hidden" value="<?=$UpAbci_fragmentSize?>" name="UpAbci_fragmentSize" /> <input type="hidden" value="<?=$UpAbci_uniqidForm?>" name="UpAbci_uniqidForm" /> <!-- pour identifier la ligne: récupérer cette valeur côté php (UploadAjaxABCIServeur.pp) en faisant $nom_image_name_file= urldecode($_POST['nom_image_name_file']); urldecode: décode une chaîne encodée URL--> <input type="hidden" value="<?=$donnee['nom_image']?>" name="nom_image_name_file" /> <!-- pour identifier la ligne: récupérer cette valeur côté php (UploadAjaxABCI_Php_Load_Redimensions_optimise.pp) en faisant $id_photo_id_file= urldecode($_POST['id_photo_id_file']); urldecode: décode une chaîne encodée URL--> <input type="hidden" value="<?=$donnee['id_photo']?>" name="id_photo_id_file" /> <input type="submit" value="Envoyer"/> <!-- Bloc conteneur du retour d informations --> <div id="reponse_upload<?=$donnee['id_photo']?>"> <!--information du fichier que l on affiche uniquement si un fichier est sélectionné, pour éviter la barre de progression graphique vide si soumission du formulaire sans fichier--> <div class="UpAbci_infosFile" style="display:none;margin-top:1em;clear:both" data-upabcicss-select-file="display:block;"> <hr> <span class="UpAbci_stop" style="color:red;cursor:pointer;font-size:0.8em;" data-upabcicss-result="display:none">stop </span> <span class="UpAbci_name"></span><!-- nom du fichier --> <progress class="UpAbci_progressionG"></progress> <!-- progression graphique --> <span class="UpAbci_status" data-upabcicss-result-ok="color:green;font-weight:bold">en attente</span><!-- status (important sinon pas de retour d information en cas d erreur) --> <span class="UpAbci_imgPreview" style="float:right"></span><!-- vignettes si le poids total ne dépasse pas la config javascript définie plus bas à 100Mo --> <p style="display:none;" data-upabcicss-result-partial="display:block">- sauvegardé : <span class="UpAbci_backup">0 Mo</span></p><!-- S affichera si une sauvegarde existe en cas d arrêr ou d erreur --> </div> </div> <!-- </fieldset>--> </form> </div> </td> </tr> <!-- Script javascript pour upload images ----------------------------------------> <script type="text/javascript"> $(function(){ // Initialisation de la classe javascript (identifiant formulaire, destination ajax, identifiant réponse) var destination_ajax = "Upload-Ajax-ABCI/Php_Upload/UploadAjaxABCI_Php_Load_Redimensions_optimise.php"; var up = new UploadAjaxABCI("#form_redim<?=$donnee['id_photo']?>",destination_ajax,"#reponse_upload<?=$donnee['id_photo']?>"); // Extensions autorisées up.config.filesExtensions = ["jpg","jpeg","png","gif"]; // S affichera si le redimensionnement et l upload sont ok. up.info.status.ok = "Upload et redimensionnements OK"; // Message d erreur si problème serveur. Sera complété par le message renvoyé par le serveur pour plus de précision. up.info.status.errorServer = "Echec du traitement. "; // les aperçus demandent pas mal de ressource, vous devriez baisser cette valeur ou supprimer la prévisualisation pour les portables. up.config.imgPreviewMaxSizeTotal = 100; // en Mo poids total maximum de toutes les photos. Au delà les vignettes ne seront pas affichées. up.config.imgPreviewMaxWidth = 100; // en pixels, largeur maximale de l aperçu up.config.imgPreviewMaxHeight = 100;// en pixels, hauteur maximale de l aperçu // Démarrage de la fonction, DOM chargé up.Start()}); </script> <?php ;} ?> </table> </div> </div> <!-- Script javascript pour upload images ----------------------------------------> <script src="Upload-Ajax-ABCI/Javascript/jquery.js"></script> <script src="Upload-Ajax-ABCI/Javascript/UploadAjaxABCI.js"></script> </body> </html>
Pouvez vous m aidez?
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 # Le serveur doit suivre les liens symboliques (instruction facultative): Options +FollowSymlinks # Activation du module de réécriture d'URL (instruction qui indique que nous souhaitons utiliser le module de réécriture d'URL) : RewriteEngine on # ... RewriteRule ^15-admin-fr.html$ /15-admin.php [L] RewriteRule ^15-admin-deconnexion-fr.html$ /15-admin-deconnexion.php [L] RewriteRule ^15-admin-inscription-fr.html$ /15-admin-inscription.php [L] RewriteRule ^15-admin-membre-fr.html$ /15-admin-membre.php [L] RewriteRule ^16-str-replace-fr.html$ /16-str-replace.php [L] RewriteRule ^16-telecharge-evenement-fr.html$ /16-telecharge-evenement.php [L] RewriteRule ^16-telecharge-fichier-ods-expos-fr.html$ /16-telecharge-fichier-ods-expos.php [L] RewriteRule ^16-telecharge-fichier-ods-oeuvres-fr.html$ /16-telecharge-fichier-ods-oeuvres.php [L] RewriteRule ^16-telecharge-image-article-fr.html$ /16-telecharge-image-article.php [L] RewriteRule ^16-telecharge-fichier-ods-carnet-fr.html$ /16-telecharge-fichier-ods-carnet.php [L] # ...
Cordialement
Visiblement le fichier "C:/Users/CK/Documents/liste_oeuvre.ods" n'existe pas, ou alors ton serveur web n'a pas les droits suffisant pour y accéder.
N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP
non non le fichier existe bien et en appelant mon hébergeur apparemment y a pas de problème de droit d accès
Tu es hebergé sur un serveur Windows ?
N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP
Si tu es sur un serveur Linux, il n'y a pas de c:\users ... tu nous parles d'un fichier qui est sur ton ordinateur ?
N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP
Bonjour,
Ci dessous ma page pour télécharger un fichier liste_expo.ods et actualiser la table liste_expo dans phpMyAdmin:
Je peux pas télécharger un fichier qui se trouve sur un dossier de mon ordinateur
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
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388 <?php // Variable de session // ------------------- session_start(); if (!isset($_SESSION['login'])) { header ('Location: index.php'); exit(); } header('Content-type: text/html; charset=UTF-8'); // Include des fichiers PHPExcel require 'PHPExcel/Classes/PHPExcel.php'; require_once 'PHPExcel/Classes/PHPExcel/IOFactory.php'; // Importation classeur ods dans la table // -------------------------------------- // Connexion MYSQL // --------------- include('./connexion-a2bis.php'); // Si le formulaire a été soumis if(isset($_POST['Form_file_Submit'])) { $erreur = 0; // Si un fichier a été téléchargé if (is_uploaded_file($_FILES['fileToUpload']['tmp_name'])) // $_FILES: variable de téléchargement de fichier via HTTP // $_FILES['userfile']['name']: Le nom original du fichier, tel que sur la machine du client web. // $_FILES['userfile']['type']: Le type MIME du fichier, si le navigateur a fourni cette information ("image/gif"...). // $_FILES['userfile']['size']: La taille, en octets, du fichier téléchargé. // $_FILES['userfile']['tmp_name']: Le nom temporaire du fichier qui sera chargé sur la machine serveur. // $_FILES['userfile']['error']: Le code d'erreur associé au téléchargement de fichier. { // Si le fichier a une extension ods if (strtolower(pathinfo ($_FILES['fileToUpload']['name'], PATHINFO_EXTENSION)) == 'ods') { // SUPPRESSION des anciens enregistrements // --------------------------------------- // Connexion MYSQL // Preparer la requete $sql = 'DELETE FROM liste_expo'; $requete1 = $connexion_bdd ->prepare($sql); //Compiler et executer la requete $requete1->execute(); //Clore la requete preparee $requete1 -> closeCursor(); $requete1 = NULL; // Ouvre le fichier téléchargé et ENREGISTRE les nouveaux enregistrements // ---------------------------------------------------------------------- // si une seule feuille de donnees $objPHPExcel = PHPExcel_IOFactory::load("liste_expo.ods"); $worksheet = $objPHPExcel->setActiveSheetIndex(0); $worksheetTitle = $worksheet->getTitle(); $highestRow = $worksheet->getHighestRow(); $highestColumn = $worksheet->getHighestColumn(); $highestColumnIndex = PHPExcel_Cell::columnIndexFromString($highestColumn); $nrColumns = ord($highestColumn) - 64; // requete prepare $stmt = $connexion_bdd->prepare('INSERT INTO liste_expo (id_expo, en_ligne, annee_expo, mois_expo, mois_expo_en, commune, intitule_expo, intitule_expo_en, lien_article_expo, site_lien, nom_expo, intitule_expo2, presence_affiche, nom_affiche, ext_image_affiche, presence_article, nom_article, ext_image_article) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)'); // insertion de chaque ligne each row for ($row=2; $row<=$highestRow; $row++) { $val=array(); for ($col = 0; $col < $highestColumnIndex; ++ $col) { $cell = $worksheet->getCellByColumnAndRow($col, $row); $val[$col] = $cell->getValue(); // remarque: $val[$col] <=> $val[] } $stmt->execute($val); } } else { $MsgErreur_ods = "<p style='color:red'>Le fichier n est pas un fichier ods.</p>"; } } if($erreur > 0) echo "<p style='color:red'>".$erreur." lignes n'ont pas été insérées car le nombre de champs du ods ne correspond pas au nombre de champs de la bdd.</p>"; } // UPLOAD D IMAGES Upload-Ajax-ABCI // -------------------------------- // Si le formulaire a été soumis // Avec : // * dossier Destination_Upload1 a la racine du site pour recevoir les images // * dossier Upload-Ajax-ABCI a la racine du site. Il contient: // * dossier Javascript. Il contient les fichiers // * jquery.js // * UploadAjaxABCI.js // * dossier Php_Upload. Il contient les fichiers // * func_RedimImage.php // * UploadAjaxABCI_Php_Load_Redimensions_optimise.php // * fichier UploadAjaxABCIServeur.php // * dossier Upload_Temp // Utilise le fichier "Php_Upload/UploadAjaxABCI_Php_Load_Redimensions_optimise.php" comme destination Ajax // header('Content-type: text/html; charset=UTF-8'); $UpAbci_fragmentSize = 4194304;// taille maximale des fragments (doit être inférieur ou égal à la configuration 'upload_max_filesize' du serveur). Les fichiers inférieurs à cette taille n'auront pas de sauvegarde temporaire. $UpAbci_uniqidForm = hash("sha256",uniqid(rand(), true)); // Jeton de formulaire (token); $_SESSION['UploadAjaxABCI'][$UpAbci_uniqidForm]['token'] = 1; ?> <?php // --------------------- // REPERAGE PAGE EN COURS // --------------------- $page_en_cours=basename(__FILE__); // --------------------- // IP du visiteur $ipvisiteur = $_SERVER["REMOTE_ADDR"]; // --------------------- // Format d'affichage de la date (au choix) //$date = date ( "d/m/Y H:i:s" ); // avec les heures:minutes:secondes //$date = date ( "d/m/Y à H:i" ); //$date = date ( "d/m/Y" ); // --------------------- ?> <!DOCTYPE html> <!--on declare au validator le langage utilisé: html5--> <html lang="fr"> <?php include("0-head.php"); ?> <body> <div class="container"> <?php include("0-entete.php"); ?> <?php include("0-menu.php"); ?> <br> <hr> <hr> <div class="row"> <div class="col-lg-6 col-md-12 col-sm-12 col-xs-12"> <h1>Gestion de la liste des expositions, Administration du site</h1> Bienvenue <?php echo htmlentities(trim($_SESSION['login'])); ?> <br /> <a href="15-admin-deconnexion.php" target="_self" title="Déconnexion">Déconnexion</a> <br /> <a href="15-admin-membre.php" target="_self" title="Inscription">Retour à l'Acceuil, Administration du site</a> </div> </div> <br /><br /><br /> <div class="row"> <div class="col-lg-8"> <h4>Télécharger la liste des expos (base au format Open Office, extension .ods)</h4> <form action="#" method="post" enctype="multipart/form-data"> <input type="file" name="fileToUpload"> <input type="submit" value="Upload Fichier" name="Form_file_Submit"> </form> <?php if(!empty($MsgErreur_ods)) { ?> <p class="message_erreur_yellow"><?php echo $MsgErreur_ods; ?></p> <?php } ?> </div> <div class="col-lg-4"> <a href="16-telecharge-fichier-ods-expos.php" target="_self" title="Inscription">Actualisation de la page pour afficher les images déja importées</a> </div> </div> <div class="row"> <div class="col-lg-12"> <div class="table-responsive"> <table class="table table-striped"> <h4>Liste des enregistrements (associer une photo)</h4> <tr> <th>id_expo</th> <th>nom_expo</th> <th>affiche expo</th> <th>telecharge nouvelle affiche</th> </tr> <?php // Connexion MYSQL // --------------- include('./connexion-a2bis.php'); // Update du champs nom_expo avec concatenation de plusieurs champs // ----------------------------------------------------------------- // Preparer la requete $sql0 = "UPDATE liste_expo SET intitule_expo2 = CONCAT(mois_expo, '_', commune)"; $requete0 = $connexion_bdd ->prepare($sql0); // Compiler et executer la requete $requete0->execute(); // Update du champs nom_expo avec SELECT puis UPDATE // -------------------------------------------------- $sql1 = 'SELECT id_expo, annee_expo, intitule_expo2 FROM liste_expo'; try { $sql1 = $connexion_bdd->prepare($sql1); $sql1->execute(); /* Lie par les numéros de colonnes */ $sql1->bindColumn(1, $id_expo); $sql1->bindColumn(2, $annee_expo); $sql1->bindColumn(3, $intitule_expo2); /* Lie par les noms de colonnes */ $sth_update = $connexion_bdd->prepare("UPDATE liste_expo SET nom_expo=:nom_expo WHERE id_expo=:id_expo"); while ($row = $sql1->fetch(PDO::FETCH_BOUND)) { include("16-str-replace.php"); $intitule_expo2 = str_replace($cible, $rempl, $intitule_expo2); // préserve le maximum de caractères utiles $intitule_expo2 = mb_strtolower($intitule_expo2,'UTF-8'); // mb_strtolower: met tous les caractères en minuscules $intitule_expo2 = preg_replace('#[^.a-z0-9_-]+#i', '-', $intitule_expo2); // uniquement alphanumérique et . et _ et - $intitule_expo2 = preg_replace('#_{2,}#','_',$intitule_expo2); // supprime les occurences successives de '_' $intitule_expo2 = rtrim($intitule_expo2,'_'); // Supprime le dernier "_" $sth_update->bindValue(':nom_expo', 'expo_' . $id_expo . '_' . $annee_expo . '_' . $intitule_expo2, PDO::PARAM_STR); $sth_update->bindValue(':id_expo', $id_expo); $sth_update->execute(); } } catch (PDOException $e) { print $e->getMessage(); } // Update du champs nom_affiche // ----------------------------------------------------------------- // Preparer la requete $sql1bis = "UPDATE liste_expo SET nom_affiche = nom_expo"; $requete1 = $connexion_bdd ->prepare($sql1bis); // Compiler et executer la requete $requete1->execute(); // Update du champs nom_article avec SELECT puis UPDATE // -------------------------------------------------- $sql1 = 'SELECT id_expo, annee_expo, intitule_expo2 FROM liste_expo'; try { $sql1 = $connexion_bdd->prepare($sql1); $sql1->execute(); /* Lie par les numéros de colonnes */ $sql1->bindColumn(1, $id_expo); $sql1->bindColumn(2, $annee_expo); $sql1->bindColumn(3, $intitule_expo2); /* Lie par les noms de colonnes */ $sth_update = $connexion_bdd->prepare("UPDATE liste_expo SET nom_article=:nom_article WHERE id_expo=:id_expo"); while ($row = $sql1->fetch(PDO::FETCH_BOUND)) { include("16-str-replace.php"); $intitule_expo2 = str_replace($cible, $rempl, $intitule_expo2); // préserve le maximum de caractères utiles $intitule_expo2 = mb_strtolower($intitule_expo2,'UTF-8'); // mb_strtolower: met tous les caractères en minuscules $intitule_expo2 = preg_replace('#[^.a-z0-9_-]+#i', '-', $intitule_expo2); // uniquement alphanumérique et . et _ et - $intitule_expo2 = preg_replace('#_{2,}#','_',$intitule_expo2); // supprime les occurences successives de '_' $intitule_expo2 = rtrim($intitule_expo2,'_'); // Supprime le dernier "_" $sth_update->bindValue(':nom_article', 'art_' . $id_expo . '_' . $annee_expo . '_' . $intitule_expo2, PDO::PARAM_STR); $sth_update->bindValue(':id_expo', $id_expo); $sth_update->execute(); } } catch (PDOException $e) { print $e->getMessage(); } // Afficher le tableau des enregistrements // ----------------------------------------------------------------- //Preparer la requete $sql2 = 'SELECT * FROM liste_expo'; $requete2 = $connexion_bdd ->prepare($sql2); //Compiler et executer la requete $requete2->execute(); //Recuperer toutes les donnees retournees foreach($requete2->fetchAll() as $donnee) {?> <tr> <td><?php echo $donnee['id_expo'] ?></td> <td><?php echo $donnee['nom_expo'] ?></td> <td> <?php if ($donnee['presence_affiche']=='oui') { echo ('<img src="../Upload-Ajax-ABCI/Destination_Upload1/' . $donnee['nom_expo'] . '_mini.' . $donnee['ext_image_affiche'] . '" alt="' . $donnee['nom_expo'] . '" height="42" width="42">'); } ?> </td> <td> <?php if (($donnee['presence_affiche']=='oui')) { ?> <!-- Formulaire d'importation d'image affiche d exposition ---------------------------------------------------------> <div> <form id="form_redim<?=$donnee['id_expo']?>" action="#" method="post"> <!-- <fieldset style="border:2px solid #000;border-radius:5px;padding:1em">--> <!-- <legend>Upload</legend>--> <input type="file" name="upload_simple" multiple="multiple" /> <input type="hidden" value="<?=$UpAbci_fragmentSize?>" name="UpAbci_fragmentSize" /> <input type="hidden" value="<?=$UpAbci_uniqidForm?>" name="UpAbci_uniqidForm" /> <!-- pour identifier la ligne: récupérer cette valeur côté php (UploadAjaxABCIServeur.pp) en faisant $nom_expo_name_file= urldecode($_POST['nom_expo_name_file']); urldecode: décode une chaîne encodée URL--> <input type="hidden" value="<?=$donnee['nom_expo']?>" name="nom_expo_name_file" /> <!-- pour identifier la ligne: récupérer cette valeur côté php (UploadAjaxABCI_Php_Load_Redimensions_optimise.pp) en faisant $id_expo_id_file= urldecode($_POST['id_expo_id_file']); urldecode: décode une chaîne encodée URL--> <input type="hidden" value="<?=$donnee['id_expo']?>" name="id_expo_id_file" /> <input type="submit" value="Envoyer" name="Form_affiche_Submit"/> <!-- Bloc conteneur du retour d informations --> <div id="reponse_upload<?=$donnee['id_expo']?>"> <!--information du fichier que l on affiche uniquement si un fichier est sélectionné, pour éviter la barre de progression graphique vide si soumission du formulaire sans fichier--> <div class="UpAbci_infosFile" style="display:none;margin-top:1em;clear:both" data-upabcicss-select-file="display:block;"> <hr> <span class="UpAbci_stop" style="color:red;cursor:pointer;font-size:0.8em;" data-upabcicss-result="display:none">stop </span> <span class="UpAbci_name"></span><!-- nom du fichier --> <progress class="UpAbci_progressionG"></progress> <!-- progression graphique --> <span class="UpAbci_status" data-upabcicss-result-ok="color:green;font-weight:bold">en attente</span><!-- status (important sinon pas de retour d information en cas d erreur) --> <span class="UpAbci_imgPreview" style="float:right"></span><!-- vignettes si le poids total ne dépasse pas la config javascript définie plus bas à 100Mo --> <p style="display:none;" data-upabcicss-result-partial="display:block">- sauvegardé : <span class="UpAbci_backup">0 Mo</span></p><!-- S affichera si une sauvegarde existe en cas d arrêr ou d erreur --> </div> </div> <!-- </fieldset>--> </form> </div> </td> </tr> <!-- Script javascript pour upload images ----------------------------------------> <script type="text/javascript"> $(function(){ // Initialisation de la classe javascript (identifiant formulaire, destination ajax, identifiant réponse) var destination_ajax = "Upload-Ajax-ABCI/Php_Upload/UploadAjaxABCI_Php_Load_Redimensions_optimise.php"; var up = new UploadAjaxABCI("#form_redim<?=$donnee['id_expo']?>",destination_ajax,"#reponse_upload<?=$donnee['id_expo']?>"); // Extensions autorisées up.config.filesExtensions = ["jpg","jpeg","png","gif"]; // S affichera si le redimensionnement et l upload sont ok. up.info.status.ok = "Upload et redimensionnements OK"; // Message d erreur si problème serveur. Sera complété par le message renvoyé par le serveur pour plus de précision. up.info.status.errorServer = "Echec du traitement. "; // les aperçus demandent pas mal de ressource, vous devriez baisser cette valeur ou supprimer la prévisualisation pour les portables. up.config.imgPreviewMaxSizeTotal = 100; // en Mo poids total maximum de toutes les photos. Au delà les vignettes ne seront pas affichées. up.config.imgPreviewMaxWidth = 100; // en pixels, largeur maximale de l aperçu up.config.imgPreviewMaxHeight = 100;// en pixels, hauteur maximale de l aperçu // Démarrage de la fonction, DOM chargé up.Start()}); </script> <?php } ?> <?php ;} ?> </table> </div> </div> <!-- Script javascript pour upload images ----------------------------------------> <script src="Upload-Ajax-ABCI/Javascript/jquery.js"></script> <script src="Upload-Ajax-ABCI/Javascript/UploadAjaxABCI.js"></script> </body> </html>
Par contre quand je mets le fichier liste_expo.ods a la racine du site côté hébergeur (1 and 1) le téléchargement fonctionne et ma table mysql est actualisée.
Quand je vais dans parcourir et que je choisi le fichier liste_expo.ods dans un des fichiers de mon ordinateur ça ne marche pas:
j ai une page vide avec comme url .../16-telecharge-fichier-ods-expos.php#
Si je spécifie l'emplacement du fichier sur mon ordinateur:
idem ... j ai une page vide avec comme url .../16-telecharge-fichier-ods-expos.php#
Code : Sélectionner tout - Visualiser dans une fenêtre à part $objPHPExcel = PHPExcel_IOFactory::load("C:/wamp/www/.../admin2bis/liste_expo.ods");
C'est bizarre je comprends pas...
Comment faire?
Pouvez vous m aidez?
Cordialement
la méthode "load" fonctionne avec l'emplacement du fichier sur le serveur, pas l'emplacement de départ sur ton client.
Il faut que tu vois ou ton classe d'upload en ajax met les fichiers reçus.
N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP
Merci ... peux tu préciser?
ma page de téléchargement fait appel à PHPExcel/Classes/PHPExcel.php
la ligne de code $objPHPExcel = PHPExcel_IOFactory::load("liste_expo.ods"); fait appel à PHPExcel_IOFactory qui se trouve dans le fichier PHPExcel/Classes/PHPExcel/IOFactory.php... qui a son tour fait appel à PHPExcel/Autoloader.php.
J ai beau lire ces pages je voit pas comment modifier ...?
Aidez moi svp ...
Salut,
Dans ton code php en haut de page tu fais :
mais je ne vois pas que tu exploite $_FILES['fileToUpload']['tmp_name'] quelque part donc ton upload ne sert à rien. Si l'upload est sensé contenir ton fichier ods et en suivant la remarque de sabotage j'aurais tendance à essayer PHPExcel_IOFactory::load($_FILES['fileToUpload']['tmp_name']);.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 if(isset($_POST['Form_file_Submit'])) { $erreur = 0; // Si un fichier a été téléchargé if (is_uploaded_file($_FILES['fileToUpload']['tmp_name'])) //...
Merci
et cette syntaxeest elle bonne pour vérifier le nom du fichier téléchargé?
Code : Sélectionner tout - Visualiser dans une fenêtre à part if (strtolower(pathinfo ($_FILES['fileToUpload']['name'])) == 'liste_expo') {...}
Ben fait d'abord afficher la variable $_FILES['fileToUpload']['name'] pour voir ce qu'elle contient.
après je suis pas certain qu'il soit intéressant de faire un tri sur le nom du fichier uploadé, mais ça c'est à toi de voir.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager