Membuat Hirarki pada tabel didatabase

Irvan Firmansyah · Jan 29, 2013
Selamat Siang,

saya punya data array sebagai berikut :
	$data = array();
	
	$data[] = "IT/managerial/software/kasubsie/Moro/Konsolidasi Server";
	$data[] = "IT/managerial/software/kasubsie/Moro/Setting Server";
	$data[] = "IT/managerial/software/kasubsie/Setting Server/Moro";
	$data[] = "informasi/aaa/bbb/ccc/vvv";
	$data[] = "informasi/aaa/bbb/ccc/ddd";

Dari data diatas saya akan membuat Tree Menu. Langkah pertama saya ingin me-generate nya ke dalam tabel menjadi 3 kolom, yaitu :

| ID | Parent_ID | Nama_Folder |
| | | |

seperti itu bentuk table nya :
ID = No urut data ketika masuk ke table
Parent_ID = Parent ID mengacu pada ID sesuai dengan urutan data array setelah di explode dengan "/"
jadi jika $data[] = "IT/managerial/software/kasubsie/Moro/Konsolidasi Server"
maka
"IT" ID = 1, parent ID = 0
"managerial" ID = 2, parent ID = 1
"software" ID = 3, parent ID = 2
dan seterusnya

Nah disini saya kesulitan ketika menentukan parent ID nya jika ada data dengan posisi array key sama namun nama folder berbeda.

Kode Lengkap yang telah saya buat seperti ini :
$data = array();
	
	$data[] = "IT/managerial/software/kasubsie/Moro/Konsolidasi Server";
	$data[] = "IT/managerial/software/kasubsie/Moro/Setting Server";
	//$data[] = "fendy/yefune/teni/yoseph/Moro/Setting Server"; //ini jika posisi array key sama tp folder sebelumnya beda 
	$data[] = "IT/managerial/software/kasubsie/Setting Server/Moro";
	$data[] = "informasi/aaa/bbb/ccc/vvv";
	$data[] = "informasi/aaa/bbb/ccc/ddd";
	
	sort($data);
	
	foreach ($data as $value)
	{
		$item_path = explode("/",$value);
		$jml_path = count ($item_path);
		
		/*(for ($i=0;$i<=$jml_path;$i++)
		{
			$sql = mysql_query("SELECT * FROM treegrid WHERE $parent_id = $i and folder_name = '$item_path[$i]'");
			$r = mysql_num_rows($sql);
			$data = mysql_fetch_array($sql);
			$id = $data['id'];
		}*/		
		
		foreach ($item_path as $k => $d)
		{
			//echo $k." ".$d;
			//echo "<br>";
			
			
			$id = mysql_query("SELECT max(id) id FROM treegrid");
			$rows = mysql_num_rows($id);
			if ($rows > 0)
			{
				$data = mysql_fetch_array($id);
				$id = $data['id'];
				$id = $id + 1;
			}
			else
			{
				$id = 1;
			}
			
			if($k == 0 )
			{
				$parent_id = 0;
			}
			else
			{
				$parent_id = $id-1;
			}
			
			$cek = mysql_query("SELECT * FROM treegrid WHERE array_key = $k and folder_name ='$d'");
			$baris = mysql_num_rows($cek);
			if ($baris == 0)
			{
				$sql = mysql_query("INSERT INTO treegrid VALUES ($id,$parent_id,$k,'$d')");
				if ($sql)
				{
					echo "YES";
				}
				else
				{
					echo "NO";
				}
			}
			
		}
	
	}
Silahkan login untuk menjawab!
0
Loading...
Ellyx Christian · Jan 29, 2013 · 0 Suka · 0 Tidak Suka
parent dari sebuah folder tidak ditentukan dari key arraynya tapi dari nama folder (walaupun kurang tepat).
$data[] = "IT/managerial/software/kasubsie/Moro/Konsolidasi Server";
$data[] = "IT/managerial/software/kasubsie/Moro/Setting Server"; <-- apakah IT atas sama dengan IT bawah?
$data[] = "fendy/yefune/teni/yoseph/Moro/Setting Server"; <-- folder Moro atas jelas berbeda dg Moro bawah
0
Loading...
Irvan Firmansyah · Jan 30, 2013 · 0 Suka · 0 Tidak Suka
Jadi bagaimana mas solusinya? saya kebingungan dalam menentukan id parent nya mas...
$data[] = "IT/managerial/software/kasubsie/Moro/Konsolidasi Server";
$data[] = "IT/managerial/software/kasubsie/Moro/Setting Server"; // IT ini sama dengan IT diatas karena sama sama sebagai parent
$data[] = "fendy/yefune/teni/yoseph/Moro/Setting Server"; // Moro ini berbeda dengan diatas, karena untuk moro yang ini parent nya Yoseph