Короче понятно что но, то то я не понял как решить. var_dump($cat) Спойлер array(24) { [0]=> array(3) { ["id"]=> string(1) "1" ["parent_id"]=> string(1) "1" ["name"]=> string(20) "Рестораныaa" } [1]=> array(3) { ["id"]=> string(1) "2" ["parent_id"]=> string(1) "2" ["name"]=> string(18) ........ view_cat.php PHP: require_once __DIR__ . '/../functions/database.php'; function cat_getAll() { getConnectSql(); global $mysqli; $res = $mysqli->query("SELECT * FROM `categories`") or die(mysqli_error($res)); $articles = array(); while($row = $res->fetch_assoc()) { $articles[] = $row; } return $articles; } index.php PHP: require_once __DIR__ . '/models/view_cat.php'; $cat = cat_getAll(); var_dump($cat); echo $cat; include __DIR__ . '/views/header.php'; предупреждение: Warning: Invalid argument supplied for foreach() in... views\header.php on line 59 header.php PHP: <?php if (isset($cat) && is_array($cat) && !empty($cat)) : ?> <?php foreach ($cats as $cat ): ?> <li><a href="/cat.php?id=<?php echo $cat['id']; ?>"><?php echo $cat['name']; ?></a></li> <?php endforeach; ?> <?php endif; ?>
@EvilScorpion, проверяете $cat, а в foreach $cats. --- Добавлено --- Проверок как-то маловато. Можно было бы пожёстче : PHP: <?php if (isset($cat) && is_array($cat) && !empty($cat) && !is_null($cat) && count($cat) > 0 /* и т.д.*/ ) : endif;
Хотелось бы понять, как вы её решать пробовали. Имя переменной исправили? Покажите, как сейчас выглядит запись цикла.
PHP: <h2>Категории</h2> <?php if (isset($cat) && is_array($cat) && !empty($cat) && !is_null($cat) && count($cat)) :?> <nav class="c_menu"> <?php foreach ($cat as $myCat ): ?> <li><a href="/cat.php?id=<?php echo $myCat['id']; ?>"><?php echo $myCat['name']; ?></a></li> <?php endforeach; ?> </nav> <?php endif; ?> Сделал так, вроде заработало. нормально надеюсь.
@EvilScorpion, по поводу цикла - да, а вот по поводу проверки... в общем, я был уверен, что вы поймёте, что это прикол. Посмотрите на свою функцию. Что она может возвращать? Всегда массив, пусть даже пустой и естественно, что он всегда будет существовать. Из этого можно сделать вывод, что isset и is_array абсолютно бесполезны. Проверки на "пустоту" (empty) будет достаточно с головой, да и она не особо нужна, т.к. в случае пустого массива, в цикле просто ничего не выведется.