Invalid argument supplied for foreach()

samghami Messages postés 61 Date d'inscription   Statut Membre Dernière intervention   -  
maka54 Messages postés 698 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour, J'ai une erreur...
il me dit que c'est une erreur par rapport a cette ligne la: foreach($result as $plante)

Voici mon code:
<?php
$link = mysqli_connect('localhost', 'root', 'MDP', 'database');


$aujourdhui = strtotime('today');
$troisjours = strtotime('-3 days', $aujourdhui);
$sixjours = strtotime('-3 days', $troisjours);
$dixheurs = strtotime('-10 hours', $sixjours);


$data = mysqli_query($link ,"SELECT * FROM rpg_jardin_int WHERE date_plantation < '$troisjours' AND date_plantation > '$dixheurs';");
$result = mysqli_fetch_assoc($data);

foreach($result as $plante)
{
    if($plante['date_plantation'] < $troisjours AND ($plante['date_plantation'] > $sixjours) AND $plante['etat'] != "floraison")
        mysqli_query($link ,"UPDATE rpg_jardin_int SET etat = 'floraison' WHERE id = '".$plante['id']."' ")or die (mysqli_error($link));
    elseif($plante['date_plantation'] < $sixjours AND ($plante['date_plantation'] > $dixheurs) AND $plante['etat'] != "recolte")
        mysqli_query($link ,"UPDATE rpg_jardin_int SET etat = 'recolte' WHERE id = '".$plante['id']."' ")or die (mysqli_error($link));
    elseif($plante['date_plantation'] < $dixheurs AND $plante['etat'] != "finrecolte")
        mysqli_query($link ,"UPDATE rpg_jardin_int SET etat = 'finrecolte' WHERE id = '".$plante['id']."' ")or die (mysqli_error($link));
}
// on ferme la connexion à mysql
mysqli_close($link)
?>


A voir également:

3 réponses

maka54 Messages postés 698 Date d'inscription   Statut Membre Dernière intervention   80
 
$result est vide donc le foreach renvoie une erreur

pour eviter çà

if($result){

  foreach($result as $plante){

    ...

  }

}
0
samghami Messages postés 61 Date d'inscription   Statut Membre Dernière intervention   1
 
Il ne marque plus d'erreur mais cela ne fonctionne pas :-/
Je precise qe le script est une tache cron.
Il doit changer les plant en fonction du temps
0
maka54 Messages postés 698 Date d'inscription   Statut Membre Dernière intervention   80
 
mysqli_fetch_assoc($data);

cette ligne affiche un enregistrement et pas un tableau, non ?

essaye avec :

while($plante = mysqli_fetch_assoc($data)){

}
0