Erreur d'offset

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Erreur d'offset

par matteo17 » 10 mai 2005, 14:58

Arf! tout juste j'y avais pas pensé.
Merci beaucoup.

par sadeq » 10 mai 2005, 13:25

Revois ton code :
...
$ligne = fgets($fp,4096); // On se déplace d'une ligne 
        // Les champs séparés par les caractères " et , on éclate la chaine de caractère pour supprimer le caractère " et on en fait un tableau 
        $liste = explode('"' , $ligne); 
        //On affiche les 2 premiers parametres. 
        echo "Param1: ".$liste[1]."&nbsp; &nbsp; &nbsp; Param2: ".$liste[3]."<br>"; 
...
tu fais un echo de l'offset 1 et 3 du tableau $liste créé par l'explode, mais tu n'es même pas sure qu'un des explodes puisse créer les créer et notamment la dernière lecture dans le fichier qui atteint EOF.

Quand un FGETS atteint EOF il retourne null ce qui veut dire que la dernière $liste que tu explode est nulle (les offset 1 et 3 n'existe alors pas)

Pour passer ce problème logique il faut tester $liste après la lecture FGETS. Et ce n'est pas terminé pour toi, il faut aussi s'assurer que la longueur de $liste dépasse l'offset 3 que tu utilise dans l'echo.

Correction :
...
$ligne = fgets($fp,4096); // On se déplace d'une ligne
// Les champs séparés par les caractères " et , on éclate la chaine de caractère pour supprimer le caractère " et on en fait un tableau
$liste = explode('"' , $ligne);
//On affiche les 2 premiers parametres.
if ($liste != null && count($liste) > 3) {
echo "Param1: ".$liste[1]."&nbsp; &nbsp; &nbsp; Param2: ".$liste
[3]."<br>";
}
....

par matteo17 » 10 mai 2005, 13:02

Oui j'en ai une centaines. :wink:
C'est pour faire de l'extraction des données existante, choisir les attributs necessaire et réinjecter sur MySQL.

par Ripat » 09 mai 2005, 19:27

As-tu fait un print_r de ton tableau $liste pour voir de combien d'éléments il était constitué?

Erreur d'offset

par matteo17 » 09 mai 2005, 19:23

Bonjour,
J'aimerais que l'on m'explique pourquoi a la fin de l'execution de mon fichier je vois apparaitre un message d'erreur de ce style: "Undefined offset".
Qu'ai-je fé comme boulette, pour avoir une erreur d'offset?

voici le code :
<?php
	$fichier = "vente.txt";
	if (file_exists($fichier))
		$fp = fopen($fichier, "r"); // le fichier existe, on l'ouvre
	else								// le fichier n'existe pas
	{ 	
		echo "Fichier introuvable !<br />Importation stoppée.";
		exit();
	}
	// On parcours le fichier
	while (!feof($fp))
	{ 
		$ligne = fgets($fp,4096); // On se déplace d'une ligne
		// Les champs séparés par les caractères " et , on éclate la chaine de caractère pour supprimer le caractère " et on en fait un tableau
		$liste = explode('"' , $ligne); 
		//On affiche les 2 premiers parametres.
		echo "Param1: ".$liste[1]."&nbsp; &nbsp; &nbsp; Param2: ".$liste[3]."<br>";
	}
	fclose($fp); // Fermeture du fichier
?>

voici le résultat :

Param1: V0010043 Param2: M
Param1: V0010048 Param2: M
Param1: V0010049 Param2: M

...

Param1: V0010230 Param2: M
Param1: V0010234 Param2: M
Param1: V0010236 Param2: A

Notice: Undefined offset: 1 in c:\program files\easyphp1-8\www\moulinette\moulinette.php on line 17

Notice: Undefined offset: 3 in c:\program files\easyphp1-8\www\moulinette\moulinette.php on line 17
Param1: Param2:



Merci.