[PHP] Pb array et foreach

Fermé
Yull Master Messages postés 46 Date d'inscription vendredi 28 septembre 2007 Statut Membre Dernière intervention 17 janvier 2008 - 11 oct. 2007 à 09:50
Yull Master Messages postés 46 Date d'inscription vendredi 28 septembre 2007 Statut Membre Dernière intervention 17 janvier 2008 - 12 oct. 2007 à 09:59
Salut,

Je suis novice en html/php et je rencontre une erreur avec mes array.

Je comprend parfaitement l'erreur que j'ai mais comme cela effectue quand meme le travail que je souhaite faire bah faudrai juste que je parvienne a cacher les lignes d'erreurs qui apparaissent ou mieu les eliminer.

Je sais que ma maniere de codé est peu academique et que le code que je vous presente a une gros erreur (qui apparis sur ma page),

voici donc l'erreur suivit de mon code.

Warning: Invalid argument supplied for foreach() in c:\documents and settings\garnier\mes documents\web\liste.php on line 84

<body>


<form method="POST" action="Saveliste.php">
<table style="border-collapse: collapse;">
<tr><th style="border: 0px;" VALIGN="top" ALIGN="center"><img src="images/H.jpg" border= "0"/></th></tr>
<tr><th style="border: 0px;" VALIGN="top" ALIGN="center">
<p>
<h5>
Amis :<br><br>
<?
 include("Conect.php");

if (isset($_SESSION['Login']))
{
$numa = $_SESSION['Login'];
}
else
{
include("VLog2.php");
}

if (isset($_GET['pagela']))
{
    $pagela = $_GET['pagela']; // On récupère le numéro de la page
}
else 
{
    $pagela = 1; // défaut
}

//nb de amis par page
$nombreDelistesParPage = 10;

// On calcule le numéro du premier ami qu'on prend pour le LIMIT de MySQL
$premierlisteAafficher = ($pagela - 1) * $nombreDelistesParPage;

// On récupère le nombre total de amis
$retourliste = mysql_query("SELECT COUNT(*) AS nb_amis FROM individu WHERE Num_ind<>1");
$donneesliste = mysql_fetch_array($retourliste);
$totalDeslistes = $donneesliste['nb_amis'];

// On calcule le nombre de pages à créer
$nombreDePagesliste  = ceil($totalDeslistes / $nombreDelistesParPage);

// On récupère les 3 dernières news
$retourliste = mysql_query("SELECT Nom_ind, Num_ind, conect FROM individu WHERE Num_ind<>1 and Num_ind<>'$numa' ORDER BY Num_ind ASC LIMIT " . $premierlisteAafficher . ', ' . $nombreDelistesParPage);
$retourliste2 = mysql_query("SELECT Num_amis, Ind_amis FROM amis WHERE Ind_amis='$numa' ORDER BY Num_amis ASC LIMIT " . $premierlisteAafficher . ', ' . $nombreDelistesParPage);

$nb=0;

while  ($donneesliste = mysql_fetch_array($retourliste))
{
$nb++;
$donneesliste2 = mysql_fetch_array($retourliste2);
$xa = $donneesliste['Num_ind'];
$ya = $donneesliste['conect'];

foreach($donneesliste2 as $cle=>$valeur){      ----------------> ligne 84
// et tu mets ça dans un array
   if( substr($cle,0,8)=="Num_amis"){ // si le nom du champ commence par "Numrss"
      $index=substr($cle,8);  // tu retrouves le numéro du rss  et ça te servira de cle pour l'array
      $array_numamis[$index]=$valeur;
 }
   if( substr($cle,0,8)=="Ind_amis"){ // si le nom du champ commence par "Chemin,"
      $index=substr($cle,8);  // tu retrouves le numéro du Chemin  et ça te servira de cle pour l'array
      $array_indamis[$index]=$valeur;
 }

}

foreach($array_numamis as $cle=>$value){
$za=$value; // recup numero rss
$wa=$array_indamis[$cle];

?>
<table style="border-collapse: collapse;">
<tr><th style="border: 0px;" VALIGN="top" ALIGN="center">
<?
if (($za == $xa) AND ($wa == $numa))
{
?>
<input type="checkbox" name="amis" id="ami" CHECKED />
<?
}
else
{
?>
<input type="checkbox" name="amis" id="ami"/>
<?
}
}
?>

<input type="hidden" name="<?php echo $za.$nb ; ?>" tabindex="10" value="<? echo $donneesla['Num_amis'];?>" />
<input type="text" style="border: 0px; color: rgb(48,117,192); font-size: 15px; font-family: Papyrus; text-align: center;" name="<?php echo $xa.$nb ; ?>" tabindex="20" value="<? echo $donneesliste['Nom_ind'];?>"
onClick="window.open('View.php?numv=<? echo $xa ?>',null,'width=815,height=800, status=yes, directories=yes, toolbar=yes, location=yes, menubar=yes, scrollbars=yes, resizable=yes');">

<?
if ($ya==1)
{
    echo "<FONT COLOR=green>(connecté)</FONT>";
}
else
{
    echo "<FONT COLOR=red>(non connecté)</FONT>";
}
?>
</th></tr>
</table>
<br><br>
<?
} // Fin de la boucle des news
?>
</th></tr>
<br /></h5>
<tr><th style="border: 0px;" VALIGN="top" ALIGN="center">
<p><br /><input type="submit" value="Modifier"></p></th></tr>
</table>
</form>

