vypisovanie dat z databazy do viacerych stlpcov tabulky v latte
- Matej123
- Člen | 150
Dobry den, chcel by som sa podakovat jednu vec (mozno pre niekoho az primitivnu :)), ale dlho sa s tym trapim a stale to nevyzera tak, ako si predstavujem. Vypisujem v latte sablony data z databazy takymto sposobom:
<?php
<table>
{foreach $pantryFood as $food}
<tr>
<td>{$food->name} </td>
</tr>
{/foreach}
</table>
?>
Pri takomto vypise mi zobrazi stranku kde mam vsetky polozky (vyse 50) pod sebou v jednom stlpci. Ako mam v Nette sikovne nastavit tak aby sa mi vypisalo napriklad 10 zaznamov do prveho stlpca dalsich 10 do druheho, teda dokopy by bolo 5 stlpcov?
- Ondris
- Člen | 37
V šablonách je skvělá věc, která se jmenuje iterator: https://latte.nette.org/cs/tags#…
.
Takže pomocí funkce getCounter() si zjistíš kolikátý je průchod cyklem a
další sloupec vypíšeš každý desátý průchod.
- Matej123
- Člen | 150
jasne to poznam take veci, ale neviem velmi ako to zakomponovat do tohto kodu co som tu daval. Nevedel/li by si/ste mi upravit kod vyssie aby to tak fungovalo? :)
Ondris napsal(a):
V šablonách je skvělá věc, která se jmenuje iterator: https://latte.nette.org/cs/tags#… .
Takže pomocí funkce getCounter() si zjistíš kolikátý je průchod cyklem a další sloupec vypíšeš každý desátý průchod.
- Mysteria
- Člen | 797
Já používám tohle (shodou okolností taky pro pět sloupců). Jenom si tam samozřejmě přepiš $players as $player na svoje vlastní proměnné. Fungování je jednoduchý, každý pátý záznam ukončíš stávající a začneš nový řádek. Poslední podmínka se pak stará o to, aby byl výsledek validní, tzn. aby poslední řádek měl vždy 5 sloupců, i když pro ně už nejsou údaje (tzn. když v posledním řádku budou jenom data pro dva sloupce, tak do dalších třech se dá mezera).
<tbody n:inner-foreach='$players as $player'>
{if $iterator->counter === 1}<tr>{/if}
<td><strong>{$player}</strong></td>
{if $iterator->counter % 5 === 0}</tr>
{if !$iterator->last}<tr>{/if}
{/if}
{if $iterator->last && count($players) % 5 !== 0}
<td n:for='$i = 1; $i <= 5 - $iterator->counter % 5; $i++'> </td>
</tr>
{/if}
</tbody>
- Matej123
- Člen | 150
dakujem, pomohlo mi to :)
Mysteria napsal(a):
Já používám tohle (shodou okolností taky pro pět sloupců). Jenom si tam samozřejmě přepiš $players as $player na svoje vlastní proměnné. Fungování je jednoduchý, každý pátý záznam ukončíš stávající a začneš nový řádek. Poslední podmínka se pak stará o to, aby byl výsledek validní, tzn. aby poslední řádek měl vždy 5 sloupců, i když pro ně už nejsou údaje (tzn. když v posledním řádku budou jenom data pro dva sloupce, tak do dalších třech se dá mezera).
<tbody n:inner-foreach='$players as $player'> {if $iterator->counter === 1}<tr>{/if} <td><strong>{$player}</strong></td> {if $iterator->counter % 5 === 0}</tr> {if !$iterator->last}<tr>{/if} {/if} {if $iterator->last && count($players) % 5 !== 0} <td n:for='$i = 1; $i <= 5 - $iterator->counter % 5; $i++'> </td> </tr> {/if} </tbody>