Toon posts:

MySQL Tree Database crearen..

Pagina: 1
Acties:
  • 207 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Hoi dag allemaal.

Ik ben bezig met een database waarin je 'hoofd' en 'sub' en 'subsub' enzovoorts catagorieen kan aanmaken maar nu kom ik uit op een probleem, stel ik wil het volgende in me database verwerken

code:
1
2
3
4
5
6
7
8
9
10
11
12
C:\
--->Windows
--->Program files
--->test
---------->temp
------------------>page

D:\
--->games
--->blaat
----------->blaat1
--->warez


dan moet ik daar dus zekers 4 tabellen voor aanmaken maar zou dit ook op een gemakkelijker manier kunnen?

  • thomaske
  • Registratie: Juni 2000
  • Laatst online: 16-01 10:59

thomaske

» » » » » »

code:
1
2
3
4
5
table nodes {
  node_id,
  node_naam,
  parent_id
}


parent_id wijst weer naar de parent_node.
bij de bovenste node zet je bijvoorbeelde de parent_id op 0

Brusselmans: "Continuïteit bestaat niet, tenzij in zinloze vorm. Iets wat continu is, is obsessief, dus ziekelijk, dus oninteressant, dus zinloos."


Verwijderd

Topicstarter
thomaske schreef op 12 december 2002 @ 19:51:
code:
1
2
3
4
5
table nodes {
  node_id,
  node_naam,
  parent_id
}


parent_id wijst weer naar de parent_node.
bij de bovenste node zet je bijvoorbeelde de parent_id op 0
Sorry het ziet er erg leuk uit maar zou je mischien wat meer informatie kunnen geven, de manier waarop ik dat zou moeten verwerken? etc? tnx.

  • whoami
  • Registratie: December 2000
  • Laatst online: 11:52
Met self joins.

Het is toch niet zo moeilijk?
code:
1
2
3
4
5
1   Windows       0
2   System32      1
3   Program Files 0
4   MSOffice         3
5   VSS                 3

https://fgheysels.github.io/


Verwijderd

Topicstarter
whoami schreef op 12 december 2002 @ 19:54:
Met self joins.

Het is toch niet zo moeilijk?
code:
1
2
3
4
5
1   Windows       0
2   System32      1
3   Program Files 0
4   MSOffice         3
5   VSS                 3
Blijkbaar is dat wel moeilijk omdat ik de 'opzet' er van gewoon niet begrijp, ik zie nu wel wat meer logica ivm de nummers maar toch zegt me het nog weinig... dus please als iemand een wat uitgebreider voorbeeld heeft graag..

sorry ik vat dingen niet zo snel... boeie

  • thomaske
  • Registratie: Juni 2000
  • Laatst online: 16-01 10:59

thomaske

» » » » » »

ok, *alle* nodes zet je gewoon in de tabel, per node geef je aan, wie de parent is.

je hebt bijvoorbeeld:
code:
1
2
3
4
5
6
C:\ (node_id = 1)
--->Windows (node_id = 2)
--->Program files (node_id = 3)
--->test (node_id = 4)
---------->temp (node_id = 5)
------------------>page (node_id = 6)


die zet je zo in je database:

code:
1
2
3
4
5
6
7
8
9
10
+---------+-----------------------+-----------+
| node_id | node_name             | parent_id |
+---------+-----------------------+-----------+
| 1       | 'C:\'                 | 0         |
| 2       | 'Windows'             | 1         |
| 3       | 'Program Files'       | 1         |
| 4       | 'test'                | 1         |
| 5       | 'temp'                | 4         |
| 6       | 'page'                | 5         |
+---------+-----------------------+-----------+


die moet je recursief gaan querien om de hele boom te krijgen..
snappie? :)

[ Voor 18% gewijzigd door thomaske op 12-12-2002 20:02 ]

Brusselmans: "Continuïteit bestaat niet, tenzij in zinloze vorm. Iets wat continu is, is obsessief, dus ziekelijk, dus oninteressant, dus zinloos."


  • whoami
  • Registratie: December 2000
  • Laatst online: 11:52
En op die manier ben je niet beperkt in het aantal niveau's dat je kunt hebben.
Is dit een goede zin? :?

https://fgheysels.github.io/


