Page 1 sur 1

Undefined offset

Posté : 08 nov. 2005, 21:13
par Dgse
Bonjour

Est il possible de supprimer cette notice d'erreur sous easy

Notice: Undefined offset:

Merci

Dgse

Posté : 08 nov. 2005, 22:01
par Xenon_54

Posté : 09 nov. 2005, 19:17
par Vaedan
error_reporting( 0 ); // :P

Posté : 09 nov. 2005, 19:55
par Xenon_54
Quelle est cette manie de toujours vouloir masquer les messages d'erreurs?
Une erreur doit être corrigée et non masquée. Je te conseille, à l'avenir, de ne plus jamais donner ce conseil.

On est ici pour aider à régler des problèmes et non les masquer.

Posté : 10 nov. 2005, 02:47
par Dgse
Bonjour

Comme je n'ai pas trouve comment faire je refais appel a vous,
j'ai essayer avec isset mais j'ai pas du mettre le bon code car cela m'affichait toujours Undefined offset
voici ce que j'utilise, tant que cela est un multiple de 5 ca colle (normal) vu que j'ai demande a afficher 5 titre dans la page si j'arrive a 6 j'ai 4 fois Undefined offset.. voila en gros.
$f=file(monfichier);
$link=array();		
for($i=0;$i<count($f);$i++)
{
if(trim($f[$i])!="") $link[$i]=$f[$i];
}
if ($link[0]=="")
{
echo "Message";
}
$pgmax = floor((count($link))/5+1);
if(count($link)/5+1> $pgmax) $pgmax++; 
if($pg>$pgmax) $pg=$pgmax;						
if(!$pg || $pg==1) 
{
$pg=0; $pgstart=0;
$pgbreak=$pg*5+4;
}
elseif($pg == "end")
{
$pg=$pgmax;
$pgstart=$pgmax*5;
$pgbreak=count($link);
}
else
{
$pg=$pg-1; 
$pgstart=$pg*5;
$pgbreak=$pg*5+4;
}
for($i=$pgstart;$i<=$pgbreak;$i++){
$link[$i] = str_replace($site,"",$link[$i]);
echo $link[$i];$i2=$i ;	
if ($link[$i]=="")
{echo"Message";}	
else
{
echo "Autre Message";
}
}
for($i=1;$i<$pgmax;$i++){
if($i==$pg+1) echo "[".$i."]";
else echo "[".$i."]";
}

Merci

Dgse

Posté : 10 nov. 2005, 03:16
par Xenon_54
D'où proviennent les variables $pg et $site ?

Posté : 10 nov. 2005, 03:34
par Dgse
Bonjour

a l'origine la variable $pg et a 0 et $site est dans un fichier config qui definit l'url pour l'affichage des images. et j'ai besoin de le retirer pour pouvoir l'afficher dans cette page .. d'ou la fonction

merci

@+ Dgse

Posté : 10 nov. 2005, 04:32
par Xenon_54
Undefined offset signigie que tu tentes d'accéder à un index de tableau qui n'existe pas. Il faudrait réviser ton code afin de t'assurer que tu n'accès jamais à un index qui se trouve au delà du maximum du tableau.

Posté : 10 nov. 2005, 12:01
par Dgse
Bonjour

Oui, ca je sais, je crois que le probleme viens des numeros de page
j'explique ce qui se passe je met le fichier dans un array()

quand j'affiche peut importe le nombre par page , je vais prendre 10 pour l'exemple si j'en ai 4 a afficher l'erreur s'affiche 6 fois (normal vu que je lui en ai demande 10 par page ) je sais pas comment faire pour que quand il arrive a 4 il n'affiche pas l'erreur.

Dans mon script j'ai demande 5 mais le resultat est le meme.

Merci

Dgse

Posté : 10 nov. 2005, 15:06
par Dgse
Bonjour

