Показать сообщение отдельно
Старый 26.04.2005, 12:31   #11   
фотограф
 
Аватар для ilyaerin
 
Сообщений: 2,738
Регистрация: 20.10.2004

ilyaerin вне форума Не в сети
Сережа, вот код функции, которая рекурсивно собирает все данные из таблицы базы и возвращает их в виде удобного массива, где 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() );
  Ответить с цитированием