probleme d'affichage de données

Par sirine, il y a 11 ans


bonsoir,svp j'ai un probleme d'affichage de données depuis ma base de données de mon site hébergé gratuitement sur un serveur web. les données s'ajoute convenablement à la base de données mais ils ne s'affichent pas avec un erreur qui est le suivant:
Warning: Invalid argument supplied for foreach() in C:\wamp\www\pfa\Candidat_1A_MASTERRITEL.php on line 22
avec la ligne 22: <?php foreach ($int as $v)
et $int:$int= $candidat->aff_candidat_int_MPRITEL_1A($c);
je suis totalement bloqué et je suis en train de préparer mon projet de fin d'année. Merci de m'aider le plutot possible et merci d'avance.

11 réponses

Balbert, il y a 11 ans

Pouvez vous nous poster le code du fichier Candidat_1A_MASTERRITEL.php

sirine, il y a 11 ans

Avec plaisir,
include"classe/candidat.php" ;
$candidat= new candidat ;
$c= $candidat->DBconnect() ; $int= $candidat->aff_candidat_int_MPRITEL_1A($c);$ext= $candidat->aff_candidat_ext_MPRITEL_1A($c);?>
...
<?php foreach ($int as $v)
{echo "<tr><td>".$v["id_cand_enet_1a_ma_pro"]."</td> <td>".$v["cin_c"]."</td><td>".$v["nom_c"]." </td> <td>".$v["prenom_c"]." </td> <td>".$v["email_c"]."</td><td>".$v["etablissement_c"]."</td><td>".$v["diplome_c"]."</td><td>".$v["promotion_c"]."</td> ><td>".$v["score"]."</td></tr>" ;}?>

et aff_candidat_int_MPRITEL_1A($c) est une fonction présenté dans la classe mere candidat avec le code suivant:
public function aff_candidat_int_MPRITEL_1A ($c)
{ $sql= "select * from cand_enet_1a_ma_pro where choix='mpRITEL' ORDER BY score DESC";
$obj1=$c->query($sql); if ($obj1->rowcount()==0)
return "liste des candidats est vide " ;
else { while( $row=$obj1->fetch(PDO ::FETCH_ASSOC) ) {$T[]=$row ;} return $T; } }

Balbert, il y a 11 ans

Dans la fonction aff_candidat_int_MPRITEL_1A ($c)

La ou vous avez fait

return "liste des candidats est vide " ;

Remplacer par

return array() ;

Surement votre boucle essai de parcourir une chaine de caractère, ce qui n'est pas possible avec un foreach.

sirine, il y a 11 ans

l'erreur n'existe pas lorsque je la remplacer comme vous avez me dit mais les données ne s'affiche pas encore :(

Balbert, il y a 11 ans

Etes vous sur qu'il ya des données dans votre base de données ?

Carouge10, il y a 11 ans

avant le foreach faite un :

var_dump($int); die();

Et dites nous ce qui est affiché.

Balbert, il y a 11 ans

Vous pouvez remplacer votre fonction par

public function aff_candidat_int_MPRITEL_1A ($c) { $sql= "select * from cand_enet_1a_ma_pro where choix='mpRITEL' ORDER BY score DESC"; $obj1=$c->query($sql); return $obj1->fetchAll(PDO::FETCH_ASSOC); }
sirine, il y a 11 ans

il n'affiche pas de données mais il m'affiche :array(0) { }

Balbert, il y a 11 ans

Sa veux dire qu'il n'ya pas de choix qui vaut 'mpRITEL' dans la table cand_enet_1a_ma_pro

sirine, il y a 11 ans

oui t'as raison il n'existe pas 'mpRITEL' se trouve dans une collonne "choix" mais elle est vide je sais pas pourquoi. je vais vérifié la fonction de choix : public function choixmaster_1A_interne ($c,$p)
{$master="update cand_enet_1a_ma_pro SET choix='".$p['choix']."' where id_cand_enet_1a_ma_pro= '".$_SESSION["id_can"]."' " ;
if($c->query($master)) return "ajout est terminé avec succes"; else return "impossible "; }

Balbert, il y a 11 ans

Je vous conseil d'utilisés des requetes preparé lorsque vous inserez des données dans la base de données.
En plus dans vos fonctions d'insertions, au lieu de renvoyer des chaines de caractère retourné des booleens c'est mieux.