Bonjour tout le monde , j'espere que vous vous portez bien, voilà j'ai un problème avec php et je ne sais vraiment pas ce que je fais mal,voilà j'ai un
tableau de différentes populations et je dois faire des enregistrements dans ma base de données en fonction du nombres d'individus.

//pour déterminer le nombre d'individus de chaque population je fais une premiere requete qui est:

$sel=$pdo->prepare("SELECT * FROM grand_ensemble WHERE groupe = ? and age=?");

$sel->setFetchMode(PDO::FETCH_ASSOC);
        $sel->execute (array(1,40));
        $tab=$sel->fetchAll();

$population1=count($tab);
echo $population1;//il ya 7 groupes alors je fais la même requete 7fois et je mets toutes les populations dans un même tableau associatif, à la fin j'obtiens

$tableau_des_populations=[

1=>$population1,
2=>$population2,
3=>$population3,
4=>$population4,
5=>$population5,
6=>$population6,
7=>$population7,
];// vu que je souhaite classer les populations toujours de la plus petite en terme de //nombre d'individus vers la plus grande j'utilise la fonction asort();
asort($tableau_des_populations); //ensuite je récupère la clé de la valeur ayant le plus //petit nombre d'individus en faisant une boucle qui s'arrête dès le premier élément

$i = 0;
foreach($tableau_des_populations as $Groupe =>$nombre_individus) {
  if($i==1) break;
  $i++;
$le_plus_petit_groupe=$Groupe;//jusqu'ici tout fonctionne bien,mais à présent que je //souhaite faire mon enregistrement dans ma base de données en fontion de Groupe, rien ne //fonctionne ,voici ma requête:

if($le_plus_petit_groupe=1){
    $req=$pdo->prepare("SELECT liens FROM images_groupe1 ORDER BY id DESC ");
$req->execute();
$req->setFetchMode(PDO::FETCH_ASSOC);
$image_du_groupe=$req->fetch();//là j'ai sélectionné une image du groupe 1 dans une table //que j'insère dans une autre table

$req=$pdo->prepare("UPDATE historique_final SET image_des_groupes=? WHERE date_de_placement>?");
$req->execute([$image_groupe1['liens'],$dernier_traitement]);

}elseif($le_plus_petit_groupe=2){$req=$pdo->prepare("SELECT liens FROM images_groupe2 ORDER BY id DESC ");}//et j'ai fait le même type de conditions pour les autres groupe,ex: elseif($le_plus_petit_groupe=3){$req=$pdo->prepare("SELECT liens FROM images_groupe3 ORDER BY id DESC ")
;//etc.....}
//mon problème est le suivant, peu importe la valeur de '$le_plus_petit_groupe'(3.7.2 //etc...) , c'est toujours les images de du premier groupe(images_groupes1) de la base de //données qui sont sélectionnées et insérées dans les différentes tables et je ne sais pas //pourquoi pouvez vous m'aider??merci d'avance

3 réponses


Hello,

Attention à tes opérateurs de comparaison qui doivent être "==" et non "=" comme ici :

    if($le_plus_petit_groupe=1)

C'est peut être l'origine de ton problème...

oui effectivement j'y ai pensé mais c'est toujours pareil même lorsque je fais if($le_plus_petit_groupe==1)
et lorsque je fais echo $le_plus_petit_groupe j'ai quelque chose de différents que le var_dump($le_plus_petit_groupe),je ne sais pas si cette info peut aider

Autre chose, ta boucle est étrange, il manque un " } " et vu que tu souhaites sortir après la première itération il n'est pas nécessaire ici de créer un compteur :

foreach($tableau_des_populations as $Groupe => $nombre_individus) {
    $le_plus_petit_groupe = $Groupe; // premier groupe du tableau trié
    break;
}