résolu : PHP foreach dans array, pour générer tableau Excel |
Bienvenue invité ( Connexion | Inscription )
résolu : PHP foreach dans array, pour générer tableau Excel |
6 Mar 2019, 18:56
Message
#1
|
|
Macbidouilleur de bronze ! Groupe : Membres Messages : 311 Inscrit : 17 Oct 2006 Lieu : Strasbourg, France Membre no 70 694 |
Salut,
Le but final est de générer un fichier Excel avec cette librairie : PHP_XLSXWriter. Ça fonctionne très bien à la main : Code $data = array( array('year','month','amount'), array('2003','1','220'), array('2003','2','153.5'), ); $writer = new XLSXWriter(); $writer->writeSheet($data); $writer->writeToFile('output.xlsx'); Sauf que chez moi je dois remplir $data avec une variable qui contient un tableau. Jusque là tout va bien, puis que si je fais un print_r() Code print '<pre>'; print_r($montableau); print '</pre>'; J'obtiens le résultat attendu : Code Array ( [0] => Array ( [id] => 13 [date] => 20191231235959 [deleg] => 33 [pren] => PRÉNOM [name] => NOM [mail] => [email protected] [fonc] => delegue_college_elus [stru] => STRUCTURE [vill] => VILLE [pouv] => 1 [pouvnom] => PERSPOUV [pres] => 0 ) [1] => Array ( [id] => 14 [date] => 20191231235959 [deleg] => 33 [pren] => PRÉNOM [name] => NOM [mail] => [email protected] [fonc] => delegue_college_elus [stru] => STRUCTURE [vill] => VILLE [pouv] => 0 [pouvnom] => PERSPOUV [pres] => 1 ) ) Maintenant si je veux combiner les deux : Code $data = array( array( foreach( $result as $id => $ubtable ) { print $ubtable['date']; } ), ); Ça plante avec l'erreur suivante : «Parse error: syntax error, unexpected 'foreach' (T_FOREACH), expecting ')' in /Users/blabla... fichier machin ligne truc» Une idée ? Merci Ce message a été modifié par clarusad - 7 Mar 2019, 18:11. |
|
|
6 Mar 2019, 19:00
Message
#2
|
|
Macbidouilleur de bronze ! Groupe : Membres Messages : 263 Inscrit : 31 Aug 2002 Lieu : Saint-Jean-de-Luz Membre no 3 355 |
Pas trop le temps là, mais ton foreach à rien à faire dans ton array() …
Ce message a été modifié par Philippe64 - 6 Mar 2019, 19:01. -------------------- En activité : Macbook pro 15" Core I7 à 2.8Ghz de 2015 - Macbook pro 13" Core I5 à 2.5Ghz - Macbook pro 15" Core duo de 2006 qui marche toujours hyper bien - iPhone 6s - iPad - iPad Mini
En Panne : Imac 27 Pouces Core I7 à 3.4Ghz - mid 2011 (je cherche un écran) A la retraite : Imac C2D 24 Pouces (blanc) à 2.33 Ghz - iBook14" 800 Mhz - Quicksilver 733 - G3 bleu et blanc - Macintosh Classic - iPhone 3G - iPhone 4s Crea64 : creation de site internet à Saint-Jean-de-Luz (64) |
|
|
6 Mar 2019, 20:00
Message
#3
|
|
Macbidouilleur de bronze ! Groupe : Membres Messages : 311 Inscrit : 17 Oct 2006 Lieu : Strasbourg, France Membre no 70 694 |
Ça progresse :
Code $n=0;
foreach( $result as $id => $ubtable ) { $tab[$n][0] = $ubtable['date']; $n++; } Ce message a été modifié par clarusad - 6 Mar 2019, 20:03. |
|
|
8 Mar 2019, 05:10
Message
#4
|
|
Macbidouilleur d'Or ! Groupe : Membres Messages : 3 307 Inscrit : 17 Jul 2004 Lieu : Nantes Membre no 21 109 |
Bonjour,
J'ai aussi essayé mais je me heurte à un autre problème : le fichier généré comporte des caractères "anti-XML" qui provoquent une erreur. Je n'arrive à "voir" quels sont ces caractères que je dois remplacer dans ma chaine de caractères (issus d'une base ORACLE) afin que le fichier XLSX (XML) soit bien généré. J'ai pensé à : ' , " / et \ que j'ai remplacé avec la fonction substr, mais je dois en oublier encore. Merci pour vos conseils Ce message a été modifié par Pixel44 - 8 Mar 2019, 05:10. -------------------- |
|
|
8 Mar 2019, 05:43
Message
#5
|
|
Macbidouilleur d'Or ! Groupe : Modérateurs Messages : 19 423 Inscrit : 22 Jul 2004 Lieu : Louvain-la-Neuve (Gaule Gelbique) Membre no 21 291 |
-------------------- ¶ MacBook Pro 14’’ 2021, M1 Pro, 16 Go/1 To – macOS 12.6 “Monterey” ¶ MacBook Pro 15’’ mi-2010 Core i5 2,53 GHz, 8 Go/SSD Samsung 860EVO 1 To – Mac OSX 10.6.8 ¶ Power Macintosh G3 beige de bureau, rev.1 @ 233MHz, 288 Mo/4Go – MacOS 9.1 + carte PCI IDE/ATA Tempo 66 Acard 6260 avec HD interne Maxtor 80 Go + graveur interne CDRW/DVD LG GCC-4520B + tablette A4 Wacom UD-0608-A + LaCie ElectronBlueIV 19" + HP ScanJet 6100C ¶ B-Box 3 + HP LaserJet 4000 N
¶ La recherche dans MacBidouille vous paraît obscure ? J'ai rédigé une proposition de FAQ. Le moteur logiciel a un peu changé depuis mais ça peut aider quand même. … Les corsaires mettent en berne… |
|
|
8 Mar 2019, 05:43
Message
#6
|
|
Macbidouilleur d'Or ! Groupe : Membres Messages : 3 307 Inscrit : 17 Jul 2004 Lieu : Nantes Membre no 21 109 |
pas encore...
-------------------- |
|
|
8 Mar 2019, 09:30
Message
#7
|
|
Macbidouilleur de bronze ! Groupe : Membres Messages : 263 Inscrit : 31 Aug 2002 Lieu : Saint-Jean-de-Luz Membre no 3 355 |
si avant de convertir tes données, il te faut traiter tes valeur pour qu'elles soient compatible XML.
du genre : Code $my_array = [……]; // Ton tableau de départ $opt_array = []; // Ton futur tableau optimisé XML foreach($my_array as $key=>$val) { $opt_array[$key] = strip_tags($val); } du coup $opt_array est une copie de ton tableau d'origine, mais sans html / xml dedans -------------------- En activité : Macbook pro 15" Core I7 à 2.8Ghz de 2015 - Macbook pro 13" Core I5 à 2.5Ghz - Macbook pro 15" Core duo de 2006 qui marche toujours hyper bien - iPhone 6s - iPad - iPad Mini
En Panne : Imac 27 Pouces Core I7 à 3.4Ghz - mid 2011 (je cherche un écran) A la retraite : Imac C2D 24 Pouces (blanc) à 2.33 Ghz - iBook14" 800 Mhz - Quicksilver 733 - G3 bleu et blanc - Macintosh Classic - iPhone 3G - iPhone 4s Crea64 : creation de site internet à Saint-Jean-de-Luz (64) |
|
|
8 Mar 2019, 13:15
Message
#8
|
|
Macbidouilleur d'Or ! Groupe : Membres Messages : 3 307 Inscrit : 17 Jul 2004 Lieu : Nantes Membre no 21 109 |
En fait ce sont les accents qui sont refusés
-------------------- |
|
|
8 Mar 2019, 13:59
Message
#9
|
|
Macbidouilleur de bronze ! Groupe : Membres Messages : 263 Inscrit : 31 Aug 2002 Lieu : Saint-Jean-de-Luz Membre no 3 355 |
Dans ce cas, c'est un problème d'encodage.
Il faut que tu te renseignes pour savoir quel encodage doit être utilisé avec le module de conversion excel. (UT8 ou autre) Ensuite, tu vérifies quel encodage tu utilises dans ta base de données et tu te débrouilles pour convertir comme il faut. par exemple, pour passer de ISO-8859-1 en UTF8 : utf8_encode() http://php.net/manual/fr/function.utf8-encode.php et l'inverse : utf8_decode() http://php.net/manual/fr/function.utf8-decode.php et tu peux reprendre le code que je t'ai déjà donné en exemple en remplaçant strip_tag par utf8_encode (ou utf8_decode) -------------------- En activité : Macbook pro 15" Core I7 à 2.8Ghz de 2015 - Macbook pro 13" Core I5 à 2.5Ghz - Macbook pro 15" Core duo de 2006 qui marche toujours hyper bien - iPhone 6s - iPad - iPad Mini
En Panne : Imac 27 Pouces Core I7 à 3.4Ghz - mid 2011 (je cherche un écran) A la retraite : Imac C2D 24 Pouces (blanc) à 2.33 Ghz - iBook14" 800 Mhz - Quicksilver 733 - G3 bleu et blanc - Macintosh Classic - iPhone 3G - iPhone 4s Crea64 : creation de site internet à Saint-Jean-de-Luz (64) |
|
|
8 Mar 2019, 18:59
Message
#10
|
|
Macbidouilleur d'Or ! Groupe : Membres Messages : 3 307 Inscrit : 17 Jul 2004 Lieu : Nantes Membre no 21 109 |
merci pour le coup de main : ce fut bien un problème d'encodage et tout fonctionne avec la fonction : utf8_encode
-------------------- |
|
|
Nous sommes le : 10th June 2024 - 13:16 |