Verwijderd

Topicstarter
thomaske schreef op 12 December 2002 @ 20:01:
ok, *alle* nodes zet je gewoon in de tabel, per node geef je aan, wie de parent is.

je hebt bijvoorbeeld:
code:
1
2
3
4
5
6
C:\ (node_id = 1)
--->Windows (node_id = 2)
--->Program files (node_id = 3)
--->test (node_id = 4)
---------->temp (node_id = 5)
------------------>page (node_id = 6)
Ja dat begrijp ik als ik ook het onderstaande voorbeeld lees!
die zet je zo in je database:

code:
1
2
3
4
5
6
7
8
9
10
+---------+-----------------------+-----------+
| node_id | node_name             | parent_id |
+---------+-----------------------+-----------+
| 1       | 'C:\'                 | 0         |
| 2       | 'Windows'             | 1         |
| 3       | 'Program Files'       | 1         |
| 4       | 'test'                | 1         |
| 5       | 'temp'                | 4         |
| 6       | 'page'                | 5         |
+---------+-----------------------+-----------+
alleen vat ik dit nu weer niet?..
die moet je recursief gaan querien om de hele boom te krijgen..
snappie? :)
het tabelletje is simpel te maken dus maak ik die alvast, maar hoe bedoel je dat met recursief gaan querien, ik kan natuurlijk wel een loop maken die uitvind wat bij wat hoort... maar das denk ik niet de bedoeling...

Verwijderd

Topicstarter
whoami schreef op 12 December 2002 @ 20:04:
En op die manier ben je niet beperkt in het aantal niveau's dat je kunt hebben.
Is dit een goede zin? :?
/offtopic
mja wel gelimiteerd aan het type 'int' dat je gebruikt :+

  • thomaske
  • Registratie: Juni 2000
  • Laatst online: 16-01 10:59

thomaske

» » » » » »

'vroeger' zijn hier een hoop (hoogstaande) topics over geweest, zoek eens op 'boom' oid

[rml][ mysql] boomstructuur[/rml]
[rml][ mysql][ php] tree[/rml]

