|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Futur Membre du Club
![]() Étudiant Inscription : novembre 2012 Messages : 84 ![]() |
Bonjour à tous,
j'exporte dans une feuille Excel différentes données issues de ma BD. Certaines sont des chaînes de caractères pouvant contenir des caractères spéciaux (des ' notamment). Je les gère actuellement à l'aide de la fonction mysql_real_escape_string. Cependant j'aimerai ne plus avoir dans mes cellules les antislashs dûs à l'échappement. Existe-il une autre fonction ou une autre méthode que je pourrai appliquer? D'avance, merci. |
|
|
00
|
|
|
#2 |
![]() ![]() Vincent Inscription : juillet 2005 Messages : 16 478 ![]() |
Si tu as des \ dans ta base de données c'est que tu as echappé tes données deux fois.
|
|
|
00
|
|
|
#3 |
|
Futur Membre du Club
![]() Étudiant Inscription : novembre 2012 Messages : 84 ![]() |
Non je n'ai pas de \ dans ma BD, ils sont présents sur la feuille Excel une fois exportée.
Si je transfère directement ces données sur la feuille, j'ai un problème de mise en forme (passages à la lignes...) que je n'ai pas en utilisant mysql_real_escape_string. En revanche mes cellules contiennent des \ devant chaque ' par exemple, ce que je voudrai supprimer. |
|
|
00
|
|
|
#4 |
![]() ![]() Vincent Inscription : juillet 2005 Messages : 16 478 ![]() |
Pourrais-tu expliciter les problèmes de mise en forme que tu rencontres alors ?
|
|
|
00
|
|
|
#5 | ||||
|
Futur Membre du Club
![]() Étudiant Inscription : novembre 2012 Messages : 84 ![]() |
Comme dis dans le précédent post, si je n'utilise pas mysql_real_escape_string j'ai des passages à la ligne non voulus dans mon fichier Excel : le contenu de certaines celulles finit à la ligne suivante :
au lieu d'avoir un tableau de ce style : Code :
Code :
|
||||
|
|
00
|
|
|
#6 |
![]() ![]() |
Salut,
comment fais-tu pour exporter tes données ? Un bout de code ?
__________________
# Dans la Création, tout est permis mais tout n'est pas utile... |
|
00
|
|
|
#7 | ||
|
Futur Membre du Club
![]() Étudiant Inscription : novembre 2012 Messages : 84 ![]() |
Bonjour,
voici un extrait (le tableau exporté contient près de 50 colonnes) : Code :
|
||
|
|
00
|
|
|
#8 |
![]() ![]() |
euh, tu n'utilises aucune librairie tierce pour générer un fichier excel valide ?
Ce que tu envoies c'est du csv avec la tabulation pour séparateur et comme tu peux t'en douter c'est assez différent du format Excel. Au lieu de mettre le header sur excel, essaies en le remplaçant par
__________________
# Dans la Création, tout est permis mais tout n'est pas utile... |
|
10
|
|
|
#9 |
|
Futur Membre du Club
![]() Étudiant Inscription : novembre 2012 Messages : 84 ![]() |
oui c'était bien un csv et non un excel.
J'ai changé la ligne concernée mais j'ai toujours ce problème d'escape : - avec j'ai des \ devant mes ' - sans j'ai un fichier plein d'erreurs Pour la librairie ce n'est peut-être pas nécessaire puisque le format csv me convient mais je voudrai des cellules propres (sans les \). |
|
|
00
|
|
|
#10 |
![]() ![]() Vincent Inscription : juillet 2005 Messages : 16 478 ![]() |
Une chose sûre c'est que mysql_real_escape_string n'est pas la fonction adaptée pour des données provenant d'une requête.
Il faudrait que tu ouvres le CSV obtenu avec un editeur de texte pour voir exactement ce qui est produit. Utilise le point-virgule comme séparateur, c'est le séparateur reconnu par défaut sur Excel en français. |
|
|
00
|
|
|
#11 |
|
Futur Membre du Club
![]() Étudiant Inscription : novembre 2012 Messages : 84 ![]() |
Le problème est qu'il interprête les ' ou certains espaces (comme des nombres écrit comme ça : x xxx) comme fin de lignes. Je trouve donc la fin du contenu de ma cellule dans la première cellule de la ligne suivante et les cellules qui suivaient dans les cellules suivantes (est-ce clair?).
J'ai changé les /t par des ; et je me retrouve avec toute la ligne dans la première cellule (les ; séparant les différents champs). |
|
|
00
|
|
|
#12 |
|
Futur Membre du Club
![]() Étudiant Inscription : novembre 2012 Messages : 84 ![]() |
Re-bonjour,
J'ai peut-être un début d'explication : Les retours à la lignes se produisent en fait lorsqu'il y a un retour à la ligne dans la cellule (Les données proviennent à la base d'un fichier Excel que j'ai importé sur MySQL). Exemple : - Lorsque ma cellule contient le texte : "bravo alberto, c'est bien" aucun problème - Lorsque ma cellule contient le texte : "bravo alberto c'est bien" La je trouve le "bravo alberto" à sa place dans la bonne cellule et le "c'est bien" dans la première cellule de la ligne suivante. Quand j'utilise mysql_real_escape_string, j'ai "bravo alberto\nc\'est bien" et je voudrai "bravo alberto, c'est bien". J'espère avoir été un peu plus clair avec cet exemple. Je vous ai peut-être induit en erreur avec mes ' qui n'étaient pas le problème (a priori). |
|
|
00
|
|
|
#13 |
![]() ![]() Vincent Inscription : juillet 2005 Messages : 16 478 ![]() |
Tu peux alors remplacer les retours à la lignes :
Code :
$ligne= str_replace(trim($ligne), "\n", " "); |
|
|
10
|
|
|
#14 |
|
Futur Membre du Club
![]() Étudiant Inscription : novembre 2012 Messages : 84 ![]() |
Bonjour,
ça fonctionne quand je l'utilise ainsi : Code :
$ligne=str_ireplace("\n"," ",trim($ligne)); J'ai remarqué que ces cellules ont en commun de : - soit contenir un nombre suivi d'un retour à la ligne exemple1 : "bravo 12.45 alberto" => alberto se retrouve dans la première cellule de la ligne suivante - soit contenir un point ou une virgule, précédé d'un nombre et suivi d'un retour à la ligne exemple2 : " bravo 12.45. alberto" => pareil |
|
|
00
|
|
|
#15 |
![]() ![]() Vincent Inscription : juillet 2005 Messages : 16 478 ![]() |
Utilise fputcsv() elle se charge de protéger les chaines de caractère.
|
|
|
00
|
|
|
#16 | ||
|
Futur Membre du Club
![]() Étudiant Inscription : novembre 2012 Messages : 84 ![]() |
Je ne connaissais pas cette fonction, j'ai donc procédé méthodiquement en suivant l'exemple ici.
Mon code est le suivant: Code :
|
||
|
|
00
|
|
|
#17 |
![]() ![]() Vincent Inscription : juillet 2005 Messages : 16 478 ![]() |
Enlève tes apostrophes autour des variables.
|
|
|
10
|
|
|
#18 |
|
Futur Membre du Club
![]() Étudiant Inscription : novembre 2012 Messages : 84 ![]() |
Mon fichier reste vide.
|
|
|
00
|
|
|
#19 |
|
Futur Membre du Club
![]() Étudiant Inscription : novembre 2012 Messages : 84 ![]() |
Bon je suis revenu à la première méthode qui fonctionnait presque. J'ai modifié manuellement les cellules qui posaient problème je vais ajouter le str_ireplace sur les nouvelles saisies.
Merci à sabotage et rawsrc pour leur précieuse aide et leur temps. Sujet résolu |
|
|
00
|
Copyright © 2000-2013 - www.developpez.com