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 :

Erreur php : "Notice: Undefined offset: 1"


Sujet :

Langage PHP

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Avril 2013
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Erreur php : "Notice: Undefined offset: 1"
    Bonjour,


    Je souhaite importer des données présentes dans un fichier texte dans une base de données SQL.

    L'import se fait mais j'ai une erreur qui s'affiche constamment et je n'arrive pas à trouver d'où viens le problème:

    Voici l'erreur qui s'affiche: "Notice: Undefined offset: 1"

    De plus, lorsque j'insère mes données dans mon table de ma BDD, l'insertion de fait correctement mais une ligne vide s'ajoute en plus. Et je ne comprends pas pourquoi.

    Merci de votre aide .

    Voici mon code:
    Code : 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
     
    include("fonction.php");
    $bdd = connexion_base();
     
    $fichier = file("texte.txt");
     
    for($i=0;$i<count($fichier);$i++)
    {
        $ligne = $fichier[$i];
        $list = explode(" ",$ligne);
        $total_popul = $list[0];
        $nId = substr($total_popul, 4);
     
        $zone = $list[1];
        echo $zone;
     
     
        $requete = "INSERT INTO donnees(population,zone_rurale) VALUES ('$nId','$zone')";
        $resultats = $bdd->query($requete);
        $resultats->setFetchMode(PDO::FETCH_ASSOC);*/
    }
     if(mysql_error())
            {
               echo "Erreur dans la BDD : ".mysql_error();
               print "<br>Stop.";
               exit();
            }
           else
             print "Base mise a jour<br>";
     
     
         echo "<br>Importation terminée, avec succès.";
     
     
        ?>

    Merci d'avance pour votre aide.

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

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 104
    Points : 8 224
    Points
    8 224
    Billets dans le blog
    17
    Par défaut
    Voici l'erreur qui s'affiche: "Notice: Undefined offset: 1"
    Pas de ligne vide dans le fichier ?
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  3. #3
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 383
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 383
    Points : 10 411
    Points
    10 411
    Par défaut
    Essaies d'utiliser les drapeaux qui vont bien par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $fichier = file("texte.txt", FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
    A part cela ce serait le moment indiqué de faire des requêtes préparées.

    Et sinon dans l'idéal ce serait mieux que ton fichier texte soit au format CSV
    auquel cas il y a un exemple générique pour alimenter une bdd ici

  4. #4
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    1 051
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

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

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 051
    Points : 1 638
    Points
    1 638
    Par défaut
    Moi je pense que tu démarres ta boucle à 0, que tu boucles jusqu'à n lignes de ton fichier. Mais comme tu démarres à 0, alors c'est n-lignes - 1 l'offset.

    L''erreur offset doit signer que tu boucles une fois de trop :

    Code : 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
    include("fonction.php");
    $bdd = connexion_base();
     
    $fichier = file("texte.txt");
     
    for($i=0;$i<count($fichier-1);$i++)
    {
        $ligne = $fichier[$i];
        $list = explode(" ",$ligne);
        $total_popul = $list[0];
        $nId = substr($total_popul, 4);
     
        $zone = $list[1];
        echo $zone;
     
     
        $requete = "INSERT INTO donnees(population,zone_rurale) VALUES ('$nId','$zone')";
        $resultats = $bdd->query($requete);
        $resultats->setFetchMode(PDO::FETCH_ASSOC);*/
    }
     if(mysql_error())
            {
               echo "Erreur dans la BDD : ".mysql_error();
               print "<br>Stop.";
               exit();
            }
           else
             print "Base mise a jour<br>";
     
     
         echo "<br>Importation terminée, avec succès.";
     
     
        ?>
    Peut-être que $fichier-1 ne fonctionne pas, j'ai pas testé, mais l'idée est là ...
    Règle N° 1 : Si tout va bien, ne touchez à rien.

Discussions similaires

  1. [PHPLIB] Notice: Undefined offset: template.class.php on line 320 template
    Par diengkals dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 27/06/2012, 13h16
  2. [MySQL] Erreur de programmation PHP & MySQL (Notice: Undefined offset: 890)
    Par petit.quent dans le forum PHP & Base de données
    Réponses: 11
    Dernier message: 29/12/2011, 14h38
  3. [MySQL] Notice: Undefined offset
    Par gaetanc15 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 30/04/2009, 16h16
  4. erreur: "Notice: Undefined offset:"
    Par Sh1v3r dans le forum Langage
    Réponses: 2
    Dernier message: 17/06/2006, 22h48

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