Brusselmans: "Continuïteit bestaat niet, tenzij in zinloze vorm. Iets wat continu is, is obsessief, dus ziekelijk, dus oninteressant, dus zinloos."


  • whoami
  • Registratie: December 2000
  • Laatst online: 11:52
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
GetLevels (int Id)
{

   query = "SELECT * FROM tabel WHERE parentId = Id
   query.Open();
  
   while(!query.EOF)
   {
        PRINT_CURRENT_ITEM
        GetLevels(query.Field("Id");
   }

}


Zoiets ongeveer.... heb het niet getest ofzo.... Bij recursieve functies moet je er wel goed opletten dat je niet in een infinite loop verzeild geraakt.

https://fgheysels.github.io/


  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 27-03 20:44

Bosmonster

*zucht*

whoami schreef op 12 December 2002 @ 20:24:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
GetLevels (int Id)
{

   query = "SELECT * FROM tabel WHERE parentId = Id
   query.Open();
  
   while(!query.EOF)
   {
        PRINT_CURRENT_ITEM
        GetLevels(query.Field("Id");
   }

}


Zoiets ongeveer.... heb het niet getest ofzo.... Bij recursieve functies moet je er wel goed opletten dat je niet in een infinite loop verzeild geraakt.


Vind je dat mooi? Zo doe je voor iedere recursie een query :?

Beter is om alles op te halen wat relevant is, in een array te zetten en vandaar te verwerken imho.

Verwijderd

Topicstarter
whoami schreef op 12 December 2002 @ 20:24:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
GetLevels (int Id)
{

   query = "SELECT * FROM tabel WHERE parentId = Id
   query.Open();
  
   while(!query.EOF)
   {
        PRINT_CURRENT_ITEM
        GetLevels(query.Field("Id");
   }

}


Zoiets ongeveer.... heb het niet getest ofzo.... Bij recursieve functies moet je er wel goed opletten dat je niet in een infinite loop verzeild geraakt.
dus als ik dat eens goed converteer naar PHP moet het zo iets zijn van...

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
function getLevels ($id) {

    $sql_lev = "SELECT
                * 
            FROM 
                sd_index 
            WHERE 
                i_id='" . $id . "'";
    $query_lev = mysql_query($sql_lev);

    if (mysql_num_rows($query_lev) > 0) {
        for ($x = 0; $x < mysql_num_rows($query_lev); $x++) {
            $list_lev = mysql_fetch_object($query_lev);
            echo "--> " . $list_lev->title . "<br/>";
            getLevels($list_lev->id);
        }
    }
}


$sql = "SELECT
            *
        FROM
            sd_index
        WHERE
            i_id='0'";
$query = mysql_query($sql);

if (mysql_num_rows($query) > 0) {
    for ($x = 0; $x < mysql_num_rows($query); $x++) {
        $list = mysql_fetch_object($query);
        echo $list->title . "<br/>";
        getLevels($list->id);
    }
}


Nu krijg ik de volgende tree

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Applications
--> Windows
--> Linux
--> Dos
Movies
--> Animations
--> Comedy
--> Horror
--> Music Clip
--> Porno
Games
--> Stratigy
--> Action
--> Card
--> Casino


maar kan dit ook gemakkelijker?... teminste ik zou het fijn vinden als dat een mogelijkheid zou zijn... en deze opzet is gewoon even simpel in elkaar gemaakt...

[ Voor 31% gewijzigd door Verwijderd op 12-12-2002 20:50 ]


Verwijderd

Topicstarter
Bosmonster schreef op 12 December 2002 @ 20:43:

[...]


Vind je dat mooi? Zo doe je voor iedere recursie een query :?

Beter is om alles op te halen wat relevant is, in een array te zetten en vandaar te verwerken imho.
Euh... grin, wat moet ik nu volgen? welke guide? :+

Zoals ik ookal in me vorige post vroeg is het mogelijk dat ik dat dmv bv 1 functie alle tree's kan laten opbouwen?...

  • Pelle
  • Registratie: Januari 2001
  • Laatst online: 13:03

Pelle

🚴‍♂️

Bosmonster schreef op 12 december 2002 @ 20:43:
Vind je dat mooi? Zo doe je voor iedere recursie een query :?

Beter is om alles op te halen wat relevant is, in een array te zetten en vandaar te verwerken imho.

Hmja, leuk als je een paar honderd duizend records hebt die je allemaal in 1 array gooit... mem usage: 100%

Hangt dus een beetje af van wat je er mee wilt gaan doen, hoe je dit aan moet pakken.

  • whoami
  • Registratie: December 2000
  • Laatst online: 11:52
Tja, vind je dit mooi... Dit voorbeeld was enkel maar om ff het concept aan te tonen.

Zoals Pelle zegt, hangt er veel van af hoe je jouw situatie eruitziet. Als je alles in een array in leest, vreet dat geheugen, als je voor iedere recursie een query doet heb je meer database access/queries nodig.
Als jouw database op een DB-server staat, zie ik niet zo veel problemen om al die queries te gaan uitvoeren, zeker niet als je het in een stored procedure stopt.
Ik open dan ook niet voor iedere query een nieuwe connectie, want dat werkt zeer vertragend.

https://fgheysels.github.io/


  • thomaske
  • Registratie: Juni 2000
  • Laatst online: 16-01 10:59

thomaske

» » » » » »

quote van MrX uit [rml][ PHP] Query voor pyramide probleempje[/rml]
Wat je in ieder geval kunt doen is een optimalisatie te maken zodat je maar 1 query per 'level' hoeft te doen.

De eerste keer als je een query doet, sla alle ChildID's van het eerste ID in een array op. Bij de volgende select (en alle daarna doe je een SELECT met WHERE id IN (), om dus te zoeken op alle child id's van de child id's uit de array. Maak wel iedere keer de array leeg, zodat je niet voor id's twee keer ga zoeken. En ook gaat het helemaal mis als er 'loops' in je referenties zitten, dus dat mag absoluut niet voorkomen.

Ik hoop dat je er wat aan hebt. Succes :)
[edit]
Verder raad ik je echt aan om deze thread goed door te lezen, dusty heeft daar ook een aardig idee om het querien van de boom wat te vergemakkelijken (al gaat dat in deze context misschien iets te ver ;) )

[ Voor 19% gewijzigd door thomaske op 12-12-2002 21:54 ]

Brusselmans: "Continuïteit bestaat niet, tenzij in zinloze vorm. Iets wat continu is, is obsessief, dus ziekelijk, dus oninteressant, dus zinloos."


  • thomaske
  • Registratie: Juni 2000
  • Laatst online: 16-01 10:59

thomaske

» » » » » »

Verwijderd schreef op 12 december 2002 @ 20:45:
[...]
maar kan dit ook gemakkelijker?... teminste ik zou het fijn vinden als dat een mogelijkheid zou zijn... en deze opzet is gewoon even simpel in elkaar gemaakt...
Het is sowieso al makkelijker als je 1 root hebt, waar Applications, Movies en Games kinderen van zijn. Dan is het gewoon een kwestie van GetLevels(0) aanroepen, en de rest gaat vanzelf.

Brusselmans: "Continuïteit bestaat niet, tenzij in zinloze vorm. Iets wat continu is, is obsessief, dus ziekelijk, dus oninteressant, dus zinloos."


  • LordLarry
  • Registratie: Juli 2001
  • Niet online

LordLarry

Aut disce aut discede

Ik heb dit al eerder in een topic gemeld, maar er zijn manieren om via een andere structuur een boom op te slaan in een tabel EN er zonder recursie queries op uit te voeren. Gewoon puur SQL, geen stored procedures, geen recursie en de mogelijkheid tot het gebruikt van de gebruikelijke SQL spullen zoals where en group enzo.

http://www.intelligententerprise.com/001020/celko1_1.shtml
http://www.dbmsmag.com/9603d06.html
(warning: high-tech stuff)

[ Voor 19% gewijzigd door LordLarry op 12-12-2002 22:44 ]

We adore chaos because we like to restore order - M.C. Escher


Verwijderd

Topicstarter
thomaske schreef op 12 december 2002 @ 21:50:
Het is sowieso al makkelijker als je 1 root hebt, waar Applications, Movies en Games kinderen van zijn. Dan is het gewoon een kwestie van GetLevels(0) aanroepen, en de rest gaat vanzelf.
Dus je wilt zeggen dat ik beter kan beginnen bij bv een idee zoals dit

code:
1
2
3
4
5
6
7
8
9
10
11
ID     I_ID     Title
1      0           Head
2      1           --> Applications
3      2           ----> Applic
4      2           ----> Games
5      2           ----> Utils
6      1           --> Movies
7      6           ----> Cartoon
8      6           ----> Drama
9      6           ----> Hardcore
10     1           --> Etc


maar dat kan ik niet uitlezen met de getLevels zoals ik ze heb gedefenieerd :{
LordLarry schreef op 12 december 2002 @ 22:40:
Ik heb dit al eerder in een topic gemeld, maar er zijn manieren om via een andere structuur een boom op te slaan in een tabel EN er zonder recursie queries op uit te voeren. Gewoon puur SQL, geen stored procedures, geen recursie en de mogelijkheid tot het gebruikt van de gebruikelijke SQL spullen zoals where en group enzo.

http://www.intelligententerprise.com/001020/celko1_1.shtml
http://www.dbmsmag.com/9603d06.html
(warning: high-tech stuff)
ja beetje te high-tech stuff :{

[ Voor 31% gewijzigd door Verwijderd op 12-12-2002 23:17 ]


  • thomaske
  • Registratie: Juni 2000
  • Laatst online: 16-01 10:59

thomaske

» » » » » »

Verwijderd schreef op 12 December 2002 @ 23:04:
[...]


Dus je wilt zeggen dat ik beter kan beginnen bij bv een idee zoals dit

code:
1
2
3
4
5
6
7
8
9
10
11
ID     I_ID     Title
1      0           Head
2   -> 1           --> Applications
3      2           ----> Applic
4      2           ----> Games
5      2           ----> Utils
6   -> 1           --> Movies
7      6           ----> Cartoon
8      6           ----> Drama
9      6           ----> Hardcore
10  -> 1           --> Etc
Je hoofd-categorieen zijn dus de childs van Head

[edit]

Op deze manier hou je ook nog je level bij, en worden de verschillende nodes goed ge-indent
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
function getLevels ($id, $level = 0) { 
    $sql_lev = "SELECT * FROM sd_index WHERE i_id = $id"; 
    $query_lev = mysql_query($sql_lev); 

    if (mysql_num_rows($query_lev) > 0) { 
        $level++;
        for ($x = 0; $x < mysql_num_rows($query_lev); $x++) { 
            $list_lev = mysql_fetch_object($query_lev); 
            echo str_repeat("---",$level) . "> " . $list_lev->title . "<br/>"; 
            getLevels($list_lev->id, $level); 
        }
    }
}

[ Voor 41% gewijzigd door thomaske op 12-12-2002 23:18 ]

Brusselmans: "Continuïteit bestaat niet, tenzij in zinloze vorm. Iets wat continu is, is obsessief, dus ziekelijk, dus oninteressant, dus zinloos."


Verwijderd

Topicstarter
thomaske schreef op 12 December 2002 @ 23:10:
[...]


Je hoofd-categorieen zijn dus de childs van Head
oeps: idd die 1tjes was ik vergeten :+

Klopt en dat kan ik uitlezen met mijn query maar zou op deze manier geen applications, games ed kunnen uitlezen: en zoek dus denk ik hulp voor het maken van een query die de tree kan uitlezen van a-z optie, want heb namelijk geen flauw idee hoe ik dat moet aanpakken :z

[ Voor 5% gewijzigd door Verwijderd op 12-12-2002 23:16 ]


  • whoami
  • Registratie: December 2000
  • Laatst online: 11:52
Verwijderd schreef op 12 December 2002 @ 23:16:
[...]


oeps: idd die 1tjes was ik vergeten :+

Klopt en dat kan ik uitlezen met mijn query maar zou op deze manier geen applications, games ed kunnen uitlezen: en zoek dus denk ik hulp voor het maken van een query die de tree kan uitlezen van a-z optie, want heb namelijk geen flauw idee hoe ik dat moet aanpakken :z


Hoe bedoel je?
Als je GetLevels(0) doet, dan krijg je toch alles?

https://fgheysels.github.io/


  • thomaske
  • Registratie: Juni 2000
  • Laatst online: 16-01 10:59

thomaske

» » » » » »

Verwijderd schreef op 12 December 2002 @ 23:16:
[...]


oeps: idd die 1tjes was ik vergeten :+

Klopt en dat kan ik uitlezen met mijn query maar zou op deze manier geen applications, games ed kunnen uitlezen: en zoek dus denk ik hulp voor het maken van een query die de tree kan uitlezen van a-z optie, want heb namelijk geen flauw idee hoe ik dat moet aanpakken :z
Sorry, maar van deze lap letters kan ik niets zinnigs maken.. :)

Brusselmans: "Continuïteit bestaat niet, tenzij in zinloze vorm. Iets wat continu is, is obsessief, dus ziekelijk, dus oninteressant, dus zinloos."


Verwijderd

Topicstarter
:D ik zat nog ff te spelen en nu heb ik ook de diepte kunnen bepalen :{

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
function getLevels ($id) {
    global $deep;
 
    $deep++;
    $sql_lev = "SELECT
                * 
            FROM 
                sd_index 
            WHERE 
                i_id='" . $id . "'";
    $query_lev = mysql_query($sql_lev);

    if (mysql_num_rows($query_lev) > 0) {
        for ($x = 0; $x < mysql_num_rows($query_lev); $x++) {
            $list_lev = mysql_fetch_object($query_lev);
            for ($d = 0; $d < $deep; $d++) {
                echo "--> ";
            }
            echo $list_lev->title . "<br/>";
            getLevels($list_lev->id);
            $deep--;
        }
    }
}

getLevels(0);


uitkomst van me db (voorbeeld) nu.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
--> Applications
--> --> Windows
--> --> --> Utils
--> --> --> Internet
--> --> --> Virus
--> --> Linux
--> --> --> Utils
--> --> --> Applications
--> --> --> Virus
--> --> Dos
--> --> --> Utils
--> --> --> Applications
--> --> --> Virus
--> Movies
--> --> Animations
--> --> Comedy
--> --> Horror
--> --> Music Clip
--> --> Porno
--> Games
--> --> Stratigy
--> --> Action
--> --> Card
--> --> Casino


:D spelen werkt ook en sorry dat ik een beetje onbegrijpelijke texten krijg maar :7 zegt genoeg :7

  • thomaske
  • Registratie: Juni 2000
  • Laatst online: 16-01 10:59

thomaske

» » » » » »

ik heb daarnet mijn post ookal ge-edit met een soortgelijke oplossing
thomaske in "MySQL Tree Database crearen.."

Brusselmans: "Continuïteit bestaat niet, tenzij in zinloze vorm. Iets wat continu is, is obsessief, dus ziekelijk, dus oninteressant, dus zinloos."


  • Scharnout
  • Registratie: November 2000
  • Laatst online: 12-12-2025

Scharnout

Meuk

Gaat het om directories? Waarom laat je de subfolders dan niet telkens lezen? Ik heb zoiets met het File System Object gemaakt in ASP.

Tis maar een suggestie natuurlijk ... verder kan ik je niet helpen, maar ik snap wel wat die anderen allemaal zeggen. Makes senses!

And Bob's your uncle ...


Verwijderd

Topicstarter
thomaske schreef op 12 december 2002 @ 23:55:
ik heb daarnet mijn post ookal ge-edit met een soortgelijke oplossing
thomaske in "MySQL Tree Database crearen.."
Gezien en begrepen :* tnx m8t
Scharnout schreef op 13 December 2002 @ 15:33:
Gaat het om directories? Waarom laat je de subfolders dan niet telkens lezen? Ik heb zoiets met het File System Object gemaakt in ASP.

Tis maar een suggestie natuurlijk ... verder kan ik je niet helpen, maar ik snap wel wat die anderen allemaal zeggen. Makes senses!
Nee niet om directories maar om een database structuur voor een website!

Verwijderd

Topicstarter
Hey weet iemand hoe ik recursief een database kan deleten?... dit is best irrietant..

Ik heb ook alvast een gedeeltelijke source voor de liefhebbers online gezet ;)

http://members.home.nl/txeg/index.php :)

  • thomaske
  • Registratie: Juni 2000
  • Laatst online: 16-01 10:59

thomaske

» » » » » »

Verwijderd schreef op 13 december 2002 @ 20:33:
Hey weet iemand hoe ik recursief een database kan deleten?... dit is best irrietant..

Ik heb ook alvast een gedeeltelijke source voor de liefhebbers online gezet ;)

http://members.home.nl/txeg/index.php :)
da's toch niet veel anders dan wat je nu al hebt. ipv selecten doe je dan deleten:

PHP:
1
2
3
4
5
6
7
8
9
10
11
function delete_childs($node_id) {
    $sql = "SELECT node_id FROM nodes WHERE parent_id = $node_id";
    $rs = $db->query($sql);

    while ($r = $rs->getNextRecord()) {
        delete_childs($r->node_id);
    }

    $sql = "DELETE FROM nodes WHERE node_id = $node_id";
    $db->exec($sql);
}


niet getest, maar iets in deze trant..

Brusselmans: "Continuïteit bestaat niet, tenzij in zinloze vorm. Iets wat continu is, is obsessief, dus ziekelijk, dus oninteressant, dus zinloos."


  • MisterData
  • Registratie: September 2001
  • Laatst online: 27-03 16:49
PHP:
1
@mysql_select_db("sig2dat");


offtopic:
gaan we stiekem kazaa-sigjes in een tree zetten ;)