<br>
<img src="images/B.jpg" border= "0"/>
</p>
</body>



Merci a tous ceux qui passerosn un peu de temps a m'aider

cdt
Yull
A voir également:

5 réponses

Jean-François Pillou Messages postés 18707 Date d'inscription lundi 15 février 1999 Statut Webmaster Dernière intervention 16 février 2023 63 267
11 oct. 2007 à 10:02
Avant de faire un foreach, il faut toujours vérifier qu'il y ait au moins un élément dans le tableau :

if(count($donneesliste2)){
foreach($donneesliste2 as $cle=>$valeur){      ----------------> ligne 84
// et tu mets ça dans un array
   if( substr($cle,0,8)=="Num_amis"){ // si le nom du champ commence par "Numrss"
      $index=substr($cle,8);  // tu retrouves le numéro du rss  et ça te servira de cle pour l'array
      $array_numamis[$index]=$valeur;
 }
   if( substr($cle,0,8)=="Ind_amis"){ // si le nom du champ commence par "Chemin,"
      $index=substr($cle,8);  // tu retrouves le numéro du Chemin  et ça te servira de cle pour l'array
      $array_indamis[$index]=$valeur;
 }

}
}

0
Yull Master Messages postés 46 Date d'inscription vendredi 28 septembre 2007 Statut Membre Dernière intervention 17 janvier 2008 1
11 oct. 2007 à 10:13
Merci Jeff de te pencher sur mon probleme.

la est bien le soucis en faite dans mon array, je peu parfois ne pas avoir d'elements.

En gros je cherche dans ce code a resortir toutes les personens inscritent et a mettre une checkbox coché a coté de ceux que j'ai declaré comme etant mes amis.

il se peu donc qu'il n'exite pas de Num_amis et de Ind_amis.

comment faire donc soit pour leurs donner une valeurs malgré tout ou pour ne pas afficher les erreurs que cela produits

cdt
Yull
0
Jean-François Pillou Messages postés 18707 Date d'inscription lundi 15 février 1999 Statut Webmaster Dernière intervention 16 février 2023 63 267
11 oct. 2007 à 10:55
pour ne pas afficher les erreurs que cela produit, ce qui revient à faire la politique de l'autruche, il suffit de précéder foreach de @ :

@foreach
0
Yull Master Messages postés 46 Date d'inscription vendredi 28 septembre 2007 Statut Membre Dernière intervention 17 janvier 2008 1
11 oct. 2007 à 11:00
Oui, je sais que ce n'est pas le mieu. Mais mon code fonctionne malgré les erreurs. Pour le moment je n'ai pas trouver de meilleur solution donc temporairement cela me permet d'avoir un truc qui marche en attendant de trouver mieu

en totu cas merci de ton aide Jeff ^^

Edit : je viens d'essayer avec le @ devant foreach et ca me sort une parse error
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Yull Master Messages postés 46 Date d'inscription vendredi 28 septembre 2007 Statut Membre Dernière intervention 17 janvier 2008 1
12 oct. 2007 à 09:59
Quelqu'un aurai t'il une autre solution a me proposer ?
0