İstediğiniz şey şu resmin:
Bu hale gelmesi ise:
Şöyle basit bir kod yardımı ile yapabilirsiniz:
<?php
header('Content-Type:text/html; charset="UTF-8"');
mysql_connect('localhost','root','');
mysql_select_db('ust');
$sorgu = mysql_query("select * from tablo where ustid = 0");
if(mysql_num_rows($sorgu) > 0){
echo '<ul>';
while($veri = mysql_fetch_object($sorgu)){
echo '<li>';
echo $veri->isim;
$sorgu2 = mysql_query("select * from tablo where ustid = '".$veri->id."'");
if(mysql_num_rows($sorgu2)>0){
echo '<ul>';
while($veri2 = mysql_fetch_object($sorgu2)){
echo '<li>'.$veri2->isim.'</li>';
}
echo '</ul>';
}
echo'</li>';
}
echo '</ul>';
}else{
echo 'Ülke yok.';
}
?>
Bu tip kullanımlar yanlıştır, çünkü tek sorgu tercih edilmelidir. Üstteki kodda 10 veriye göre 4 sorgu yapılır.. Performans bakımından üst düzey sitelerde yavaş sonuç verir
$sorgu = mysql_query("SELECT id, ustid, isim FROM veri");
$array = array();
while($veri = mysql_fetch_array($sorgu))
{
extract($veri);
if($ustid == 0)
{
$array[$id][] = array('id' => $id, 'isim' => $isim);
}
else
{
if( ! isset($array[$ustid]))
{
$array[$ustid]['index'][] = array('id' => $ustid, 'isim' => $isim);
}
$array[$ustid]['index'][] = array('id' => $id, 'isim' => $isim);
}
}
echo '<ul>';
foreach($array as $key => $value)
{
if(is_array($value['index']) AND count($value['index']) > 0)
{
echo '<li>' . $value[0]['isim'] . '<ol>';
foreach($value['index'] as $key2 => $value2)
{
echo '<li>'.$value2['isim'].'</li>';
}
echo '</ol></li>';
}
else
{
echo '<li>' . $value[0]['isim'] . '</li>';
}
}
echo '</ul>';bu kod ise tek sorgu ile 10 veriyi çekiyor ve sıralıyor, durumu kurtarıyor. [index] elemanlarında sıralama array verisinin sort fonksiyonları ile düzenlenebilir.