Verwijderd

Topicstarter
thomaske schreef op 13 December 2002 @ 21:03:
[...]

da's toch niet veel anders dan wat je nu al hebt. ipv selecten doe je dan deleten:

PHP:
1
2
3
4
5
6
7
8
9
10
11
function delete_childs($node_id) {
    $sql = "SELECT node_id FROM nodes WHERE parent_id = $node_id";
    $rs = $db->query($sql);

    while ($r = $rs->getNextRecord()) {
        delete_childs($r->node_id);
    }

    $sql = "DELETE FROM nodes WHERE node_id = $node_id";
    $db->exec($sql);
}


niet getest, maar iets in deze trant..
Nee okey, maar dacht dat wanneer ik een tree delete dan ben ik de 'lul' maar op de manier dat je het hebt neergezet is het duidelijk en blijkt dus dat dat niet gebeurd ;)
MisterData schreef op 13 December 2002 @ 21:15:
PHP:
1
@mysql_select_db("sig2dat");


offtopic:
gaan we stiekem kazaa-sigjes in een tree zetten ;)
Dat is helemaal correct, maar wederom niets dat ik op deze site ga posten >:)

[ Voor 22% gewijzigd door Verwijderd op 13-12-2002 21:27 ]


Verwijderd

waarom geen xml gebruiken? is toch veel simpeler
code:
1
2
3
4
5
6
<tree>
    <map naam='blah' />
    <map naam='windows' >
        <map naam='system32' />
    </map>
</tree>

Verwijderd

Topicstarter
Ik heb het even getest maar krijg het volgende, even mijn structuur

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
>Applications (1) 
   >Windows (2) 
      >Utils (16) 
      >Internet (17) 
      >Virus (18) 
   >Linux (3) 
      >Utils (19) 
      >Applications (20) 
         >Blaat (26) 
            >nog hoger (28) 
               >woei nog hoger (29) 
         >test1 (27) 
      >Virus (21) 
   >Dos (4) 
      >Utils (22) 
      >Applications (23) 
      >Virus (24) 
>Movies (5) 
   >Animations (6) 
   >Comedy (7)


als ik nu delete druk (bij applications (1)) dan krijg ik de volgende query's te zien

code:
1
2
3
4
5
6
7
DELETE FROM sd_index WHERE i_id=2
DELETE FROM sd_index WHERE i_id=28
DELETE FROM sd_index WHERE i_id=26
DELETE FROM sd_index WHERE i_id=20
DELETE FROM sd_index WHERE i_id=3
DELETE FROM sd_index WHERE i_id=4
DELETE FROM sd_index WHERE i_id=1


maar dat moet niet zijn wat ik wil, want er moet veel meer gedeteled worden :{

mijn code is

PHP:
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
function deleteLevels ($id) {
    $sql = "SELECT * FROM sd_index WHERE i_id = $id";
    $query = mysql_query($sql);

    if (mysql_num_rows($query) > 0) {
        for ($x = 0; $x < mysql_num_rows($query); $x++) {
            $list = mysql_fetch_object($query);
            deleteLevels($list->id);
        }

        $sql = "DELETE FROM
                    sd_index
                WHERE
                    i_id=$id";
        echo $sql . "<br>";
        //mysql_query($sql);
    }
}

Verwijderd

Topicstarter
Verwijderd schreef op 13 December 2002 @ 21:30:
waarom geen xml gebruiken? is toch veel simpeler
code:
1
2
3
4
5
6
<tree>
    <map naam='blah' />
    <map naam='windows' >
        <map naam='system32' />
    </map>
</tree>
ja alles kan wel in xml maar ik vind xml gewoon niets aan :) dus houd ik het op html of xhtml ;)

Verwijderd

ik bedoel niet de output van je dingetje, maar de input :), trees in mysql bouwen is lastig, zeker als je bv een mapje wilt verplaatsen (met substructuur dus), deleten (zoals je hierboven ziet nogal een berg queries) etc. Maar goed xml vind ik veel fijner voor zulke dingen :9

  • thomaske
  • Registratie: Juni 2000
  • Laatst online: 16-01 10:59

thomaske

» » » » » »

Verwijderd schreef op 13 December 2002 @ 21:39:
Ik heb het even getest maar krijg het volgende, even mijn structuur
[..]

maar dat moet niet zijn wat ik wil, want er moet veel meer gedeteled worden :{
Je moet de delete query uit de 'íf' halen

[ Voor 3% gewijzigd door thomaske op 14-12-2002 03:49 ]

Brusselmans: "Continuïteit bestaat niet, tenzij in zinloze vorm. Iets wat continu is, is obsessief, dus ziekelijk, dus oninteressant, dus zinloos."


Verwijderd

Topicstarter
thomaske schreef op 14 December 2002 @ 03:46:
[...]


Je moet de delete query uit de 'íf' halen
:{ Domme domme ik :+

Verwijderd

Topicstarter
voor de liefhebbers staat ie nu ook op phpfreakz.nl

http://62.250.9.120/library.php?sid=5937
Pagina: 1