Вверх ↑
Этот топик читают: Гость
Ответов: 327
Рейтинг: 5
#1: 2014-08-19 16:42:05 ЛС | профиль | цитата
Файл index.php
<? include 'config.php'; ?>
...
<div id="main-nav">
<? include 'main.php' ?>
<div id="user">
...
Файл main.php
<?
include 'config.php';
function get_cat() {
$result = $db->prepare('SELECT * FROM menu');
$result = $result->execute();
//$result->fetch();
if(!$result) {
return NULL;
}
$arr_cat = array();
if(mysql_num_rows($result) != 0) {

//В цикле формируем массив
for($i = 0; $i < mysql_num_rows($result);$i++) {
$row = mysql_fetch_array($result,MYSQL_ASSOC);

//Формируем массив, где ключами являются адишники на родительские категории
if(empty($arr_cat[$row['parent_id']])) {
$arr_cat[$row['parent_id']] = array();
}
$arr_cat[$row['parent_id']][] = $row;
}
//возвращаем массив

return $arr_cat;
}
}
//вывод каталога с помощью рекурсии
function view_cat($arr,$parent_id = 0,$first = '') {
global $str;
//Условия выхода из рекурсии
if(empty($arr[$parent_id])) {
return;
}
if ($first == "") {
echo "<ul id='MenuBar1' class='MenuBarHorizontal'><li><a href='/'>Главная</a></li>\r\n";}else echo '<ul>'."\r\n";
//перебираем в цикле массив и выводим на экран
for($i = 0; $i < count($arr[$parent_id]);$i++) {


/////////////////////////////////////////////////////////////
$href = $arr[$parent_id][$i]['href'];
$title = $arr[$parent_id][$i]['name'];
/////////////////////////////////////////////////////////////

echo '<li><a href="/'.$href.'">'.$title.'</a>'."\r\n";
//рекурсия - проверяем нет ли дочерних категорий
view_cat($arr,$arr[$parent_id][$i]['id'],$first = "1");
echo '</li>'."\r\n";
}
echo '</ul>'."\r\n";
}
$res = get_cat();
view_cat($res);
?>

Файл config.php
$dsn = "mysql:host=127.0.0.1;dbname=test;charset=mysql";
$opt = array(
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
);
$db = new PDO($dsn, 'root', '', $opt);

В результате получаю Fatal error: Call to a member function prepare() on a non-object in Z:\home\my\www\main.php on line 4
Все файлы находятся в одной директории.
------------ Дoбавленo в 16.42:
Вынес за функцию
$res = $db->prepare("SELECT * FROM menu");
$res->execute();
$rowcount = $res->rowCount();
при вызове функции передаю $rowcount,$res.
Вроде все заработало, но почему он не хотел внутри функции работать? config.php ведь раньше вызова подключается.
карма: 0

0
Разработчик
Ответов: 4698
Рейтинг: 426
#2: 2014-08-19 16:58:00 ЛС | профиль | цитата
knoot0279 писал(а):
Вроде все заработало, но почему он не хотел внутри функции работать? config.php ведь раньше вызова подключается.

В начало функции вписать
#php
global $db;
карма: 10
0
Ответов: 327
Рейтинг: 5
#3: 2014-08-19 17:13:40 ЛС | профиль | цитата
спасибо
карма: 0

0
3
Сообщение
...
Прикрепленные файлы
(файлы не залиты)