Récupération de colonnes dans un CSV et création d'un nouveau fichier

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Récupération de colonnes dans un CSV et création d'un nouveau fichier

Re: Récupération de colonnes dans un CSV et création d'un nouveau fichier

par DoomDoom » 26 janv. 2024, 00:21

Merci pour tout Saian.

Tout fonctionne correctement.

Re: Récupération de colonnes dans un CSV et création d'un nouveau fichier

par Saian » 25 janv. 2024, 22:15

Si tu veux pas te prendre la tête, comme un bourrin tu fais un :
file_put_contents('Donnees.csv', str_replace('!#', ';', file_get_contents('Donnees.csv')));

Fais une copie du fichier avant au cas ou.

Ça peut être foireux si tu as des ; dans les valeurs, peut être pour ça que le séparateur a été définit à !#.

Sinon tu peux toujours lire le fichier ligne par ligne avec fgets et utiliser la fonction explode pour scinder la ligne en un tableau selon le séparateur de ton choix (tu pourras utiliser un séparateur à 2 caractères). Tant qu'une ligne "réelle" ne s'étale pas sur plusieurs ligne dans le fichier ça ne devrait pas poser de problème.

Re: Récupération de colonnes dans un CSV et création d'un nouveau fichier

par DoomDoom » 25 janv. 2024, 21:12

Merci, c'était bien le mode "r" qui posait problème. Je n'y avais pas prêté attention.
Tu m'enlèves une épine du pied !

Sans vouloir abuser, j'ai aussi un autre problème...
Le séparateur de mon csv d'origine est !#
Et forcément, ça cause une erreur 500 lorsque je l'utilise dans le script PHP.
while (($data = fgetcsv($handle, 1000, "!#")) !== FALSE)
Y aurait-il un moyen de contourner ça ?

Re: Récupération de colonnes dans un CSV et création d'un nouveau fichier

par Saian » 25 janv. 2024, 19:47

Salut, il peut y avoir plusieurs causes à ce résultat.

Il faudrait t'assurer que le rapport d'erreur est bien activé, fonction error_reporting.
https://www.php.net/manual/fr/function. ... orting.php.

Pour créer un fichier avec fopen le mode "r" n'est pas bon, ça ouvre le fichier en lecture seule, utilise plutôt le mode "w".
https://www.php.net/manual/fr/function.fopen.php.

Sinon le script a l'air cohérent si ce n'est que le séparateur par défaut est la "," et non le ";".
https://www.php.net/manual/fr/function.fputcsv.php.

Récupération de colonnes dans un CSV et création d'un nouveau fichier

par DoomDoom » 25 janv. 2024, 18:18

Bonjour à tous.

J'ai un fichier CSV qui contient de nombreuses colonnes, avec comme séparateur !#
J'essaye depuis plusieurs jours de récupérer certaines colonnes et de recréer un fichier CSV propre, avec comme séparateur ;

Je bloque totalement...
Je suis parti d'un script déjà existant et je n'arrive vraiment pas à m'en sortir.
J'ai un niveau ridicule en PHP ! J'ai débuté il n'y a qu'une semaine.
<?php
if (($handle_result = fopen("Donnees_result.csv", "r")) !== FALSE) 
{
if (($handle = fopen("Donnees.csv", "r")) !== FALSE) {
    while (($data = fgetcsv($handle, 1000, "!#")) !== FALSE) {
        
fputcsv($handle_result, array($data[0], $data[1]));
    }
    fclose($handle);
}
 fclose($handle_result);
}
?>
Je n'ai pas eu d'erreur sur ce script, mais je n'ai aucun résultat non plus.
Aucune création de fichier Donnees_result.csv

Si quelqu'un pourrait m'aider.
Merci d'avance