Ecrire du html dans un fichier CSV en PHP

Par scomete, il y a 9 ans


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

12 réponses

scomete, il y a 9 ans

merci pour ta reponse mais je veux garder mes balise dans mon fichier csv avec la fonction htmlspecialchars() je vais les remplacer par des &lt

betaWeb, il y a 9 ans

A ce moment là, si ce sont les ; qui te posent problème, remplace-les tout simplement ;)

Carouge10, il y a 9 ans

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.

scomete, il y a 9 ans

Comment on fait?

betaWeb, il y a 9 ans

@Carouge10 +1

Carouge10, il y a 9 ans

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 :

  • fopen => pour ouvrir un fichier
  • fputcsv => Formate une ligne en CSV et l'écrit dans un fichier
  • fclose => pour fermer le fichier

Voici un tutoriel pour créer un csv en php

Le tutoriel de Grafikart n'est pas adapter pour ce genre de programme.

scomete, il y a 9 ans

Merci pour ton tuto mais moi je souhaite mettre dans différente cellule alors que la il me propose tout dans la meme.

Carouge10, il y a 9 ans

Il suffit de l'adapter à vos besoins. Et je rappel que delimiteur = changement de cellule....

scomete, il y a 9 ans

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

scomete, il y a 9 ans

C'est bon je me suis débrouillé avec un 4eme paramettre dans fputcsv

Carouge10, il y a 9 ans

et bien c'est bon.
Le délimiteur est ,
Attention dans un fichier CSV, vous n'aurez pas chaque élément dans une cellule.