par
Saian » 09 juin 2019, 13:20
Salut, en admettant que PDO::fetchAll retourne bien un tableau vide quand la requête ne retourne aucun résultat :
function html_table($lines = null)
{
if (!count($lines))
return '<p>No data returned</p>';
$html = '<table>';
// columns
$html .= '<thead><tr>';
foreach ($lines[0] as $colname => $value) {
$html .= "<th>$colname</th>";
}
$html .= '</tr></thead>';
// lines
$html .= '<tbody>';
foreach ($lines as $cols) {
$html .= '<tr>';
foreach ($cols as $value) {
$html .= "<td>$value</td>";
}
$html .= '</tr>';
}
$html .= '</tbody>';
$html .= '</table>';
return $html;
}
EDIT : je viens de voir ton problème, c'est que dans
db_selectionner_tous tu appelles
html_table sans paramètre, donc dans
html_table,
$array est
null et un
foreach null provoque l'erreur que tu as (l'argument fourni à foreach n'est pas valide). Dans la logique tu serais même sensé avoir une erreur en amont car $array[0] sur null ça doit péter une erreur aussi, mais bon, vu que c'est appelé dans le foreach, peut être que...
Salut, en admettant que PDO::fetchAll retourne bien un tableau vide quand la requête ne retourne aucun résultat :
[PHP]function html_table($lines = null)
{
if (!count($lines))
return '<p>No data returned</p>';
$html = '<table>';
// columns
$html .= '<thead><tr>';
foreach ($lines[0] as $colname => $value) {
$html .= "<th>$colname</th>";
}
$html .= '</tr></thead>';
// lines
$html .= '<tbody>';
foreach ($lines as $cols) {
$html .= '<tr>';
foreach ($cols as $value) {
$html .= "<td>$value</td>";
}
$html .= '</tr>';
}
$html .= '</tbody>';
$html .= '</table>';
return $html;
}[/PHP]
EDIT : je viens de voir ton problème, c'est que dans [b]db_selectionner_tous[/b] tu appelles [b]html_table[/b] sans paramètre, donc dans [b]html_table[/b], [b]$array[/b] est [b]null[/b] et un [b]foreach null[/b] provoque l'erreur que tu as (l'argument fourni à foreach n'est pas valide). Dans la logique tu serais même sensé avoir une erreur en amont car $array[0] sur null ça doit péter une erreur aussi, mais bon, vu que c'est appelé dans le foreach, peut être que...