Invalid argument supplied for foreach()

samghami Messages postés 61 Date d'inscription   Statut Membre Dernière intervention   -  
maka54 Messages postés 721 Statut Membre -
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)
?>


3 réponses

  1. maka54 Messages postés 721 Statut Membre 80
     
    $result est vide donc le foreach renvoie une erreur

    pour eviter çà

    if($result){
    
      foreach($result as $plante){
    
        ...
    
      }
    
    }
    0
  2. 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
  3. maka54 Messages postés 721 Statut Membre 80
     
    mysqli_fetch_assoc($data);

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

    essaye avec :

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