j'ai mis le bout de code que j'ai ajoute en retrait cela fonctionne j'ai plus le message d'erreur mais est-ce correct.
$f=file(monfichier); 
$link=array();         
for($i=0;$i<count($f);$i++) 
{ 
if(trim($f[$i])!="") $link[$i]=$f[$i]; 
} 
if ($link[0]=="") 
{ 
echo "Message"; 
} 
$pgmax = floor((count($link))/5+1); 
if(count($link)/5+1> $pgmax) $pgmax++; 
if($pg>$pgmax) $pg=$pgmax;                         
if(!$pg || $pg==1) 
{ 
$pg=0; $pgstart=0; 
$pgbreak=$pg*5+4; 
} 
elseif($pg == "end") 
{ 
$pg=$pgmax; 
$pgstart=$pgmax*5; 
$pgbreak=count($link); 
} 
else 
{ 
$pg=$pg-1; 
$pgstart=$pg*5; 
$pgbreak=$pg*5+4; 
} 
for($i=$pgstart;$i<=$pgbreak;$i++)
{		
				if ($i == count($f))
				{
				echo "<center><br>";
				for($i=1;$i<$pgmax;$i++){
				if($i==$pg+1) echo "[".$i."]";
				else echo "[<a ref='".$new_name."?pg=".$i."'>".$i."</a>]";
				}
				exit();						}
$link[$i] = str_replace($site,"",$link[$i]); 
echo $link[$i];$i2=$i ;     
if ($link[$i]=="") 
{echo"Message";}     
else 
{ 
echo "Autre Message"; 
} 
} 
for($i=1;$i<$pgmax;$i++){ 
if($i==$pg+1) echo "[".$i."]"; 
else echo "[".$i."]"; 
} 
@+ Dgse

Posté : 10 nov. 2005, 16:17
par Truc
Salut, je dirai que si ça marche tant mieux mais c'est une mauvaise programmation de terminer une boucle avec un exit(), qui d'ailleur prend effet dès le 1er passage dans la 1ere boucle for().

Autre probleme (sans grande importance puisque tu ne passe qu'une fois dans la boucle) les 2 boucles for() imbriqués avec la meme variable de compteur $i, rien de tel pour semer la confusion :wink:

Donc pour éviter ce probleme sans utiliser de "exit()", je pense que tu dépasse effectivement le tableau lorsque tu affecte la variable de fin de boucle => $pgbreak=$pg*5+4;

Ce qui veut dire (je pense) que tu affiche 4 par 4 .... tu devrai tester avant d'affecter directement si "$pg*5+4" existe en comparant a la derniere valeur "affichable" .... mais dans tout ca je sais pas ce qu'est la limite tu trouvera certainement :wink:

Posté : 10 nov. 2005, 16:40
par Dgse
Bonjour

j'ai remplacer
 if ($i == count($f)) 
                { 
                echo "<center><br>"; 
                for($i=1;$i<$pgmax;$i++){ 
                if($i==$pg+1) echo "[".$i."]"; 
                else echo "[<a ref='".$new_name."?pg=".$i."'>".$i."</a>]"; 
                } 
                exit();
par
break;
ce qui a pour effet de ne pas arreter la boucle, elle continue j'ai verifie, et cela ne m'affiche pas non plus le message d'erreur
ce qui donne en gros
$f=file(monfichier); 
$link=array();          
for($i=0;$i<count($f);$i++) 
{ 
if(trim($f[$i])!="") $link[$i]=$f[$i]; 
} 
if ($link[0]=="") 
{ 
echo "Message"; 
} 
$pgmax = floor((count($link))/5+1); 
if(count($link)/5+1> $pgmax) $pgmax++; 
if($pg>$pgmax) $pg=$pgmax;                          
if(!$pg || $pg==1) 
{ 
$pg=0; $pgstart=0; 
$pgbreak=$pg*5+4; 
} 
elseif($pg == "end") 
{ 
$pg=$pgmax; 
$pgstart=$pgmax*5; 
$pgbreak=count($link); 
} 
else 
{ 
$pg=$pg-1; 
$pgstart=$pg*5; 
$pgbreak=$pg*5+4; 
} 
for($i=$pgstart;$i<=$pgbreak;$i++) 
{         
                if ($i == count($f)) 
                {break;} 
$link[$i] = str_replace($site,"",$link[$i]); 
echo $link[$i];$i2=$i ;      
if ($link[$i]=="") 
{echo"Message";}      
else 
{ 
echo "Autre Message"; 
} 
} 
for($i=1;$i<$pgmax;$i++){ 
if($i==$pg+1) echo "[".$i."]"; 
else echo "[".$i."]"; 
} 
@+ Dgse

Posté : 10 nov. 2005, 16:45
par Dgse
Ps : j'ai vu sur l'aide dans le site Nexen que l'on pouvait le faire.

C'etait pour l'info

Posté : 10 nov. 2005, 17:05
par Truc
Toujours pareil, tu dis on peut le faire mais à éviter quand meme :wink:

tu dispose de la condition d'arret de la boucle "$i == count($f)" donc tu peut faire ceci:
for($i=$pgstart;($i <= count($f)) && ($i<=$pgbreak);$i++)
{
   ...
}