Aantal items binnen categorie (met subcategorieën)

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • mcdronkz
  • Registratie: Oktober 2003
  • Laatst online: 16-04 12:44
Ik heb een probleem waar ik niet uitkom.

Ik heb categorieën en ik heb items. Een categorie kan een parent hebben, dan wordt het dus een subcategorie.

Ik wil het volgende laten zien:
  • Auto's (3)
    • BMW (1)
    • VW (2)
      • Luchtgekoeld (2)
      • Watergekoeld (0)
Maar wat ik met mijn huidige oplossing krijg is dit:
  • Auto's (0)
    • BMW (1)
    • VW (0)
      • Luchtgekoeld (2)
      • Watergekoeld (0)
Ik heb op dit moment de volgende code:

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
38
39
40
41
42
43
<?php
if(!isset($_GET['parent']) || !is_numeric($_GET['parent']))
{
    $_GET['parent'] = 0;
}

$cSQL = mysql_query("SELECT
                        *,
                        (SELECT
                            COUNT(*)
                        FROM
                            auctions
                        WHERE
                            aCategory
                        =
                            cID)
                    AS
                        auctionCount
                    FROM
                        categories
                    WHERE
                        cParent
                    =
                        '".mysql_real_escape_string($_GET['parent'])."'");

/*
Controleer of er überhaupt categorieën in het systeem aanwezig zijn.
*/
if(mysql_num_rows($cSQL) > 0)
{
    while($cResult = mysql_fetch_assoc($cSQL))
    {
        $cData[] = $cResult;
    }
    
    /*
    Assign de data en toon de pagina met categorieën.
    */
    $smarty->assign("cData",$cData);
    $smarty->assign("template","listcategories/main.tpl");
    $smarty->display("index.tpl");
}
?>


Je begrijpt waar ik naartoe wil, maar ik loop effe vast op dit punt. Ik denk zelf dat ik het in de hoek van recursie moet zoeken, maar dat is misschien iets te hoog gegrepen voor me op dit moment.

Kan iemand me een richting op duwen, desnoods met een voorbeeld?

Acties:
  • 0 Henk 'm!

  • Patriot
  • Registratie: December 2004
  • Laatst online: 16-09 13:49

Patriot

Fulltime #whatpulsert

Hiërarchische gegevens verwerken komt hier wel eens vaker langs. Ik kan je aanraden de volgende twee links eens goed door te lezen: de eerste is van Gijs van Tulder en komt hier regelmatig langs, meestal gevolgd door deze blogpost van crisp.

Daar kun je veel informatie vinden over hoe je gegevens als deze op kunt slaan en, misschien nog wel belangrijker, weer uit de database kunt halen om ze weer te geven. Het aangeven van het aantal subcategorieën per categorie is iets wat je zelf dan waarschijnlijk wel kunt bouwen. Zo niet, dan zien we je hier gewoon weer terug :)

Acties:
  • 0 Henk 'm!

  • Remus
  • Registratie: Juli 2000
  • Laatst online: 15-08-2021
Misschien heb je ook iets aan deze:http://www.artfulsoftware...sampler/mysqled1ch20.html

Acties:
  • 0 Henk 'm!

  • RobertMe
  • Registratie: Maart 2009
  • Laatst online: 18:59
Ik zou persoonlijk voor de nested set gaan. Zelf ook net ermee begonnen aan de hand van dit artikel, staat redelijk goed in beschreven hoe je alles moet doen. Met de nested set kun je ook alles, het ophalen van hoeveel kinderen, wat de ouders zijn (wat met alleen een parent id ook nog wel eens moeilijk wil zijn), de indentation al door de db laten berekenen e.d.

Kwa SQL is het iets moeilijker dan met een parent_id, maar uiteindelijk heb je er wel voor voordelen van.

Acties:
  • 0 Henk 'm!

  • Grijze Vos
  • Registratie: December 2002
  • Laatst online: 28-02 22:17
RobertMe schreef op donderdag 11 juni 2009 @ 13:38:
Ik zou persoonlijk voor de nested set gaan. Zelf ook net ermee begonnen aan de hand van dit artikel, staat redelijk goed in beschreven hoe je alles moet doen. Met de nested set kun je ook alles, het ophalen van hoeveel kinderen, wat de ouders zijn (wat met alleen een parent id ook nog wel eens moeilijk wil zijn), de indentation al door de db laten berekenen e.d.

Kwa SQL is het iets moeilijker dan met een parent_id, maar uiteindelijk heb je er wel voor voordelen van.
Da's een optimalisatie die zich soms loont, maar vaak niet de moeite is hoor. Als de TS gewoon zijn tree structure in zijn code zou implementeren als een tree, en niet als een array in een array in een array, dan zou het heel makkelijk zijn om een functie te definieren die de waardes van de knopen uitrekent op een recursieve manier.

Is misschien wat minder efficient dan een nested set, maar het bespaart je een hoop SQL gerommel. En een nieuwe functie om iets nieuws in je boom uit te rekenen is ook zo gebeurd.

Op zoek naar een nieuwe collega, .NET webdev, voornamelijk productontwikkeling. DM voor meer info