Сережа, вот код функции, которая рекурсивно собирает все данные из таблицы базы и возвращает их в виде удобного массива, где 0-элемент данные о самом разделе.
Цитата:
// Извлекаем из таблицы.
function get_data( $level = 0, $tbl_name = "" )
{
$res = mysql_query( "select * from ".$tbl_name." where pid=".$level." ;" );
if( 0 == mysql_num_rows($res) )
return -1;
else
{
$i = 1;
while( $data = mysql_fetch_array( $res, MYSQL_ASSOC ) )
if( -1 != ( $tmp = get_data($data["id"], $tbl_name) ) )
{
$tmp[0] = $data;
ksort( $tmp );
$out[$i++] = $tmp;
}
else
$out[$i++] = $data;
return $out;
}
}
// Ф-ция, которая выводит этот массив в более-менне читабельном виде.
function echo_data( $out )
{
foreach( $out as $k => $v )
if( isset($v[0]) )
{
echo "<b>".$v[0]["id"]." - ".$v[0]["pid"]."</b>: ".$v[0]["name"]." <i>".$v[0]["cost"]."</i><br>";
echo "<div style='margin-left: 30px'>";
unset( $v[0] );
echo_data( $v );
echo "</div>";
}
else
echo "<b>".$v["id"]." - ".$v["pid"]."</b>: ".$v["name"]." <i>".$v["cost"]."</i><br>";
}
// Пример использования
echo_data( get_data() );
|