[PHP & SMARTY] weergeven van nested array

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Anoniem: 108315

Topicstarter
Hoi, ik ben een aantal dingen aan het proberen met Smarty (icm Achievo ATK) maar loop tegen een aantal moeilijkheden aan. Hieronder staat de array die mbv ATK uit de db komt. Ik krijg het niet voor elkaar om dit goed weer te geven. Het gaat dan vooral om de array's in de array zelf. Zoals deadline en auteur bijvoorbeeld.

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
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
array (
  0 => 
  array (
    'id' => '8',
    'titel' => 'Elevator Pitch',
    'tekst' => 'Gewoon een stukje tekst!',
    'deadline' => 
    array (
      'year' => '2006',
      'month' => '12',
      'day' => '15',
    ),
    'deadline_soort' => '',
    'vergadering' => '0',
    'auteur' => 
    array (
      'firstname' => 'Henk',
      'lastname' => 'Visser',
      'id' => '7',
    ),
    'projectteam_id' => 
    array (
      'projectteam' => 'Personeelszaken',
      'id' => '5',
    ),
    'proces_id' => '0',
    'datum_geplaatst' => 
    array (
      'year' => '2006',
      'month' => '03',
      'day' => '28',
      'hours' => '11',
      'minutes' => '58',
      'seconds' => '00',
    ),
    'updatestamp' => 
    array (
      'year' => '2006',
      'month' => '03',
      'day' => '28',
      'hours' => '15',
      'minutes' => '40',
      'seconds' => '33',
    ),
    'archief' => '0',
    'archief_datum' => 
    array (
      0 => '',
    ),
    'atkprimkey' => 'qplan_actiepunten.id=\'8\'',
  ),
)


Het .tpl bestand ($ap bevat de bovenstaande array);
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
{foreach from=$ap item=gebr}
  {$gebr.titel}
  <br />
  {$gebr.tekst}
  <br />
  {$gebr.auteur}
  <p></p>
  
  {foreach from=$ap.auteur item=naam}
  {$naam.firstname} {$naam.lastname}
  {/foreach}
  .
  {/foreach}

Bovenstaande code geeft alleen de titel en tekst. De tag $gebr.auteur geeft alleen "Array" terug. Met {$gebr.auteur.firstname} lukt het me wel om de voornaam weer te geven maar dit moet toch makkelijk kunnen met {foreach} of {section}? Kan iemand me vertellen hoe dit zou moeten wellicht?

alvast bedankt.

Acties:
  • 0 Henk 'm!

  • Ricvdp
  • Registratie: Juni 2005
  • Laatst online: 10-06 15:59
Aangezien je nogal diep de array in gaat, is een loop in een loop in een loop etc. niet zo efficiënt, zou je niet beter iets met recursie kunnen proberen?

Acties:
  • 0 Henk 'm!

  • XWB
  • Registratie: Januari 2002
  • Niet online

XWB

Devver
{$gebr.auteur.firstname}, {$gebr.auteur.lastname} :?

March of the Eagles


Acties:
  • 0 Henk 'm!

  • Civil
  • Registratie: Oktober 2002
  • Laatst online: 02-06 21:55
Kun je in dit geval niet beter een section gebruiken.

code:
1
2
3
4
5
6
7
{section name=curItem loop=$Array}
{$Array[curItem].id}
{$Array[curItem].titel}
{$Array[curItem].tekst}
{$Array[curItem].deadline.year}
{$Array[curItem].deadline.month}
{/section}


Je kunt sections overigens ook nesten als je geneste numerieke arrays hebt waar je doorheen wil loopen.

Acties:
  • 0 Henk 'm!

Anoniem: 108315

Topicstarter
Hacku schreef op dinsdag 04 april 2006 @ 20:06:
{$gebr.auteur.firstname}, {$gebr.auteur.lastname} :?
Had ik al vermeld dat dat werkt. Maar bij gebruik van datum wordt dit wel een ietwat lange regel.
Civil schreef op dinsdag 04 april 2006 @ 20:30:
Kun je in dit geval niet beter een section gebruiken.

code:
1
2
3
4
5
6
7
{section name=curItem loop=$Array}
{$Array[curItem].id}
{$Array[curItem].titel}
{$Array[curItem].tekst}
{$Array[curItem].deadline.year}
{$Array[curItem].deadline.month}
{/section}


Je kunt sections overigens ook nesten als je geneste numerieke arrays hebt waar je doorheen wil loopen.
Dit werkt inderdaad ook prima. Er is eigenlijk geen verschil met foreach toch? Typisch ook eigenlijk dat de datum als array uit de db wordt gehaald.

ik ga er weer verder mee pielen. thnx.