Page 1 sur 1

Problème Foreach

Posté : 19 avr. 2006, 11:41
par freemen
Bonjour,

alors là, y a un truc qui doit m'échapper. Ca fait je ne sais pas le quantième que je fait, et celui ci il me dis merde.

Voici l'erreur:
Warning: Invalid argument supplied for foreach() in c:\program files\easyphp1-8\www\etstudio\admin\mod_centre.php on line 83
Voici le code:
function listEdit(){
if(isset($_GET['id_ress'])){
	$ress_edit = $_GET['id_ress'];
	$query = "SELECT * FROM t_ressource WHERE id_ress= '$ress_edit'";
	$result = mysql_query($query) or die(mysql_error());
		while($ress_edit = mysql_fetch_object($result)){
		$arRess_edit[$ress_edit->id_ress ] = array('id'=>$ress_edit->id_ress, 'titre'=>$ress_edit->titre_ress, 'jpg'=>$ress_edit->img_ress, 'pdf'=>$ress_edit->pdf_ress, 'eps'=>$ress_edit->eps_ress, 'pub_ress'=>$ress_edit->pub_ress);
		}	
	}
}
<?php
if (isset($_GET['id_ress'])){ 
  $listEdit = listEdit();
	foreach($listEdit as $key=>$val){ // LIGNE 83
	
  ?>
  	<form id="centre" method="post" enctype="multipart/form-data" name="add_ress" action="<?php echo $_SERVER['PHP_SELF']; ?>">
        <p>
          <label>Nom*:</label>
          <input name="nom" type="text" value="<? $val['titre'] ?>" />
        </p>
        <p>
          <label>.JPG*:</label>
          <input name="jpg" type="file" />
        </p>
        <p>
          <label>.PDF:</label>
          <input name="pdf" type="file" />
        </p>
        <p>
          <label>.EPS:</label>
          <input name="eps" type="file" />
        </p>
        <p>
          <label>Publication:</label>
          <select name="pub">
            <option value="y">Oui</option>
            <option value="n">Non</option>
          </select>
        </p>
        <input name="submit_add_ress" type="submit" value="Enregistrer" />
      </form>
	<?php
	}....
        //else avec autre fonctionalité qui fonctionne et qu'y n'a rien avoir.
Comme d'ab...c'est surment encore une connerie :cry:

Merci
Kevin

ps: bien sur tout les autres éléments du trableau serront utilisé.

Posté : 19 avr. 2006, 11:46
par zigz4g
Salut.

Pour un petit debuggage rapide :
<?php
if (isset($_GET['id_ress'])) {
    $listEdit = listEdit();
    echo '<pre>';print_r($listEdit);echo '</pre>';
    foreach($listEdit as $key => $val){ // LIGNE 83
?> 
Ca t'aidera peut-etre de voir ce que te retoure ton tableau.

Posté : 19 avr. 2006, 11:48
par Ryle
Warning: Invalid argument supplied for foreach() in c:\program files\easyphp1-8\www\etstudio\admin\mod_centre.php on line 83
L'argument passé au foreach n'est pas correct... sachant que le foreach attend un tableau, il faut aller voir du côté de $listEdit.
$listEdit = listEdit(); 
Allons donc voir du côté de listEdit() :)
function listEdit(){ 
  if(isset($_GET['id_ress'])){ 
    $ress_edit = $_GET['id_ress']; 
    $query = "SELECT * FROM t_ressource WHERE id_ress= '$ress_edit'"; 
    $result = mysql_query($query) or die(mysql_error()); 
    while($ress_edit = mysql_fetch_object($result)){ 
      $arRess_edit[$ress_edit->id_ress ] = array(
         'id'=>$ress_edit->id_ress,
         'titre'=>$ress_edit->titre_ress,
         'jpg'=>$ress_edit->img_ress,
         'pdf'=>$ress_edit->pdf_ress,
         'eps'=>$ress_edit->eps_ress,
         'pub_ress'=>$ress_edit->pub_ress
       ); 
    }     
  } 
} 
Données en entrée de la fonction : aucun
Données en sortie de la fonction : aucun

C'est donc normal que ton $listEdit ne contienne pas de tableau ;)

Posté : 19 avr. 2006, 12:00
par freemen
Heuuu ](*,) #-o

Je ne vois pas du tout où est mon erreur même avec ce que tu me dis.
Le <pre> ne me retourne rien. Logique si ma fonction est vide.

Je ne vois pas du tout mes autres foreach sont fait comme ça, c'est même un copier collé celui ci, et ils fonctionnent à merveils.

Posté : 19 avr. 2006, 12:04
par Ryle
Données en entrée de la fonction : aucun
Données en sortie de la fonction : aucun
Il n'y a vraiment rien qui te choque ? :)

Posté : 19 avr. 2006, 12:07
par freemen
Quel est la différence entre ça
while($ress = mysql_fetch_object($result)){
		$arRess[$ress->id_ress ] = array(
								'id'=>$ress->id_ress, 
								'titre'=>$ress->titre_ress, 
								'jpg'=>$ress->img_ress, 
								'pdf'=>$ress->pdf_ress, 
								'eps'=>$ress->eps_ress, 
								'pub_ress'=>$ress->pub_ress);}


///////////////////////

	  $ressList = listCentre();
	 	foreach($ressList as $key=>$val){
et ça mis à part les variable qui changent?
		while($ress_edit = mysql_fetch_object($result)){
		$arRess_edit[$ress_edit->id_ress ] = array(
											'id'=>$ress_edit->id_ress, 
											'titre'=>$ress_edit->titre_ress, 
											'jpg'=>$ress_edit->img_ress, 
											'pdf'=>$ress_edit->pdf_ress, 
											'eps'=>$ress_edit->eps_ress, 
											'pub_ress'=>$ress_edit->pub_ress);
		} 


//////////////////////


  $ress_edit = listEdit();
	foreach($ress_edit as $key=>$val){

Posté : 19 avr. 2006, 12:08
par zigz4g
Aller je te donne le coup de petit doigt :)
function listEdit(){
  if(isset($_GET['id_ress'])) {
    echo '<pre>';var_dump($_GET['id_ress']);echo '</pre>';
    $ress_edit = $_GET['id_ress']; // <<<--- ATTENTION a bien echapper ta variable.
    $query = "SELECT * FROM t_ressource WHERE id_ress= '$ress_edit'";
    $result = mysql_query($query) or die(mysql_error());
    while($ress_edit = mysql_fetch_object($result)) {
      $arRess_edit[$ress_edit->id_ress ] = array(
         'id'=>$ress_edit->id_ress,
         'titre'=>$ress_edit->titre_ress,
         'jpg'=>$ress_edit->img_ress,
         'pdf'=>$ress_edit->pdf_ress,
         'eps'=>$ress_edit->eps_ress,
         'pub_ress'=>$ress_edit->pub_ress
       );
    return($arRess_edit); // ICI C'est choquant, non ???
    }     
  }
}
Comme le fait remarque Ryle.
Données en entrée de la fonction : aucun
Données en sortie de la fonction : aucun

Posté : 19 avr. 2006, 12:08
par freemen
Données en entrée de la fonction : aucun
Données en sortie de la fonction : aucun
Il n'y a vraiment rien qui te choque ? :)
Si si, j'ai compris que tu me dis que mon bidule truc y marche pas :lol:

Je suis à bout...je vais pleurer, et il me reste encore 4 semaines et demi sur ce projet de merde!!!

Posté : 19 avr. 2006, 12:12
par freemen
Ok...ça marche.

Je pense que je suis surmené...trop de chose à penser, marre de me battre avec un boss qui fait chier sur des conneries et qui ne sais même pas écrire un lien html... :cry:

Encore une fois...comme d'ab...Un GRAND Merci :wink:

Posté : 19 avr. 2006, 12:18
par Ryle
return powa' !! ;)