Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Smarty i 2x foreach
Forum PHP.pl > Forum > PHP
omeck
Mam problem z foreach i smarty. Chce wyswietlic kategorie a pod nimi sub kategorie. Kategoriami w tym przypadku sa kierunki studiow, a podkategoriami grupy. Zrobilem taki kod:

  1. <?php
  2. $kierunki = $db->get_results("SELECT id, kierunek FROM kierunki");
  3.  
  4. foreach ($kierunki as $kierunek){
  5. echo $kierunek->kierunek;
  6. echo '<br>';
  7. $grupy = $db->get_results("SELECT id, kierunek_id,nazwa FROM grupy WHERE kierunek_id ='".$kierunek->id."'");
  8. if($grupy >0){
  9. foreach ($grupy as $grupa){
  10. echo $grupa->nazwa;
  11. echo '<br>';
  12. }
  13. }
  14. }
  15. ?>


i dziala bez zarzutow teraz chce to zrobic za pomoca smarty:

  1. <?php
  2. $smarty->assign('kierunki', $db->get_results("SELECT id,kierunek FROM kierunki"));
  3. ?>


tpl:

Kod
{foreach item=kierunek from=$kierunki}
{kierunek.kierunek}

  a tutaj musze wstawic petle wyswietlajaca grupy

{/foreach}



probowalem w ten sposob:

  1. <?php
  2. $smarty->assign('kierunki', $db->get_results("SELECT id,kierunek FROM kierunki"));
  3.  
  4. $kierunki = $db->get_results("SELECT id, kierunek FROM kierunki");
  5.  
  6. foreach ($kierunki as $kierunek){
  7.  
  8. $smarty->assign('grupy', $db->get_results("SELECT id, kierunek_id,nazwa FROM grupy WHERE kierunek_id ='".$kierunek->id."'"));
  9.  
  10. }
  11. ?>


i tpl:

Kod
{foreach item=kierunek from=$kierunki}
{$kierunek.kierunek}

{foreach item=grupa from=$grupy}

{$grupa.nazwa}

{/foreach}
{/foreach}


i nie dziala sad.gif prosze o pomoc...
crash
Pobierz dane z bazy i zapisz je w jednej tablicy (mniej więcej tak jak robisz to teraz) dwuwymiarowej, która powinna wyglądać tak:
Kod
array(
  'kierunek A' = array(
                            'grupa A',
                            'grupa B',
                            'grupa C'
                     ),
  'kierunek B' = array(
                            'grupa A',
                            'grupa B'
                     )
      );

Hint:
  1. <?php
  2. $tablica = array();
  3.  
  4. $kierunki = $db->get_results( 'SELECT id, kierunek FROM kierunki' );
  5.  
  6. foreach( $kierunki as $kierunek )
  7. {
  8.  $tablica[ $kierunek ] = $db->get_results( 'SELECT id, kierunek_id,nazwa FROM grupy WHERE kierunek_id ="' . $kierunek->id . '"' ) );
  9. }
  10.  
  11. $smarty->assign( 'tablica', $tablica );
  12. ?>

A w szablonie smarty:
  1. {foreach from=$tablica item=grupy key=kierunek}
  2. Dostępne grupy dla kierunku {$kierunek}:<br/>
  3. {foreach from=$grupy item=grupa}
  4. {$grupa}<br/>
  5. {/foreach}
  6. {/foreach}
omeck
DZIAŁA!!! biggrin.gif

musialem jeszcze tylko oczywiscie zmienic z $tablica[ $kierunek ] na $tablica[$kierunek->kierunek]

WIELKIE DZIEKI!!!!
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.