PB Notice: Undefined offset:

Petit nouveau ! | 3 Messages

12 févr. 2009, 18:58

Bonjour,
Mon code pour lire un bout d'un fichier fonctionne bien mais j'ai un probleme de notice que je n'arrive pas à enlever.

Merci d'avance.

<?php
// le fichier
$fichier='DUYCK.txt';
// declaration 
$typeProduit[]='';
$nomParcelle[]='';
$nomProduit[]='';
$date[]='';
$quantite[]='';
$cpt = 0;
// ouverture du fichier
$fp=fopen($fichier,'r');

while (!feof($fp)) {
// lecture et decoupage des lignes à chaque ;
$position=explode(";",fgets($fp,255));
// $position dans la ligne commence à zero

$nomParcelle[$cpt].=$position[0];
$typeProduit[$cpt].=$position[1];
$nomProduit[$cpt].=$position[2];
$date[$cpt].=$position[3];
$quantite[$cpt].=$position[4];
$cpt = $cpt + 1;  
}

// fermeture du fichier
fclose($fp);
// affichage des villes
print $nomParcelle[0].'<br />';
print $typeProduit[0].'<br />';
print $nomProduit[0].'<br />';
print $date[0].'<br />';
print $quantite[0].'<br />';
?> 

Résultat :
Notice: Undefined offset: 1 in C:\wamp\www\Site\DuyckPC.php on line 21

Notice: Undefined offset: 1 in C:\wamp\www\Site\DuyckPC.php on line 22

Notice: Undefined offset: 1 in C:\wamp\www\Site\DuyckPC.php on line 22

Notice: Undefined offset: 2 in C:\wamp\www\Site\DuyckPC.php on line 23

Notice: Undefined offset: 1 in C:\wamp\www\Site\DuyckPC.php on line 23

Notice: Undefined offset: 3 in C:\wamp\www\Site\DuyckPC.php on line 24

Notice: Undefined offset: 1 in C:\wamp\www\Site\DuyckPC.php on line 24

Notice: Undefined offset: 4 in C:\wamp\www\Site\DuyckPC.php on line 25

Notice: Undefined offset: 1 in C:\wamp\www\Site\DuyckPC.php on line 25[/code][/php]

ViPHP
ViPHP | 1136 Messages

12 févr. 2009, 19:09

Salut ,

Certainement car tu essayes d'accéder à des indices de ton tableau qui n'existent pas ..

Apres , ce ne sont que des notice .. ( pas grave , mais montre un code assez "sale" )

Tu peux ne pas les afficher soit en modifiant le php.ini , ou avec cette fonction :

error_reporting();


Ch.

Petit nouveau ! | 3 Messages

12 févr. 2009, 19:14

Je la met à quelle niveau cette fonction ? car j'ai essayé de la mettre au début de mon code et j'ai toujours les notices.

ViPHP
ViPHP | 1136 Messages

12 févr. 2009, 19:18

Il faut la mettre comme ceci au début de ton code :
error_reporting(E_ALL ^ E_NOTICE);
N'hésites pas à aller voir la doc ..

http://fr.php.net/manual/fr/function.er ... orting.php

ViPHP
ViPHP | 1380 Messages

12 févr. 2009, 19:28

Les notices révèlent toujours un code développé de manière non correcte. Je te conseille plutôt de corriger ton code. Relis bien la partie déclaration de variable et vois comment tu initialises tes tableaux:
// declaration 
$typeProduit[]='';
$nomParcelle[]='';
$nomProduit[]='';
$date[]='';
$quantite[]='';
$cpt = 0; 
Tu comprendras alors pourquoi php râle lorsque tu essayes d'accéder à l'indice [1] lors du passage dans ta boucle while.
ripat