Rechercher : dans
Par :

[PHP] Pb array et foreach

Dernière réponse le 12 oct 2007 à 09:59:43 Yull Master, le 11 oct 2007 à 09:50:44 
 Signaler ce message aux modérateurs

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
Configuration: Windows 2000
Firefox 2.0.0.7

Meilleures réponses pour « [PHP] Pb array et foreach » dans :
PHP - Concaténation VoirPHP permet de concaténer des chaînes de caractères grâce à l'opérateur "." : $concatenation= $a . $b; Ou encore pour affecter, dans la variable $a, la valeur de la concaténation de $a et de $b : $a.=$b; Pour concaténer des chaînes et des...
Javascript - l'objet Array VoirLes particularités de l'objet Array L'objet Array est un objet du noyau Javascript permettant de créer et de manipuler des tableaux. Voici la syntaxe à utiliser pour créer une variable tableau : var x = new Array(element1[, element2, ...]); Si...
PHP - Parser du XML VoirIntroduction à XML PHP permet l'analyse syntaxique (parsage ou parsing en anglais) d'un document XML. Le langage XML (eXtensible Markup Language, traduisez Langage à balises extensibles) est un métalangage, c'est-à-dire un langage permettant de...

1

Jeff, le 11 oct 2007 à 10:02:13

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;
 }

}
}

Jeff - Wm@Ccm -

Répondre à Jeff

2

Yull Master, le 11 oct 2007 à 10:13:57

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

Répondre à Yull Master

3

Jeff, le 11 oct 2007 à 10:55:49

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 Jeff - Wm@Ccm -

Répondre à Jeff

4

Yull Master, le 11 oct 2007 à 11:00:52

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

Répondre à Yull Master

5

 Yull Master, le 12 oct 2007 à 09:59:43

Quelqu'un aurai t'il une autre solution a me proposer ?

Répondre à Yull Master