Probleme Notice: Undefined offset

Fermé
gbakD - Modifié par gbakD le 26/01/2014 à 09:01
 Utilisateur anonyme - 29 janv. 2014 à 08:47
voici mon code ci-dessous:

<?php
require('../connexion/base.php');
$dossier = "..\multimedia\phototheque\\";
$i = 0;
$link1=mysql_connect("$host","$user","$password") or die('<font color=red>Erreur de connnection</font><br> '.mysql_error() );
mysql_select_db("$bd") or die(mysql_error() );
$sql="SELECT titre, ladate, dossier, num FROM phototheque ORDER by num DESC";
$req=mysql_query($sql, $link1) or die(mysql_error());
while($row=@mysql_fetch_array($req)){
$letitres_[$i] = $row[0];
$ladate_[$i] = $row[1];
$num[$i] = $row[3];

$sql_="SELECT numphototheque, libellephoto FROM fichierphoto WHERE numphototheque = \"".$num[$i]."\"";
$req_=mysql_query($sql_, $link1) or die(mysql_error());
while($row_=@mysql_fetch_array($req_)){
$file= $row_[1];
@$dossierFichier[$i] = @$dossier.$row[2]."\\".$file;
}

$i++;
}
?>
</span>
<table width="163" border="0" align="center" height="80" frame="border" style="border:1px #CCCCCC solid;" >
<tr>
<td>
<div style="text-align:center;width:700px;">
<?php
for($j=0;$j < sizeof(@$letitres_); $j++){
$point = "";
if (strlen($letitres_[$j]) > 40) $point = "...";
echo "<div style=\"background-color:#0033C;width:175px;float:left;margin-bottom:35px;\" >
<a style='color:#FF6600;' href=\"../cataphoto.php?num=$num[$j]\" >".substr($letitres_[$j],0,40)."$point</a>
<a href=\"../cataphoto.php?num=$num[$j]\" ><img src=\"$dossierFichier[$j]\" width='132' height='110'></a>
</div>";
}</gras>
//<td> <a href=\"affichephoto.php?source=$dossier/$file\" target='iframe'>$file</a></td></tr>
?>



/*********** problème *************/

quand je lance la page contenant ce code il est mis les erreurs suivantes , quelqu'un pourrait il m'aider ? (la ligne 41 est en gras )


Notice: Undefined offset: 4 in C:\wamp\www\siteNJ\multimedia\catalbum.php on line 41
Notice: Undefined offset: 5 in C:\wamp\www\siteNJ\multimedia\catalbum.php on line 41
Notice: Undefined offset: 6 in C:\wamp\www\siteNJ\multimedia\catalbum.php on line 41
...
Notice: Undefined offset: n in C:\wamp\www\siteNJ\multimedia\catalbum.php on line 41

2 réponses

Utilisateur anonyme
29 janv. 2014 à 08:47
Bonjour

$dossierFichier est initialisé dans cette boucle :
while($row_=@mysql_fetch_array($req_)){ 
$file= $row_[1]; 
@$dossierFichier[$i] = @$dossier.$row[2]."\\".$file; 
} 

Il s'en suit deux choses :
Si tu as plusieurs réponses à ta requête, seule la dernière est conservée car tu mémorises tous les $dossier.$row[2] dans le même $dossierFichier[$i]
Si t un'as pas de réponse, $dossierFichier[$i] n'est pas défini, ce qui explique l'erreur que tu as par la suite.
Si c'est éventuellement normal que ce champ puisse être vide, il suffit de l'initialiser $dossierFichier[$i]=""; juste avant la boucle ci-dessus.

P.S. : évite les @ partout, ils ne servent qu'à masquer des erreurs. Même si c'est parfois justifié (accès à des ressources extérieures), dans ton cas je ne fois pas l'intérêt si ce n'est de déplacer des problèmes.
1
Utilisateur anonyme
29 janv. 2014 à 02:52
https://forums.commentcamarche.net/forum/affich-748187-notice-undefined-offset-php-4#1

Je crois bien que ce soit un index dans un de tes arrays ($num ou $dossierFichier) qui n'existe pas.

Tu retournes la boucle jusqu'à un de moins que sizeof(@$letitres_), donc peut-être que un de ces deux arrays contient moins d'élément que $letitres_

Affiche le nombre d'élement (sizeof) de ces deux arrays et compare le avec $letitres_

echo sizeof($num)
//...
echo sizeof($dossierFichier)
exit;
0