|
|
|
| Есть таблица. Вида:
id_catalog id_parent name
1 0 !Разное
2 1 !Материалы
3 0 !Разное
4 3 Прочие товары
5 0 !Разное
6 5 Разное 1
7 0 !Разное
и т.д.
Как сделать вывод в виде вложенных списков?
Разное
...Материалы
...Прочие товары
...Разное1
....Что-то разное
Далее | |
|
|
|
|
|
|
|
для: Tema
(05.07.2006 в 14:55)
| | Возможно вас заинтересует тема по ссылке
http://www.softtime.ru/forum/read.php?id_forum=3&id_theme=17635
Т.е. понадобится что-то вроде
<?php
function recurse($id_catalog,$intend)
{
$result = mysql_query("SELECT * FROM tbl WHERE id_parent = id_catalog");
if(!$result) exit("Ошибка при обращении к каталогу");
if(mysql_num_rows($result) > 0)
{
while($table = mysql_fetch_array($result))
{
echo str_repeat(".",$intend).$table['name']."<br>";
recurse($table['id_catalog'],$intend + 5);
}
}
}
recurse(0,0);
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(05.07.2006 в 16:35)
| | Ваша функция выводит так:
!Разное
.....!Материалы
!Разное
.....Прочие товары
!Разное
.....Разное 1
!Разное
.....РазноеПК
..........Картридж
!Разное
.....РазноеПК
и т.д.
Как бы точки преобразовать в <ul><li>? | |
|
|
|
|
|
|
|
для: Tema
(05.07.2006 в 17:11)
| | Для этого можно воспользоваться следующей модификацией
<?php
function recurse($id_catalog,$intend)
{
$result = mysql_query("SELECT * FROM tbl WHERE id_parent = id_catalog");
if(!$result) exit("Ошибка при обращении к каталогу");
if(mysql_num_rows($result) > 0)
{
echo "<ul>";
while($table = mysql_fetch_array($result))
{
echo <li>$table['name']."</li>";
recurse($table['id_catalog'],$intend + 5);
}
echo "</ul>";
}
}
recurse(0,0);
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(06.07.2006 в 00:08)
| | Скажите, пожалуйста, как убрать повторения основных разделов?
Разное
...!Материалы
!Разное
...Прочие товары
!Разное
...Разное 1
!Разное
...РазноеПК
....Картридж
!Разное
...РазноеПК | |
|
|
|
|
|
|
|
для: Tema
(06.07.2006 в 09:24)
| | Хм... так вы из таблицы уберите эти повторы... | |
|
|
|
|
|
|
|
для: cheops
(06.07.2006 в 11:38)
| | Я не знаю как :(
Вот таким образом данные заносятся в таблицу:
$arr[0] - это "Разное/!Материалы/Еще что-то" и т.д.
<?php
$cats = explode('/', $arr[0]);
$pid = 0;
foreach($cats as $cat)
{
if(isset($tree[$pid][$cat]))
$id = array_search($cat, $nodes, true);
else
{
if(empty($cat)) continue;
else {
$sql = mysql_query("INSERT INTO catalog (id_parent, name) VALUES ('".$pid."', '".mysql_escape_string($cat)."')");
if(!$sql) exit("SQL error in ".nl2br($sql)." : <br>".mysql_error());
$id = mysql_insert_id();
$tree[$pid][$id] = $cat;
$tree[$id] = array(0 => $pid);
}
}
$pid = $id;
}
?>
|
| |
|
|
|
|
|
|
|
для: Tema
(06.07.2006 в 13:18)
| | Что находится в $arr[0] и откуда он берётся? | |
|
|
|
|
|
|
|
для: cheops
(06.07.2006 в 20:47)
| | $arr[0] это строка вида "!Разное/!Материалы", берется из csv файла.
В файле вот так:
!Разное/!Материалы
!Разное/!Материалы
!Разное/!Материалы/Еще что-то
!Разное/И т.д.
Канцелярия/И т.д. | |
|
|
|
|
|
|
|
|
для: Trianon
(06.07.2006 в 21:13)
| | Как сделать чтобы главные разделы заносились в одну таблицу, а их id в таблицу где будут остальные разделы соответственно? | |
|
|
|