jeg_lyver_mye Skrevet 21. mai 2008 Skrevet 21. mai 2008 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!
Garanti Skrevet 21. mai 2008 Skrevet 21. mai 2008 Forklar litt mer, gjerne i form av et eksempel i ascii-art.
jeg_lyver_mye Skrevet 21. mai 2008 Forfatter Skrevet 21. mai 2008 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 24. mai 2008 Skrevet 24. mai 2008 (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 24. mai 2008 av Slettet-rXRozPkg
jeg_lyver_mye Skrevet 24. mai 2008 Forfatter Skrevet 24. mai 2008 Uffa meg! Flott! Jeg har følt meg så dum . Tusen takk!
Runar0 Skrevet 24. mai 2008 Skrevet 24. mai 2008 Vist du skal lagre masse i den databasen, eller vist du har ei side som blir vist masse er det nok ein god ide å bruke ein anna løysing enn å kjøre recursive mysql selects. Her finner du eit godt eksempel på korleis du kan hente ut tre strukturer ved ein spørring: http://www.sitepoint.com/article/hierarchical-data-database/
jeg_lyver_mye Skrevet 24. mai 2008 Forfatter Skrevet 24. mai 2008 Ja, jeg så innså det selv nå! Men jeg kan jo bare hive det i en array? Ta en array for de som har 0 og en for dem som ikke er 0? En spørring bare liksom.
jeg_lyver_mye Skrevet 24. mai 2008 Forfatter Skrevet 24. mai 2008 (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 . Endret 24. mai 2008 av nevoscript
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå