[php] forum tree code controle

Pagina: 1
Acties:

  • Gaafy
  • Registratie: Juli 2001
  • Laatst online: 03-06-2024
Zouden jullie de volgende code willen bekritiseren.
Volgens mij zit het zo wel goed inelkaar, maar het kan vast nog beter:
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
36
37
<?
// Maak verbinding met de database
include ("connect.php");

    // De functie om de kinderen uit de database te krijgen
    function GetChildMsgs ($parent, $depth) {
    
        // Haal de gegevens van het kind uit de database
        $query  = "SELECT * FROM project WHERE project_parent='$parent' ORDER BY project_id DESC";
        $result = mysql_query($query);
        while ($row = mysql_fetch_array($result)) {

                // Schrijf deze gegevens weg in variabelen
                $id         = $row["project_id"];
                $parent  = $row["project_parent"];
                $name    = $row["project_name"];
        
        // Bepaal de inspring vanaf de kant (10 px. per niveau)
        $width = $depth * 10 ;

        // Schrijf commentaar in de html
        echo " <!-- ID = $id en parent = $parent. --> \n ";
        
        // Schrijf een tabel met daarin de gegevens van de child
        echo " <TABLE border=\"0\"><TR>\n ";
        echo " <TD width=\"$width\">&amp;nbsp;</TD> \n ";
        echo " <TD>$name</TD> \n ";
        echo " </TR></TABLE>\n\n";

        // En doe de functie nog een keer, maar dan één niveau dieper.
                GetChildMsgs($id, $depth+1);
        }
    }

    // Haal records met parent = "0" uit de db.
    GetChildMsgs($id, 0);
?>

En de bijbehorende database:
CREATE TABLE `project` (
`project_id` tinyint(4) NOT NULL default '0',
`project_parent` tinyint(4) NOT NULL default '0',
`project_name` varchar(25) NOT NULL default ''
) TYPE=MyISAM;

#
# Gegevens worden uitgevoerd voor tabel 'project'
#

INSERT INTO project VALUES (1,'','Opa');
INSERT INTO project VALUES (2,'','Oma');
INSERT INTO project VALUES (3,1,'Vader');
INSERT INTO project VALUES (4,3,'Kind');
INSERT INTO project VALUES (5,4,'Kind 2');
INSERT INTO project VALUES (6,2,'Moeder');
INSERT INTO project VALUES (7,6,'Kind 3');

  • chem
  • Registratie: Oktober 2000
  • Laatst online: 27-08 13:53

chem

Reist de wereld rond

dit is al vele malen behandeld. Ook onlangs nog.

[search=pyramide]
[search=recursief]

en nog vele anderen...

Klaar voor een nieuwe uitdaging.


Verwijderd

move -> webscripting

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 22:25

Janoz

Moderator Devschuur®

!litemod

Hoe het beter kan? Hmm .. zou het zo niet weten... Persoonlijk zou ik nooit een boomstructuur in een html/php/mysql omgeving gebruiken (flash zou wat makkelijker kunnen).. Mischien is het handig om bij te houden of een record uberhaupt kindertjes heeft. Op dit moment wordt voor elk bericht een query uitgevoerd. Ook om te zoeken naar kinderen van record op het laagste niveau. Als je bijvoorbeeld 25 berichten op een pagina hebt staan (Wat niet zo heel erg veel is) dan heb je al 26 queries te pakken (1 voor elk bericht plus 1 waarmee je begint) Dat lijkt me niet de meest efficiente oplossing.......

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'