bayGaReZ adlı üyeden alıntı: mesajı görüntüle
İ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.