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

PHP & Base de données Discussion :

Nombre de lignes dans un fichier CSV et détection des erreurs


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 221
    Par défaut Nombre de lignes dans un fichier CSV et détection des erreurs
    Bonjour

    Je cherche un moyen d'afficher toutes les erreurs de validation de données de mes différents champs en une seule fois...

    Pour commencer voici mon code : https://codeshare.io/aY0k3E

    Par exemple, imaginons que dans la colonne (champ) "type" il y a la première vide, la 3e composée de chiffres et la 5e composée de suite de caractères qui n'est pas valable !

    Au départ, j'ai pensé ajouter return $this->redirectToRoute(‘signalement.upload’); à la fin de la boucle, pour faire quelque chose du genre "si la boucle numero XX est égale au nombre de lignes de mon CSV, alors tu m'affiches le return", mais je n'arrive pas à obtenir le nombre exact de lignes de mon fichier CSV ! J'ai essayé count($records), mais j'obtiens un message d'erreur : count(): l'argument n° 1 ($value) doit être de type Countable|array, League\Csv\MapIterator fourniDe plus, j'aimerais faire la distinction entre un champ vide et un champ rempli d'une chaine de caractères inappropriés, car lorsque le champ est vide, le système indique qu'il s'agit d'une erreur de chaine de caractères, mais pas d'un champ vide.

    Merci

  2. #2
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 755
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 755
    Billets dans le blog
    10
    Par défaut
    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    <?php
     
    // Chemin d'accès au fichier CSV
    $filePath = 'mon_fichier.csv';
     
    // --- Vérifications de base ---
    if (!file_exists($filePath)) {
        die("Erreur : Le fichier '$filePath' n'existe pas.");
    }
     
    if (!is_readable($filePath)) {
        die("Erreur : Le fichier '$filePath' n'est pas lisible.");
    }
     
    // --- Lecture du contenu du fichier ---
    $fileContent = file_get_contents($filePath); // Pour des petits fichiers
    // Pour des fichiers plus volumineux, il est préférable de lire ligne par ligne sans tout charger en mémoire:
    // $fileHandle = fopen($filePath, 'r');
    // $fileContentLines = [];
    // while (($line = fgets($fileHandle)) !== false) {
    //     $fileContentLines[] = $line;
    // }
    // fclose($fileHandle);
    // $fileContent = implode("\n", $fileContentLines); // Reconstruct le contenu si nécessaire
     
    $lines = explode("\n", $fileContent); // ou $lines = $fileContentLines si lu ligne par ligne
     
     
    // Initialisation des compteurs
    $countAllLinesWithAnyChar = 0;
    $countLinesWithNonSpaceChar = 0;
     
    // --- Boucle pour compter les lignes ---
    foreach ($lines as $line) {
        // Nettoyer la ligne des espaces blancs au début et à la fin
        $trimmedLine = trim($line);
     
        // 1. Compter toutes les lignes contenant au moins un caractère quel qu'il soit
        // Si la ligne, même après avoir retiré les espaces, n'est pas vide, c'est qu'elle contient quelque chose.
        if ($trimmedLine !== '') {
            $countAllLinesWithAnyChar++;
     
            // 2. Compter toutes les lignes contenant au moins un caractère différent d'un espace
            // La même condition s'applique ici, car trim() enlève tous les caractères d'espacement blanc.
            // Si la ligne n'est pas vide après trim(), c'est qu'elle contenait au moins un caractère non-blanc.
            $countLinesWithNonSpaceChar++;
        }
    }
     
    // --- Affichage des résultats ---
    echo "<h1>Analyse du fichier CSV : " . htmlspecialchars($filePath) . "</h1>\n";
    echo "<p>Nombre total de lignes lues (incluant potentiellement vides) : " . count($lines) . "</p>\n";
    echo "<p><strong>Nombre de lignes contenant au moins un caractère : " . $countAllLinesWithAnyChar . "</strong></p>\n";
    echo "<p><strong>Nombre de lignes contenant au moins un caractère différent d'un espace : " . $countLinesWithNonSpaceChar . "</strong></p>\n";
     
    ?>

Discussions similaires

  1. Nombre de" ; "par ligne dans un fichier CSV
    Par delilou dans le forum Développement de jobs
    Réponses: 2
    Dernier message: 25/07/2011, 15h01
  2. Nombre de lignes dans un fichier
    Par theshark85 dans le forum C
    Réponses: 48
    Dernier message: 05/05/2006, 10h15
  3. [débutant] nombre de colonne dan sun fichier csv
    Par mandagor dans le forum C++
    Réponses: 18
    Dernier message: 15/06/2005, 15h42
  4. [Fichier] Nombre de ligne dans un fichier texte
    Par NewSer dans le forum Entrée/Sortie
    Réponses: 7
    Dernier message: 10/11/2004, 16h58
  5. Réponses: 2
    Dernier message: 02/03/2004, 19h38

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