Erreur undefined offset
Fermé
prof_info
Messages postés
8
Date d'inscription
vendredi 16 janvier 2009
Statut
Membre
Dernière intervention
8 mai 2009
-
17 janv. 2009 à 00:11
prof_info - 20 janv. 2009 à 13:49
prof_info - 20 janv. 2009 à 13:49
A voir également:
- Erreur undefined offset
- Erreur 0x80070643 - Guide
- Erreur 0x80070643 Windows 10 : comment résoudre le problème de la mise à jour KB5001716 - Guide
- Erreur 1001 outlook - Guide
- Erreur 10016 epson - Forum Imprimante
- Erreur g030 - Forum Bbox Bouygues
5 réponses
arth
Messages postés
9374
Date d'inscription
mardi 27 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2016
1 291
17 janv. 2009 à 03:36
17 janv. 2009 à 03:36
Tu es sûr que $liste est bien un tableau?
Je m'y connais pas trop en php mais il ne faudrait pas plutôt faire $liste[] = ?
A mon avis il ne voit qu'un seul élément pour ta variable, c'est pour cela qu'il ne tique pas sur [0] en revanche il n'a pas l'aire de voir plus d'une seule case si tant est que liste est bien sous forme de tableau.
Pour être sûr affiche $liste puis $liste[0] et si les valeurs sont les même alors tu as un problème d'explode je crois.
Je m'y connais pas trop en php mais il ne faudrait pas plutôt faire $liste[] = ?
A mon avis il ne voit qu'un seul élément pour ta variable, c'est pour cela qu'il ne tique pas sur [0] en revanche il n'a pas l'aire de voir plus d'une seule case si tant est que liste est bien sous forme de tableau.
Pour être sûr affiche $liste puis $liste[0] et si les valeurs sont les même alors tu as un problème d'explode je crois.
Bonjour
Ça m'étonnait beaucoup que ton tableau s'affiche correctement.. Alors j'ai essayé ton programme et effectivement, le contenu du fichier n'est pas CSV est affiché correctement. Ça n'est pas possible avec ton programme.
Mais pourquoi ne dis-tu pas tout ? Ta description de ton, problème est fausse : tu ne dis pas qu'il affiche taille=1, mais surtout que les 3 erreurs que tu mentionnes sont répétées 9 fois. Enfin tu dis que ton tableau est correct alors qu'il ne l'est pas : tout est dans la colonne code !
Une prochaine fois, pour obtenir de l'aide, donne une description complète et exacte de ce qui se passe.
Et ne donne pas un programme source avec les numéros de ligne : Comment veux-tu qu'on le recopie pour l'essayer ? Il faut enlever tous les numéros de ligne à la main ! Heureusement que c'est un double post, j'ai repris le programme de ton message d'hier.
Pour en revenir à ton problème, voici la raison. Tu as recopié ce script depuis quelque part sans comprendre comment il marche, tu as modifié, alors tu as obtenu n'importe quoi.
$liste = explode( ";",$ligne); : Cette ligne sert à découper chaque ligne lue de ton fichier au niveau des points-virgules. Or, tu n'as pas de points virgules dans ton fichier : les lignes ne sont pas découpées en champs.
Si tu veux obtenir le bon résultat, il faut que tu découpes au niveau des '='.
Ça va déjà mieux marcher mais ça n'est pas tout. Les lignes faites de ======= ne peuvent pas être traitées comme les autres : elles ne correspondent pas à des informations à afficher et il faut les écarter.
Enfin, pour information, mais ça n'empêche pas ton script de marcher, le csv ce n'est pas ça. Si ton fichier doit vraiment être du CSV, tu ferais mieux d'utiliser les fonctions CSV du PHP, qui traitent correctement, en particulier, le cas où il y aurait un = dans les données.
Ça m'étonnait beaucoup que ton tableau s'affiche correctement.. Alors j'ai essayé ton programme et effectivement, le contenu du fichier n'est pas CSV est affiché correctement. Ça n'est pas possible avec ton programme.
Mais pourquoi ne dis-tu pas tout ? Ta description de ton, problème est fausse : tu ne dis pas qu'il affiche taille=1, mais surtout que les 3 erreurs que tu mentionnes sont répétées 9 fois. Enfin tu dis que ton tableau est correct alors qu'il ne l'est pas : tout est dans la colonne code !
Une prochaine fois, pour obtenir de l'aide, donne une description complète et exacte de ce qui se passe.
Et ne donne pas un programme source avec les numéros de ligne : Comment veux-tu qu'on le recopie pour l'essayer ? Il faut enlever tous les numéros de ligne à la main ! Heureusement que c'est un double post, j'ai repris le programme de ton message d'hier.
Pour en revenir à ton problème, voici la raison. Tu as recopié ce script depuis quelque part sans comprendre comment il marche, tu as modifié, alors tu as obtenu n'importe quoi.
$liste = explode( ";",$ligne); : Cette ligne sert à découper chaque ligne lue de ton fichier au niveau des points-virgules. Or, tu n'as pas de points virgules dans ton fichier : les lignes ne sont pas découpées en champs.
Si tu veux obtenir le bon résultat, il faut que tu découpes au niveau des '='.
Ça va déjà mieux marcher mais ça n'est pas tout. Les lignes faites de ======= ne peuvent pas être traitées comme les autres : elles ne correspondent pas à des informations à afficher et il faut les écarter.
Enfin, pour information, mais ça n'empêche pas ton script de marcher, le csv ce n'est pas ça. Si ton fichier doit vraiment être du CSV, tu ferais mieux d'utiliser les fonctions CSV du PHP, qui traitent correctement, en particulier, le cas où il y aurait un = dans les données.
Merci, toto
je crois que tous les programmeurs utilisent les codes écrits par d'autres personnes en les modifiant à leur mesure. est ce que j'avais tort quand je le fasse.
concernant le fichier que je suis en train d'utiliser(découper) c'est vraiment un fichier CSV que j'ai enregistré avec Excel2007 de cette façon : CSV(séparateur : point-virgule ;)(*.csv).
et c'est pour cette raison que j'ai fait l'explode selon les ';' et non pas au niveau des '=' car les lignes faites de ======= : ne sont qu'une simple représentation pour vous montrer bien le continu de mon fichier CSV qui contient 4 lignes et 5 colonnes dont la description est la suivante :
ab120 aaaaaa bbbbbbbbb 20
cd250 gggggg ddddddddd 35
mk570 qqqqqq vvvvvvvvvv 72
bd984 nnnnnnn ppppppppp 67
je t'informe que j'ai cité les numéros de lignes à titre explicatif pour te montrer lesquelles sont sources d'erreurs.
enfin mes sincères gratitudes.
je crois que tous les programmeurs utilisent les codes écrits par d'autres personnes en les modifiant à leur mesure. est ce que j'avais tort quand je le fasse.
concernant le fichier que je suis en train d'utiliser(découper) c'est vraiment un fichier CSV que j'ai enregistré avec Excel2007 de cette façon : CSV(séparateur : point-virgule ;)(*.csv).
et c'est pour cette raison que j'ai fait l'explode selon les ';' et non pas au niveau des '=' car les lignes faites de ======= : ne sont qu'une simple représentation pour vous montrer bien le continu de mon fichier CSV qui contient 4 lignes et 5 colonnes dont la description est la suivante :
ab120 aaaaaa bbbbbbbbb 20
cd250 gggggg ddddddddd 35
mk570 qqqqqq vvvvvvvvvv 72
bd984 nnnnnnn ppppppppp 67
je t'informe que j'ai cité les numéros de lignes à titre explicatif pour te montrer lesquelles sont sources d'erreurs.
enfin mes sincères gratitudes.
prof_info
Messages postés
8
Date d'inscription
vendredi 16 janvier 2009
Statut
Membre
Dernière intervention
8 mai 2009
17 janv. 2009 à 12:33
17 janv. 2009 à 12:33
Salut arth,
quand j'affiche $liste puis $liste[0] il me donne respectivement comme résultat : Array ab120.
pour l'explode au niveau des ';' c'est justifié vue que mon fichier a été enregistré comme suit :
CSV(séparateur : point-virgule ;)(*.csv)..
Merci beaucoup.
quand j'affiche $liste puis $liste[0] il me donne respectivement comme résultat : Array ab120.
pour l'explode au niveau des ';' c'est justifié vue que mon fichier a été enregistré comme suit :
CSV(séparateur : point-virgule ;)(*.csv)..
Merci beaucoup.
arth
Messages postés
9374
Date d'inscription
mardi 27 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2016
1 291
17 janv. 2009 à 15:22
17 janv. 2009 à 15:22
et $liste[1] ??
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Pourquoi nous donnes-tu un fichier avec des = si ce sont des ; ? J'ai essayé de comprendre d'après les éléments que tu avais donnés, ils étaient faux, tu m'as fait perdre mon temps en même temps que le tien.
Et dans ton message 3, il n'y a plus ni =, ni ; pour séparer les champs.
Tu parles de fichier de 4 lignes et 5 colonnes. Pourquoi dis-tu et 5 colonnes alors que partout on n'en voit que 4 ?
Pas facile de te suivre !
Avec ce nouvelles données, j'ai reproduit le problème avec la série de 3 messages d'erreurs affichée une seule fois. Cela vient simplement du fait que fgets essaye de lire une ligne au-delà de la fin du fichier.
Pour éviter cela, ne traite pas les lignes de longueur 0.
Mais de toutes manières, je répète ce que j'ai dit plus haut, traiter les fichier CSV à l'aide d'explode est une erreur. Sauf si tu es sûr que tes champs ne contiendront jamais de ;. Il faut utiliser les fonctions csv du PHP, elles sont faites pour ça.
Et dans ton message 3, il n'y a plus ni =, ni ; pour séparer les champs.
Tu parles de fichier de 4 lignes et 5 colonnes. Pourquoi dis-tu et 5 colonnes alors que partout on n'en voit que 4 ?
Pas facile de te suivre !
Avec ce nouvelles données, j'ai reproduit le problème avec la série de 3 messages d'erreurs affichée une seule fois. Cela vient simplement du fait que fgets essaye de lire une ligne au-delà de la fin du fichier.
Pour éviter cela, ne traite pas les lignes de longueur 0.
Mais de toutes manières, je répète ce que j'ai dit plus haut, traiter les fichier CSV à l'aide d'explode est une erreur. Sauf si tu es sûr que tes champs ne contiendront jamais de ;. Il faut utiliser les fonctions csv du PHP, elles sont faites pour ça.