IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Modifier fichier.csv en php


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Homme Profil pro
    Editeur digital
    Inscrit en
    Novembre 2011
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Editeur digital
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Novembre 2011
    Messages : 14
    Points : 12
    Points
    12
    Par défaut Modifier fichier.csv en php
    Bonjour...

    Un conseil, une assistance, je prends tout, merci...

    Quotidiennement des fichiers d’annonces immobilières "*.csv*"* sont déposés sur notre serveur FTP.
    Une extension WordPress dédiée en .php permet d’importer ces fichiers dans la base et alimenter le site d’annonces nouvelles.
    Certains de ces fichiers .csv sont fournis avec deux caractères de délimitation "! #", ce qui bloque l'extension et ne permet plus d'ajouter des filtres de tris lors de l’importation comme par exemple : n’importer que des biens > 100m².

    Afin de solutionner ce problème un script ".php"* implémenté dans le fichier function.php du thème WordPress a été écrit. Son but effectuer une moulinette pour changer les deux caractères de délimitation "! #" des fichiers .csv , en un seul caractère par exemple "," .

    Problème, il ne fonctionne pas correctement. Au lieu d’écraser et de remplacer les fichiers traités, il crée des copies qu’il positionne à la racine du serveur FTP, sans pour autant modifier les caractères de délimitation.

    Le script est consultable en pièce jointe, merci pour vos avis ou votre assistance.

    Merci
    Didier

    Pour info, un second script avec le même objectif (du même développeur), écrit en bash et déposé dans le dossier des fichiers .csv, ne fonctionne pas non plus*…
    Fichiers attachés Fichiers attachés

  2. #2
    Expert éminent Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 858
    Points : 6 556
    Points
    6 556
    Par défaut
    Peux-tu poster un extrait de ton fichier csv original (en modifiant les informations confidentiels au besoin)? Quels sont le séparateur de champs, le séparateur d'enregistrement, le caractère protection et celui d'échappement?
    Pourquoi ne pas avoir posté dans la rubrique PHP, voire Wordpress?

    Peux-tu également poster ton extension dédiée?
    Brachygobius xanthozonus
    Ctenobrycon Gymnocorymbus

  3. #3
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2020
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Avril 2020
    Messages : 34
    Points : 115
    Points
    115
    Par défaut
    Salut,

    As-tu trouvé une solution?

    Je pense avoir identifié un premier problème :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $csv = file_get_contents($path . "annonces.csv");
    // ...
    file_put_contents($csv, $new_csv); // $csv n'est pas le nom du fichier, mais son contenu (à moins que le CSV ne contienne qu'un nom). 
    // ...
    rename($csv, $path . $filename . '_new.csv'); // idem.
    Remplacer $csv par $path . "annonces.csv" dans les lignes indiquées ci-dessus pourrait être un bon début.

    Pour le reste, mon avis rejoint le commentaire précédent.

  4. #4
    Membre à l'essai
    Homme Profil pro
    Editeur digital
    Inscrit en
    Novembre 2011
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Editeur digital
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Novembre 2011
    Messages : 14
    Points : 12
    Points
    12
    Par défaut
    Citation Envoyé par CosmoKnacki Voir le message
    Peux-tu poster un extrait de ton fichier csv original (en modifiant les informations confidentiels au besoin)? Quels sont le séparateur de champs, le séparateur d'enregistrement, le caractère protection et celui d'échappement?
    Pourquoi ne pas avoir posté dans la rubrique PHP, voire Wordpress?

    Peux-tu également poster ton extension dédiée?
    -------------
    Merci pour la réponse
    En lien le .csv zippé tel qu'il est réceptionné sur le serveur FTP et l'extension wp "wpallimport"... les séparateurs de champs sont par défaut "!#"... quant aux caractères de protection et d'échappement je ne sais pas ?
    Rectificatif le script.php "moulinette" est déposé dans le dossier des fichiers .csv à traiter, sur le serveur FTP et lancé avec une tache Cron...et non pas ajouté dans le fichier "function.php" du thème comme mentionné dans le premier post.
    merci
    Didier
    Apparemment l'extension ne s'importe pas, trop lourd pour le forum ?
    Fichiers attachés Fichiers attachés

  5. #5
    Membre à l'essai
    Homme Profil pro
    Editeur digital
    Inscrit en
    Novembre 2011
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Editeur digital
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Novembre 2011
    Messages : 14
    Points : 12
    Points
    12
    Par défaut
    Citation Envoyé par houd.ini Voir le message
    Salut,

    As-tu trouvé une solution?

    Je pense avoir identifié un premier problème :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $csv = file_get_contents($path . "annonces.csv");
    // ...
    file_put_contents($csv, $new_csv); // $csv n'est pas le nom du fichier, mais son contenu (à moins que le CSV ne contienne qu'un nom). 
    // ...
    rename($csv, $path . $filename . '_new.csv'); // idem.
    Remplacer $csv par $path . "annonces.csv" dans les lignes indiquées ci-dessus pourrait être un bon début.

    Pour le reste, mon avis rejoint le commentaire précédent.
    ----------

    Bonjour et merci pour la proposition qui ne fonctionne pas à cause d'une erreur de syntaxe, ligne 12 du script_11.php ?

  6. #6
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    17 451
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 17 451
    Points : 43 096
    Points
    43 096
    Par défaut
    Tu as juste à charger le fichier (file_get_contents ira très bien) et utiliser str_replace pour remplacer #! par ; ou , selon le traitement effectué après.
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  7. #7
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2020
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Avril 2020
    Messages : 34
    Points : 115
    Points
    115
    Par défaut
    Citation Envoyé par DThx26 Voir le message
    ----------

    Bonjour et merci pour la proposition qui ne fonctionne pas à cause d'une erreur de syntaxe, ligne 12 du script_11.php ?
    Ligne 12? Désolé, mauvaise formulation de ma part: j'aurais du préciser qu'il fallait remplacer uniquement dans les 2 lignes où j'ai fait un commentaire (la première fait bien le job).

  8. #8
    Membre à l'essai
    Homme Profil pro
    Editeur digital
    Inscrit en
    Novembre 2011
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Editeur digital
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Novembre 2011
    Messages : 14
    Points : 12
    Points
    12
    Par défaut
    Citation Envoyé par houd.ini Voir le message
    Ligne 12? Désolé, mauvaise formulation de ma part: j'aurais du préciser qu'il fallait remplacer uniquement dans les 2 lignes où j'ai fait un commentaire (la première fait bien le job).
    ------------------
    On dirait bien que ça fonctionne, bravo et merci beaucoup...

  9. #9
    Membre à l'essai
    Homme Profil pro
    Editeur digital
    Inscrit en
    Novembre 2011
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Editeur digital
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Novembre 2011
    Messages : 14
    Points : 12
    Points
    12
    Par défaut
    Citation Envoyé par chrtophe Voir le message
    Tu as juste à charger le fichier (file_get_contents ira très bien) et utiliser str_replace pour remplacer #! par ; ou , selon le traitement effectué après.
    --------------
    Merci pour la proposition, le problème est résolu par houd.ini

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [CSV] Créer un fichier CSV en PHP
    Par reedbedroom dans le forum Langage
    Réponses: 2
    Dernier message: 01/04/2009, 14h10
  2. Importer un fichier .csv avec php et PDO
    Par Touny dans le forum Langage
    Réponses: 6
    Dernier message: 05/03/2009, 17h45
  3. Réponses: 1
    Dernier message: 10/01/2008, 13h52
  4. [CSV] Créer un fichier csv depuis php
    Par jbidou88 dans le forum Langage
    Réponses: 5
    Dernier message: 07/05/2007, 17h41
  5. [CSV] Fichier CSV en PHP
    Par rimeh dans le forum Langage
    Réponses: 1
    Dernier message: 11/01/2007, 12h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo