Форум программистов, компьютерный форум, киберфорум
Наши страницы
PHP для начинающих
Войти
Регистрация
Восстановить пароль
 
vadim-rejting
0 / 0 / 1
Регистрация: 05.09.2013
Сообщений: 1
#1

Подскажите как правильно работает данный код? - PHP

09.09.2013, 10:54. Просмотров 464. Ответов 1
Метки нет (Все метки)

Здравствуйте.

Сайт состоит их бесконечного вложенных категорий. Есть id - идентификатор категории и ref_id идентификатор родительской категории.
Пишу скрипт вывода пути от главной, до страницы на которой находишься.
Пример:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<?
 
mysql_connect('localhost', 'mysql', 'mysql');
mysql_select_db('rejting');
 
$n='1';//Непонятная мне фигня, но скорей всего из за того что переменная $n является глобальной, то там постоянно что то происходит.
 
$c='0';//Эта переменная нужна для поджсчёта количества выполненной функции a();
function a()//Функция a(); в ней всё и просиходит.
{
global $n,$c, $t;//Глобальные переменные, сам узнал о них неделю назад, по этому не совсем понимаю что это.
$c++;//Когда функция выполняется, то переменная $c увеличивается на 1, это возможно, так как она глобальная.
if($n){//Если переменная $n которая отвечает за идентификатор родительской категории больше нуля, то будет работать код описанный ниже.
if($c==1){$h='47';}else{$h=$n;}//Если это первое обращение к функции, то переменная $h будет иметь значение суперглобальной переменной $_GET['id'], которая в свою очередь является идентификатором категории в которой мы находимся.
//Если это второе обращение к функции, то переменная $h будет брать значение переменной $n из предыдущего выполнения функции, это возможно благодаря тому, что она глобальная.
    $r=mysql_query("SELECT * FROM category WHERE id =".$h."");//Это понятно
    $a=mysql_fetch_assoc($r);//Тут тоже
    $n=$a['ref_id'];//Переменной $n присваиваем идентификатор родительской категории.
    $t[$c]=$n;//Переменной $t со значением $c присваиваем идентификатор родительской категории.
    a();//Если есть идентификатор родительской категории то вызываем функцию a(); для поиска идентификатора родительской категории
}
}
a();//Вызов функции
$i=count($t)+1;//Переменная для цикла
while($i>1)//Цикл с выводом в противоположном порядке идентификаторов родительских категорий.
{
$i--;
echo $t[$i].'<br />';
}
 
?>
Я не совсем понимаю как он робит. Верно ли я описал как он работает? Если у вас есть возможность, то не могли бы вы написать свои комментарии для работы скрипта, в место моих.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.09.2013, 10:54
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Подскажите как правильно работает данный код? (PHP):

Подскажите как правильно прописать код
Всем привет. Мучаюсь, не знаю как правильно прописать, чтобы корректно все...

Подскажите, пожалуйста, как правильно поменять код в header?
Шапка сайта на всех страницах. В сингл-записях она меняется на изображение...

Подскажите пожалуйста как правильно написать код в переменной PHP
У меня файл обработчик сообщения - calc.php и там есть такой кусок кода: ...

Подскажите, как работает код
Логика моего кода такова: клиенты периодически обращаются к коду с разными ID,...

Почему на денвере не работает данный код
Здравствуйте уважаемые почему на сервере код работает а на денвере не хочет?...

Не правильно работает код
не получается вытянуть со строки ! и ошибок не пишет и не выводит! return...

1
TAB
213 / 213 / 74
Регистрация: 12.03.2013
Сообщений: 485
09.09.2013, 13:22 #2
Обход иерархии категорий от заданной (рекурсия), и не нужны никакие глобальные переменные:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
function getBreadcrumbs($id) {
    $categories = array();
 
    $query  = "SELECT `ref_id` FROM `category` WHERE `id`=$id";
    $result = mysql_query($query);
    $parent = (int) mysql_result($result, 0);
    if ( $parent ) {
        $categories[]   = $parent;
        $categories     = array_merge($categories, getBreadcrumbs($parent));
    }
 
    return $categories;
}
mysql_connect('localhost', 'mysql', 'mysql');
mysql_select_db('rejting');
 
$id = $_GET['id'];
echo '<pre>' . implode("\n", array_reverse(getBreadcrumbs($id))) . '</pre>';
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.09.2013, 13:22
Привет! Вот еще темы с решениями:

Не правильно работает код
Добрый вечер ув. пользователи ! Подскажите пожалуйста, что ни так в коде. Не...

Не правильно работает код для рекламы
Всем привет! Есть код, который показывает кнопку только после клика по баннеру....

Как можно сжать данный код, вызов функции?
if ( isset($get) &amp;&amp; $get == 2) { $data =...

Почему в мазиле код работает правильно а в других браузерах нет?
Есть файл удаления и файл в котором выводятся картинки .После нажатия кнопки...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru