Wiec tak tworze sobie drzewko mysql:
<?php
define('CATEGORY_TABLE','tbl_category');
try
{
$sql = 'SELECT * FROM '.CATEGORY_TABLE.' ORDER BY idCategory ASC';
$res = $mysqli -> query($sql);
while ( $row = $res -> fetch_assoc() )
{
if ( $row['parentCategory'] == 0 )
{
$parent[] = $row;
}
else
{
if ( isset( $t[$row['parentCategory']] ) ) {
$t[$row['parentCategory']][] = $row;
}
else
{
$t[$row['parentCategory']][0] = $row;
}
}
}
function show( $arr, $parentCategoryName, $i = 1)
{
foreach( $arr as $parent => $val )
{
if( $t[ $val['idCategory'] ] )
{
//echo '<li><a href="'.$parentCategoryName.'/'.pl2iso($val['nameCategory']).'/">'.$val['nameCategory'].'</a></li>';
echo '<li><a href="?parentCategory='.$val['parentCategory'].'&idCategory='.$val['idCategory'] .'">'.$val['nameCategory'].'</a></li>';
$parentCategoryName = pl2iso($val['nameCategory']);
show( $t[ $val['idCategory'] ], $parentCategoryName, ++$i );
}
else
{
//echo '<li><a href="'.$parentCategoryName.'/'.pl2iso($val['nameCategory']) .'/">'.$val['nameCategory'].'</a></li>';
echo '<li><a href="?parentCategory='.$val['parentCategory'].'&idCategory='.$val['idCategory'] .'">'.$val['nameCategory'].'</a></li>'; }
}
}
foreach( $parent as $val )
{
//echo '<li><a href="'.pl2iso($val['nameCategory']).'/">'.$val['nameCategory'].'</a></li>';
echo '<li><a href="?idCategory='.$val['idCategory'].'">'.$val['nameCategory'].'</a></li>';
$parentCategoryName = pl2iso($val['nameCategory']);
if( $val['idCategory'] == $_GET['idCategory'] || $val['idCategory'] == $_GET['parentCategory'])
{
if( $t[ $val['idCategory'] ] && isset($_GET['idCategory']) ) {
show( $t[ $val['idCategory'] ], $parentCategoryName );
}
}
}
}
catch (e $error)
{
}
?>
i mam problem ze stworzeniem linka np do 3 poziomu i dalszego. jak tego dokonac? (za pomoca id, za pomoca nazw dla mode_rewrite)
pl2iso to funkcja zamieniajaca litery poslkie,
dla linku dla 2-go poziomu nazwe przekazuje tak: $parentCategoryName = pl2iso($val['nameCategory']);
baza wyglada tak:
idCategory int(10)
parentCategory int(10)
nameCategory varchar(128)