Gå til innhold

Trestruktur fra database


Anbefalte innlegg

Skrevet

Hei,

 

Jeg sliter litt! Slik er strukturen i tabellent FOO:

 

id, name, sub_id

 

Så jeg prøver å lage en trestruktur hvor f. eks. en rad som har sub_id som matcher med en id skal flyttes en tab bortover: \t.

 

Jeg får det rett og slett ikke til!

Noen som har tips.. skrive noe "liksomkode" opplegg som forklarer hvordan jeg burde gå frem?

 

Mange takk!

Natta!

Videoannonse
Annonse
Skrevet

id, name, sub_id
1 , per , 3
2 , tor , 0
3 , lar , 2
4 , hmm , 3
5 , huh , 4
6 , daa , 0

2 tor =>
	 1 per
	 3 lar =>
			  4 hmm => 
					   5 huh
6 daa

 

Mulig jeg gjorde feil nå! Men tror det er riktig.

Det innholdet i den databasen skal skrives ut noe ala det.

 

Takk!

Gjest Slettet-rXRozPkg
Skrevet (endret)

Noe slikt kanskje?:

 

$res = SELECT * FROM FOO WHERE sub_id = 0;
while $row = fetchrow($res) {
 $level = 1;
 echo $row['id']." => ".$row['name']."\n";
 recursiveSelect($id,$level);  
}

function recursiveSelect($id,$tablevel) {
 $res = SELECT * FROM FOO WHERE sub_id = $id;
 while $row = fetchrow($res) {
echo str_repeat("\t",$tablevel);
echo $row['id']." => ".$row['name']."\n";
$tablevel++;
recursiveSelect($row[id],$tablevel);
 }
}

Endret av Slettet-rXRozPkg
Skrevet (endret)

Oki! Sånn ble da resultatet! Da med samme tabell som jeg har nevnt over!

 

<pre><?php

$link = mysql_connect('localhost', 'root', '');
if (!$link) {
die('Not connected : ' . mysql_error());
}

// make foo the current db
$db_selected = mysql_select_db('test', $link);
if (!$db_selected) {
die ('Can\'t use foo : ' . mysql_error());
}

$q = mysql_query('select * from test');

$hir = array();

$groundArray = array();
$flyArray = array();

while ($fetchRow = mysql_fetch_object($q))
{
if ($fetchRow->sub_id == 0)
{
	$groundArray[$fetchRow->id] = array('name' => $fetchRow->name);
}
else
{
	$flyArray[$fetchRow->sub_id][$fetchRow->id] = array('name' => $fetchRow->name);
}
}


foreach ($groundArray as $id => $content)
{
$inside = '';
$inside = array();

$inside = getHaha($id);

if (!empty($inside))
{
	$hir[$id] = $content + array('sub' => $inside);   
}
else
{
	$hir[$id] = $content;   
}
}

function getHaha($id)
{
global $flyArray;

$hir = array();

if (isset($flyArray[$id]))
{
	foreach ($flyArray[$id] as $id => $content)
	{
		$inside = '';
		$inside = array();

		$inside = getHaha($id);

		if (!empty($inside))
		{
			$hir[$id] = $content + array('sub' => $inside);  
		}
		else
		{
			$hir[$id] = $content;
		}   
	}
}	

return $hir;
}

print_r($hir);

echo '</pre>';

 

Tusen takk for hjelp! :)

I natt kommer jeg til å sove godt :D.

Endret av nevoscript

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...