[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Цикл и работа с БД .
Rutmens
Нужно реализовать вывод данныхъ как у дле движка .
user posted image
Как видно из таблицы что 0 это концовка значит она главная ...
Пример: человек заходит и попадает в раздел дракула значит нужно вывести под разделы это ужасы далее кино .
Может кто поможет реализовать ?



Спустя 17 минут, 33 секунды (12.08.2010 - 11:30) Basili4 написал(а):
Rutmens
любой учебник по SQL и через 2 часа ты все поймешь

Спустя 11 минут, 43 секунды (12.08.2010 - 11:42) Rutmens написал(а):
Ответ супер !!! я написал как мне реализовать ? а не какие учебники нужны .. я сделал код но чёт швайна.

P.S. (от linker) Выбирайте выражения без неприличных слов.

Спустя 55 секунд (12.08.2010 - 11:43) Basili4 написал(а):
Rutmens
ну так покажи код

Спустя 18 секунд (12.08.2010 - 11:43) DedMorozzz написал(а):
вот с этого и надо было начать. Что ты что-то сделал. А не "а ну ка быстренько напишите мне код". Показывай что написал, укажем на ошибки.

Спустя 3 минуты, 45 секунд (12.08.2010 - 11:47) Rutmens написал(а):
$vv = "Amer_pie2";

$query = mysql_query ("SELECT * FROM SX WHERE name = '$vv' ");
while ($myrow = mysql_fetch_array($query))
{
print $myrow['name'] ."<BR>";
$res = mysql_query ("SELECT * FROM SX WHERE id = '$myrow[glav]' ");
while ( $myrow = mysql_fetch_array($res))
{
print $myrow['name']."<BR>";
}
}


$vv = "Amer_pie2"; (амер.пирог) - это понятно там сделаю потом через гет ... это пока для проверки .
Должно по идее выйти по ципочке ...
фильм-комедия-амер.пирог

Спустя 27 минут, 14 секунд (12.08.2010 - 12:14) DedMorozzz написал(а):
Смотри. ПО данной структуре БД не понятно, к какому жанру будет относиться Дракула. Ибо и на комедии и на ужасах один и тот же айди.

Спустя 11 минут, 53 секунды (12.08.2010 - 12:26) linker написал(а):
DedMorozzz
Нет, там ссылка id_n аля ParentId. Амер.пирог ссылается на комедии, которые в свою очередь ссылаются на фильм. А Дракуда ссылается на ужасы, которые в свою очередь ссылаются тоже на фильмы.

Спустя 24 минуты, 34 секунды (12.08.2010 - 12:51) DedMorozzz написал(а):
А не совпадение ли это? Хотя чёрт его нает. Возможно так и задумано. Если парент - ща напишу как.

Спустя 2 минуты, 24 секунды (12.08.2010 - 12:53) Rutmens написал(а):
Цитата (DedMorozzz @ 12.08.2010 - 09:51)
А не совпадение ли это? Хотя чёрт его нает. Возможно так и задумано. Если парент - ща напишу как.

В смысле ? если вызвать дракулу то далее будет идти ужасы и далее уже фильм ..
Такая конструкция у дле движка сделана я оттуда позаимствовал .. но доковырять не могу .

Спустя 2 минуты, 17 секунд (12.08.2010 - 12:55) linker написал(а):
DedMorozzz
Ну да, дочерний id_n ссылается на родительский id, при id_n = 0 - это верхушка дерева.

Спустя 50 секунд (12.08.2010 - 12:56) DedMorozzz написал(а):
попадает на дракулу. Выходит у нас есть выборка:
id= 5, id_n=3, name=Drakula.
Запсываем id_n и делаем запрос. SELECT * FROM `table` WHERE id=<id_n полученый из дракулы>
Далее ТОЧНО такой же принцип. Дашь дамп, даже возможно одним запросом напишу.

Спустя 2 минуты, 11 секунд (12.08.2010 - 12:58) DedMorozzz написал(а):
А если древо будет безконечное - тогда, действительно в цикле пропустить его.

Спустя 9 минут, 28 секунд (12.08.2010 - 13:08) Rutmens написал(а):
Цитата (DedMorozzz @ 12.08.2010 - 09:58)
А если древо будет безконечное - тогда, действительно в цикле пропустить его.

В смысле будет бесконечное ?

Спустя 5 минут, 13 секунд (12.08.2010 - 13:13) DedMorozzz написал(а):
Ну это как "конечное", только наоборот.
В данном случае - если будут разделы "фильмы"->"фильмы до 2000го года и после 1990"-> "Фильмы до 2008го и до 2005го"->"Ужасы"->"Дракула".
Эту вложенность можно увеличить до бесконечности.

Спустя 1 час, 3 минуты, 58 секунд (12.08.2010 - 14:17) Guest написал(а):
Может хоть кнотить набросает небольшой код ? ....

Спустя 4 часа, 49 минут, 34 секунды (12.08.2010 - 19:07) Rutmens написал(а):
Вопрос ещё в силе .

Спустя 13 часов, 22 минуты, 46 секунд (13.08.2010 - 08:29) linker написал(а):
Есть вариант но с отдельной таблицей с путями для каждого элемента. Там два поля: parent - ссылка на родительский элемент (id_n, который), id - собственно идентификатор самого дочернего элемента. Например, для Дракулы должны быть следующие записи
parent | id
------------
3 | 5
1 | 5
Тогда одним запросом вытягиваем всю последовательность
SELECT * FROM films WHERE
id = 5 or id IN (SELECT parent FROM ways WHERE id = 5)
ORDER BY id ASC

Спустя 3 часа, 16 минут, 57 секунд (13.08.2010 - 11:46) Rutmens написал(а):
Цитата (linker @ 13.08.2010 - 05:29)
Есть вариант но с отдельной таблицей с путями для каждого элемента. Там два поля: parent - ссылка на родительский элемент (id_n, который), id - собственно идентификатор самого дочернего элемента. Например, для Дракулы должны быть следующие записи
parent | id
------------
3 | 5
1 | 5
Тогда одним запросом вытягиваем всю последовательность
SELECT * FROM films WHERE
id = 7 or id IN (SELECT parent FROM ways WHERE id = 7)
ORDER BY id ASC

У меня на сайте будет не про фильмы , а совсем другое .. я для примера привел .. да и база что-то напонминает мою старую то состояла из точнее из 3 .. но нужно одну совместить чтобы осталось две .
Смыл тут такой .. у меня сайт по софту и прошивкам .. к примеру если вызвать SOFT через GET то по сути должно пойти всё по циклу ... но у каждой мобилы есть свой раздел софта .
Хотел совместить к примеру SIMENS с моделью (для примера) S500 и ссылка бы выгледила вот так .
www.site.ru/simens/s500/
А если вызвать уже по модели ссылка можно сделать вот такую
www.site.ru/1234/soft/
Где 1234 - это id модели .. и тогда думаю не должно выйти путаницы .

P.S Ну всё равно спасибо , как рещу свою проблему выложу код .

Спустя 26 минут, 49 секунд (13.08.2010 - 12:13) linker написал(а):
У меня тоже пример, который можно заточить под что-то похожее. Вобщем, хозяин - барин.

Спустя 4 дня, 11 часов, 10 минут, 31 секунда (17.08.2010 - 23:24) Rutmens написал(а):
Написал вот такую функцию но я понимаю что она реализована плохо ... может ктонить немного подскажет как лучше сделать по другому ?
function resivers ($step){

$conn = db_connect();
$result = $conn->query("SELECT * FROM films WHERE name = '$step'");
$row = $result->fetch_array();
print $row['id']."НЕТ - ";
$result = $conn->query("SELECT * FROM films WHERE id_n = '$row[id]'");
while ($rows = $result->fetch_array())
{
print "<BR>".$rows['name'] ;
}

}

Ща всё по точнее проверил работает как раз как нужно мне ... но нужно подкоректировать правильно ...

function resivers ($step){
$conn = db_connect();
$result = $conn->query("SELECT * FROM films WHERE name = '$step'");
$row = $result->fetch_array();
print $row['id']." - ID вызваного ";
if ($row['id'] != false)
{
$result = $conn->query("SELECT * FROM films WHERE id_n = '$row[id]'");
while ($rows = $result->fetch_array())
{
print "<BR><a href=http://localhost/r/index.php?name=".$rows['name'].">".$rows['name']."</a>" ;
}
}
}

Спустя 21 час, 19 минут, 16 секунд (18.08.2010 - 20:43) Rutmens написал(а):
Ну что не кого нету ?

Спустя 11 часов, 33 минуты, 57 секунд (19.08.2010 - 08:17) linker написал(а):
Имхо, это
if ($row['id'] != false)
фигня какая-то

Спустя 3 часа, 8 минут, 15 секунд (19.08.2010 - 11:25) Rutmens написал(а):
Сорри это я для теста туда кинул у меня просто в отдельном файле все это не хотел мудрить с подключением .
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.