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 :

Compter le nombre de lignes avec critères d'un .csv


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2019
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Novembre 2019
    Messages : 19
    Par défaut Compter le nombre de lignes avec critères d'un .csv
    Bonjour,

    J'ai un fichier .csv séparé par des ; qui comporte 14 colonnes et que j'importe en BDD.
    Une fois importé, je fais un contrôle de cohérence entre le nombre de lignes du fichier et le nombre de lignes dans la BDD.
    Mes deux scripts comptent bien le nombre de lignes respectives.
    Cependant, j'ai une erreur non bloquante lors du comptage du nombre de lignes du fichier :
    Notice: Undefined offset: 2 in C:\wamp64\www\goo\import_spreadsheet.php on line 39
    La colonne 2 du .csv correspond à une colonne de dates.
    Voici la ligne 39 :
    Code VBA : Sélectionner tout - Visualiser dans une fenêtre à part
     if ($i > 1 && substr($colonne[2],-7,2) == $_SESSION["mois"]){
    Et voici le script :
    Code VBA : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
            $lignesFichier = fopen($_FILES["file"]["tmp_name"], "r");
            $nbLignes = array();
            $i = 0;
            while (!feof($lignesFichier)){
                $i++;
                $lignes=    fgets($lignesFichier);
                $colonne = explode(";", $lignes);
                if ($i > 1 && substr($colonne[2],-7,2) == $_SESSION["mois"]){
                    $nbLignes[] = $colonne[2];
                }
            }
            $_SESSION["lignes"] = count($nbLignes);
            fclose($lignesFichier);
    Comment se fait-il que j'ai cette erreur et en même temps un nombre de lignes compté qui est juste ?

    Merci pour vos éclairages !

    Goo

  2. #2
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 322
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 322
    Billets dans le blog
    17
    Par défaut
    On parcourt un CSV avec fgetcsv()
    Nutilise pas feof() (une horreur cette fonction), vérifie simplement si le retour de fgetcsv() n'est pas false
    Si l'erreur persiste sans feof() alors affiche les lignes

  3. #3
    Membre averti
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2019
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Novembre 2019
    Messages : 19
    Par défaut
    Splendide Seb !
    Je bannis donc cette fonction.
    Voici le script mis à jour, et qui ne rapporte plus aucune erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
           $lignesFichier = fopen($_FILES["file"]["tmp_name"], "r");
            $nbLignes = array();
            $i = 0;
            while (($colonne = fgetcsv($lignesFichier, 1000, ";")) !== FALSE){
                $i++;
                if ($i > 1 && substr($colonne[2],-7,2) == $_SESSION["mois"]){
                    $nbLignes[] = $colonne[2];
                }
            }
            $_SESSION["lignes"] = count($nbLignes);
            fclose($lignesFichier);
    Merci beaucoup pour ton aide !

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 19/02/2016, 15h21
  2. Compter le nombre de lignes ayant des critères similaires
    Par JohnJ_M dans le forum Développement de jobs
    Réponses: 5
    Dernier message: 21/11/2014, 10h10
  3. compter le nombre d'éntree avec critére sur un champ
    Par gastoncs dans le forum Requêtes
    Réponses: 1
    Dernier message: 30/03/2012, 07h47
  4. Réponses: 2
    Dernier message: 10/12/2009, 17h05

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