Форум программистов, компьютерный форум, киберфорум
Наши страницы

PHP для начинающих

Войти
Регистрация
Восстановить пароль
 
vadim-rejting
0 / 0 / 0
Регистрация: 05.09.2013
Сообщений: 1
#1

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

09.09.2013, 10:54. Просмотров 455. Ответов 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):

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

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

Почему на денвере не работает данный код - PHP
Здравствуйте уважаемые почему на сервере код работает а на денвере не хочет? Может что то включить надо? Просто с таким кодом еще не...

Не правильно работает код - PHP
не получается вытянуть со строки ! и ошибок не пишет и не выводит! return $this-&gt;section_info; private $section_info; ...

Не правильно работает код - PHP
Добрый вечер ув. пользователи ! Подскажите пожалуйста, что ни так в коде. Не могу разобраться почему возвращаются данные только по первому...

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

1
TAB
213 / 213 / 22
Регистрация: 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
Привет! Вот еще темы с ответами:

Подскажите как правильно исправить ошибку - PHP
Warning: preg_match(): Delimiter must not be alphanumeric or backslash ....кусок кода, как правильно сделать? if...

Подскажите пож как правильно сделать? - PHP
Здравствуйте1 Скажите пож как правильно спрятать сесию - нашел способ спрятать через private (доступна только тому кто ее вызвал) НО ее...

Подскажите, как правильно сделать запрос - PHP
База данных называется knig таблица avtor в ней по полю Imya текстовому нужно совершить поиск я сделала форму выбора и сам запрос но...

Как правильно написать код - PHP
Есть код, в котором выполняются некоторые проверки ввода данных, результаты отображаются при помощи ajax. Проблема в том, что если я ввожу...


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

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

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