Undefined offset

Eléphant du PHP | 90 Messages

08 nov. 2005, 21:13

Bonjour

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

Notice: Undefined offset:

Merci

Dgse
Je ne tiens pas a etre un genie. J'ai suffisamment de probleme a etre un homme.

Mammouth du PHP | 1885 Messages

08 nov. 2005, 22:01

La programmation est l'expression de la poésie d'un programmeur
Génération PHP

Eléphant du PHP | 493 Messages

09 nov. 2005, 19:17

error_reporting( 0 ); // :P

Mammouth du PHP | 1885 Messages

09 nov. 2005, 19:55

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.
La programmation est l'expression de la poésie d'un programmeur
Génération PHP

Eléphant du PHP | 90 Messages

10 nov. 2005, 02:47

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
Je ne tiens pas a etre un genie. J'ai suffisamment de probleme a etre un homme.

Mammouth du PHP | 1885 Messages

10 nov. 2005, 03:16

D'où proviennent les variables $pg et $site ?
La programmation est l'expression de la poésie d'un programmeur
Génération PHP

Eléphant du PHP | 90 Messages

10 nov. 2005, 03:34

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
Je ne tiens pas a etre un genie. J'ai suffisamment de probleme a etre un homme.

Mammouth du PHP | 1885 Messages

10 nov. 2005, 04:32

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.
La programmation est l'expression de la poésie d'un programmeur
Génération PHP

Eléphant du PHP | 90 Messages

10 nov. 2005, 12:01

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
Je ne tiens pas a etre un genie. J'ai suffisamment de probleme a etre un homme.

Eléphant du PHP | 90 Messages

10 nov. 2005, 15:06

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
Je ne tiens pas a etre un genie. J'ai suffisamment de probleme a etre un homme.

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

10 nov. 2005, 16:17

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:

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphant du PHP | 90 Messages

10 nov. 2005, 16:40

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
Je ne tiens pas a etre un genie. J'ai suffisamment de probleme a etre un homme.

Eléphant du PHP | 90 Messages

10 nov. 2005, 16:45

Ps : j'ai vu sur l'aide dans le site Nexen que l'on pouvait le faire.

C'etait pour l'info
Je ne tiens pas a etre un genie. J'ai suffisamment de probleme a etre un homme.

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

10 nov. 2005, 17:05

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++)
{
   ...
}

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute