Page 1 sur 1

Undefined offset: 1 in list.php on line 78 ...

Posté : 22 août 2007, 11:41
par NoWayHome
Bonjour .

Je me suis fait un petit code php qui genere un tableau avec des entrés d'une bdd .

Mais je me suis rendu compte que j'avais une erreur dans mes fichiers de log .

L'erreur est :

Undefined offset: 1 in list.php on line 78 ...
mysql_connect($host,$user,$password) or die("erreur de connexion au serveur");
mysql_select_db($bdd) or die("erreur de connexion a la base de donnee");
 
$query=mysql_query("SELECT title, aid FROM `section` ORDER BY title"); 
$num=mysql_numrows($query); 
for($i=0;$i<$num;$i++) 
{ 
$n=mysql_result($query,$i,'title'); 
$array1[$n[0]][]=$n;
$array2[$n[0]][]=mysql_result($query,$i,'aid');
}
 
$i=0; $m=0;
foreach($array1 as $lettre=>$arr) 
{
if($m) { echo "</td><td valign=\"top\">"; $m=0; }
 $e=-1;
 echo "<b> $lettre </b><br />"; 
 while($array1[$lettre][++$e])
 {
  echo "<a href='../lien-{$array2[$lettre][$e]}.html'>{$array1[$lettre][$e]}</a><br />";
  $i++;
  if($i%NUM_PER_CASE==0) $m=1;
 }
 echo "<br />"; 
}
?>
la ligne 78 c :
while($array1[$lettre][++$e])
J'ai fait quelques recherche et cet erreur serait du a une generation de tableau trop grande ou trop petite ..
Mais je ne sais pas comment le résoudre vu que mon tableau s'auto adapte en fonction du nombre d'elements de la bdd .

que faire ?
merci

Posté : 22 août 2007, 11:47
par mere-teresa
A quoi sert le ++$e ?
Le message d'erreur est : l'index 1 du tableau n'existe pas, càd : $tab[1] n'existe pas

Posté : 22 août 2007, 18:26
par Invité
la bdd est une liste alphabetique de nom , de A & Z .
Qui evolue sans cesse , le but du script est de creer un tableau avec la liste classé par Ordre Alphabetique et avec la lettre A , B ... en 1er ligne .

le e++ augmente le compteur e=-1 qui integre les noms dans les cases .

avec e=0 , je rate le 1er nom de chaque lettre .

Posté : 22 août 2007, 18:30
par zeus
A SAVOIR :
++$e incrémente la variable et réalise le traitement
$e++ réalise le traitement et incrémente la variable

donc
$i = 0;
echo ++$i; // affiche 1
echo $i; // affiche 1

$e = 0;
echo $e++; // affiche 0
echo $e; // affiche 1
Du coup, tu peux faire $e = 0 et remplacer ton ++$e par $e++ ;)

Posté : 22 août 2007, 19:17
par Invité
Zeus ..
 $e=0;
 echo "<b> $lettre </b><br />"; 
 while($array1[$lettre][$e++])
ben j'ai pas le 1er de la liste ..

Note :

j'ai plusieurs erreurs ( dans le fichier d'origine ) qui se repete :

PHP Notice: Undefined offset: 9
PHP Notice: Undefined offset: 10
PHP Notice: Undefined offset: 7

...

Posté : 22 août 2007, 22:20
par Sékiltoyai
Utilise isset pour voir si ta variable, ou ton élément de tableau existe.
Et sinon, si tu fais un foreach, utilises le résultat :
while(isset($arr[$e++]))

Merci

Posté : 23 août 2007, 09:36
par Invité
Effectivement en rajoutant isset dans la boucle , je n'ai plus l'erreur , la page s'affiche correctement , j'ai bien toute la liste .

C'etait tout con quoi mais comme toute chose conne , suffit de le savoir ;)

merci