Warning: Invalid argument supplied for foreach()

Fabio Grasso

Nuovo Utente
6 Nov 2014
26
0
0
34
www.grassofabio.com
Buona serata e rieccomi di nuovo quì :)

Devo recuperare dei valori da una tabella.
Se nella tabella ci sono dei valori questi vengono estratti correttamente,mentre se la tabella è vuota nello spazio dove dovrebbero esserci degli utenti viene stampato questo messaggio Warning: Invalid argument supplied for foreach().

Utilizzo XAMPP e questo è il codice che ho usato.
Controller:
PHP:
// includo la connessione al database
include '../../include/db.inc.php';

// recupero gli utenti dal database
try { 
   $result = $pdo->query('SELECT id, cognome, nome, username,password FROM utenti');
}
catch (PDOException $e) {
   $error = 'Errore in recupero utenti dal database';
   include 'error.html.php';
   exit();
}

foreach ($result as $row) {
   $utenti[] = array('id' => $row['id'], 'cognome' => $row['cognome'], 'nome' => $row['nome'], 'username' => $row['username'], 'password' => $row['password']);	
}

include 'utenti.html.php';

Visualizzazione dei risultati
PHP:
<?php foreach($utenti as $utente): ?>
    ...  ...  ...
<?php endforeach; ?>

Qualcuno potrebbe spiegarmi gentilmente perchè esce quel warning e magari come disattivarlo.
 
Ultima modifica di un moderatore:
Prova a fare così:
PHP:
if(is_array($result){
   foreach ($result as $row) {
      $utenti[] = array('id' => $row['id'], 'cognome' => $row['cognome'], 'nome' => $row['nome'], 'username' => $row['username'], 'password' => $row['password']);    
   }
}
 
Allora,provando come mi hai suggerito il warning c'è sempre, mentre inserendo l'if con la funzione is_array prima del foreach ma nella pagina dove visualizzo i risultati,ovvero qua
if(is_array($utenti){
foreach($utenti as $utente):
... ... ...
endforeach;
}
il warning è scomparso.
Grazie mille per l'aiuto :)
 
Ah si vero. Intendevo li ma in realtà ho copiato l'altro codice all'interno dell'if :)
Hai fatto bene.
Figurati.
 

Discussioni simili