hulp gevraagd met smarty-probleempje

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Marcel K

Marcel K

21/05/2009 20:19:00
Quote Anchor link
Dag heren,

Ik heb een probleempje waar ik niet uit kom, ligt ongetwijfeld aan mij.
Wat is het geval: Ik heb een menu met hoofdcategeorie-en en subcategorie-en wat ik wil weergeven. Een genest menu dus.

Ik heb met php gegevens uit een database opgevraagd en dat gaf als resultaat:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
Array (2)
hoofd => Array (2)
  0 => Array (3)
    main_id => "3"
    maincat_desc => "A/V reparatieparts"
    publish => "1"
  1 => Array (3)
    main_id => "1"
    maincat_desc => "Halfgeleiders"
    publish => "1"
sub => Array (4)
  0 => Array (5)
    subcat_id => "3"
    main_id => "3"
    subcat_desc => "Audio parts"
    referer => "#"
    publish => "1"
  1 => Array (5)
    subcat_id => "4"
    main_id => "3"
    subcat_desc => "Video parts"
    referer => "#"
    publish => "1"
  2 => Array (5)
    subcat_id => "2"
    main_id => "1"
    subcat_desc => "Fet"
    referer => "#"
    publish => "1"
  3 => Array (5)
    subcat_id => "1"
    main_id => "1"
    subcat_desc => "Transistor"
    referer => "#"
    publish => "1"

Dit stuur ik naar smarty in de variabele menudata.

Mijn (test)-template ziet er op dit moment als volgt uit:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
{foreach from=$menudata item=maincat key=main_id}
    {$main_id}{$maincat_desc}
    {foreach from=$catitem item=subcat}
        {$subcat.subcat_id}
        {$subcat.subcat_desc}<br>
    {/foreach}
    <br><br>
{/foreach}

Ik krijg echter met geen enkele mogelijkheid de hoofdkategorie-en met daarbij de subkategorie-en op volgorde te zien.

Het resultaat wat ik nu krijg is:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
hoofd

sub

Ik moet echter krijgen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
3 A/V Reparatieparts
   3 Audio Parts
   4 Video parts
1 Halfgeleiders
   2 Fet
   1 Transistor

Kan iemand mij svp op weg helpen ?
Gewijzigd op 01/01/1970 01:00:00 door Marcel K
 
PHP hulp

PHP hulp

28/09/2022 14:25:54
 
Marcel K

Marcel K

21/05/2009 22:34:00
Quote Anchor link
Niemand die Smarty gebruikt zeker ?
 

21/05/2009 22:44:00
Quote Anchor link
http://phphulp.nl/faq/#24
Je topic staat hier nog maar twee uur, wacht dus effe.

Kleuter.
Gewijzigd op 01/01/1970 01:00:00 door
 
Marcel K

Marcel K

22/05/2009 12:17:00
Quote Anchor link
bump.
 
Marcel K

Marcel K

23/05/2009 11:34:00
Quote Anchor link
Zo te zien gebruikt niemand Smarty, dus dan hoef ik de oplossing die ik ondertussen gevonden heb hier ook niet meer te zetten.
Hartelijk dank weer.
Voor de modjes: sluit deze topic maar svp.
 
- Ariën  -
Beheerder

- Ariën -

23/05/2009 12:05:00
Quote Anchor link
En wat dacht je van dit forum als knowledgebase?
Dan kan je de oplossing zeker wel posten.

En waarom dit topic sluiten?
 
Hipska BE

Hipska BE

23/05/2009 12:15:00
Quote Anchor link
Ten eerste, er zijn er zeker wel die smarty gebruiken (o.a. ik).
Ten tweede kan het altijd handig zijn om dergelijke oplossingen te vermelden.

