Bonjour,
Voici mon probleme j'ai besoin d'écrire dans un fichier CSV à partir d'une base de donnée.
<?php
require_once('../Connections/SiteNom_db_con.php');
//genere un fichier csv afin de pour rajouter rapidement tout les champs SEO de toutes les pages
header("Content-Type: text/csv;");
header('Content-Disposition: attachment; filename="Export_trad_page.csv"');
header("Content-Transfer-Encoding: UTF-8");
//recupere tous id des pages du site
$sql = "SELECT * FROM `page`";
$result_page=mysql_query($sql);
//Creer entete
?>
"page_id";"TITRE";"TEXTE";
<?php
//creer un ligne par SEO de page
while($row=mysql_fetch_array($result_page)){
echo utf8_decode("\n".'"'.mysql_real_escape_string($row['page_id']).'";"'.mysql_real_escape_string($row['TITRE']).'";"'.mysql_real_escape_string($row['TEXTE']).'"');
}
?>
Ce code me genere bien un fichier CSV sauf que les colonnes ne sont pas respecté car j'ai du contenu html dans mes champs en BDD donc lorsque je tombe sur un ; ça me fait changé de colonne.
De plus avec mysql_real_escape_string j'ai des \ de partout dans mon fichier CSV et sans cette fonction mon contenu s'affiche dans 60 000 cellules.
Je ne sais pas quoi faire.
Merci par avance pour votre aide
C'est bon je me suis débrouillé avec un 4eme paramettre dans fputcsv
Salut,
Pour commencer, n'utilise pas la fonction PHP mysql (http://php.net/manual/en/function.mysql-connect.php regarde le gros warning au début).
Ensuite, tu dois échapper les champs contenant du code HTML avec la fonction htmlspecialchars()
(http://php.net/manual/en/function.htmlspecialchars.php) avant de les insérer dans ton CSV. Enfin tu peux remplacer toutes les occurences de ;
dans ton HTML via un simple str_replace()
merci pour ta reponse mais je veux garder mes balise dans mon fichier csv avec la fonction htmlspecialchars() je vais les remplacer par des <
Bonjour,
Autre solution pour tes ; comme séparateurs de cellules, il suffit d'écrire ton CSV avec les | comme séparation.
Car les | se retrouve rarement dans du code html.
Pour cela il faut revoir la création de ton CSV et utiliser les méthodes faites pour cela.
Il te faut utiliser ces méthodes :
Voici un tutoriel pour créer un csv en php
Le tutoriel de Grafikart n'est pas adapter pour ce genre de programme.
Merci pour ton tuto mais moi je souhaite mettre dans différente cellule alors que la il me propose tout dans la meme.
Il suffit de l'adapter à vos besoins. Et je rappel que delimiteur = changement de cellule....
non justement dans le tuto délimitateur c'est juste la séparation entre les differents elements de la cellule (enfin si je me plante pas) Je viens de copier l'intégralité du tuto et j'ai 2 lignes
en a1 j'ai Adriana,Lima
et en b1 j'ai Candice,Swanepoel
et bien c'est bon.
Le délimiteur est ,
Attention dans un fichier CSV, vous n'aurez pas chaque élément dans une cellule.