Ten derde zou ik de structuur van je array's anders gedaan hebben, zodat je WEL makkelijk met Smarty dit kon weergeven. Jij gaf namelijk 2 losse lijstjes die verder niets met elkaar te maken hebben (jij denkt van wel, maar smarty weet dat niet). Indien je alles in 1 lijstje als bv zo iets zou gedaan hebben, waren je problemen meteen opgelost:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
Array
(
    [0] => Array
        (
            [naam] => Parts
            [id] => 3
            [subs] => Array
                (
                    [0] => Array
                        (
                            [naam] => Diode
                            [id] => 5
                        )

                    [1] => Array
                        (
                            [naam] => Transistor
                            [id] => 10
                        )

                    [2] => Array
                        (
                            [naam] => FET
                            [id] => 7
                        )

                    [3] => Array
                        (
                            [naam] => Thyristor
                            [id] => 8
                        )

                )

        )

    [1] => Array
        (
            [naam] => Categorin
            [id] => 2
            [subs] => Array
                (
                    [0] => Array
                        (
                            [naam] => Halfgeleiders
                            [id] => 4
                        )

                    [1] => Array
                        (
                            [naam] => Audio
                            [id] => 9
                        )

                    [2] => Array
                        (
                            [naam] => Video
                            [id] => 6
                        )

                )

        )

)
 
Marcel K

Marcel K

24/05/2009 00:01:00
Quote Anchor link
@Karl: Ik ben te oud om kleuter te zijn, ik denk dat ik zelfs oud genoeg ben om je vader te kunnen zijn..
Hou dergelijke opmerkingen svp maar voor je, het voegt niets toe aan dit forum.

@Hipska
1. no comment
2. zie hieronder
3. de structuur zoals ik liet zien is misschien niet geheel volgens de regels, maar die van jou gaat imho ook niet overeenkomen met hetgeen ik wil bereiken.
De oplossing hieronder werkt precies zoals ik het wil, daarmee wil ik niet zeggen dat het de enigste juiste oplossing is.
Ik sta open voor opbouwende kritiek.

Mijn oplossing:

PHP-stukje
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
/* Glossy Categorie-Menu inlezen */
/**********************************************************/
  $sql = "SELECT * FROM cat_main WHERE publish='1' ORDER BY maincat_desc ASC";

  if (!($result = $db->sql_query($sql)))
    {
        die('Could not obtain catmain-menu information');
    }
   while ($regel = $db->sql_fetchrow($result)) {
        $hoofd[]= $regel;
        $sql2="SELECT * FROM cat_sub WHERE main_id='".$regel['main_id']."' AND publish='1' ORDER BY subcat_desc";
        if (!($result2 = $db->sql_query($sql2)))
        {
            die('Could not obtain catsub-menu information');
        }
        while ($regel2 = $db->sql_fetchrow($result2)) {
            $sub[]=$regel2;
        }
    }
  $smarty->assign(array('hoofdcats' => $hoofd,'subcats' => $sub));


Template stukje
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<div class="glossymenu">

{foreach from=$hoofdcats item=maincat key=main_id}
<a class="menuitem submenuheader" href="#"  class="ajaxify" target"#content">{$maincat.maincat_desc}</a>
<div class="submenu">
    <ul>
    {foreach from=$subcats item=subcat}
    {if $maincat.main_id eq $subcat.main_id}
    <li><a href="{$subcat.referer}" class="ajaxify" target"#content">{$subcat.subcat_desc}</a></li>
    {/if}
    {/foreach}
    </ul>
</div>
{/foreach}

</div>
 
Willem Jan Z

Willem Jan Z

24/05/2009 08:26:00
Quote Anchor link
Je hebt het in 2 tabellen :O
Wat als je nu nog een niveau dieper wil gaan, ga je dan nog een tabel aanmaken? Niet echt handig..
Toevallig is hier net een aardige tutorial over geschreven
 
Marcel K

Marcel K

24/05/2009 13:56:00
Quote Anchor link
Ik heb geen noodzaak om nog een nivo dieper te gaan.
Ik zal die tut eens bestuderen, bedankt voor de tip.
 
Hipska BE

Hipska BE

24/05/2009 16:28:00
Quote Anchor link
Dat stukje template lijkt mij niet echt perfomant.

Voor elk hoofdmenu dat er bestaat ga jij telkens het lijstje met alle mogelijke submenu's overlopen. Dat lijkt me nogal veel vertraging en nutteloos serverload te genereren.
 
Marcel K

Marcel K

24/05/2009 19:48:00
Quote Anchor link
Hoe kan ik dit dan beter doen ?
Heb je een verbeterd voorstel ?
Ik ben maar een beginner, dus iedere hulp is welkom.
 
Hipska BE

Hipska BE

24/05/2009 19:54:00
Quote Anchor link
Nou het lijkt me dat ik al een voorstel gedaan had.
En de tutorial die Willem-Jan voorstelde kan je ook eens doornemen.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.