[ bciric @ 29.03.2009. 22:05 ] @
kako da prilikom ispisa podataka smartijem uzimam po dve stavke iz baze?

evo primer:
Code:
    $query = mysql_query("SELECT * FROM artikli WHERE (kategorija = '$kat')");
    $nizdet = array();
    while ($item = mysql_fetch_array($query))
    {
        $nizdet[] = $item;
    }
    $smarty->assign('nizdet', $nizdet);    


e kako sad da organizujem section da mogu po dva artikla ispisati?



Code:
      {section name=i loop=$nizdet}
      <tr>
        <td width="6%" align="center"><font size="2">{$nizdet[i].rb}</font></td>
        <td width="39%"><font size="2">{$nizdet[i].naziv}</font></td>
      </tr>
      {/section}


ovo mi daje stavku po stavku

hvala unapred
[ Nikola Poša @ 30.03.2009. 10:11 ] @
Čekaj, a što ne ideš sa foreach:
Code:

{foreach from=$nizdet item=n}
<tr>
   <td width="6%" align="center"><font size="2">{$n.rb}</font></td>
   <td width="39%"><font size="2">{$n.naziv}</font></td>
</tr>
{/foreach}
[ bciric @ 30.03.2009. 10:19 ] @
ma ok je i ovo ali daje isti rezultat, a meni treba da mogu dve stavke odjednom da citam iz baze.

Code:

{foreach from=$nizdet item=n}
<tr>
   <td width="6%" align="center"><font size="2">{$n.rb}</font></td>
   <td width="39%"><font size="2">{$n.naziv}</font></td>
</tr>
//<tr>
//   <td width="6%" align="center"><font size="2">sad ovde da bude sledeci rednio broj</font></td>
//   <td width="39%"><font size="2">i naziv sledeceg artuikla</font></td>
//</tr>
{/foreach}


a da se brojac inkrementira za dva.

hocu da ispisem artikle u dve kolone.
[ dakipro @ 30.03.2009. 10:24 ] @
Iz manuala http://www.smarty.net/manual/en/language.function.foreach.php:
Code:

{* The header block is output every five rows *}
<table>
{foreach from=$items key=myId item=i name=foo}
  {if $smarty.foreach.foo.index % 5 == 0}
     <tr><th>Title</th></tr>
  {/if}
  <tr><td>{$i.label}</td></tr>
{/foreach}
</table>

I sad umesto 5 stavis 2, i umesto <th> stavis </tr><tr> i tako otvoris novi red na svaka dva podatka.
MAda meni cesto sa .index izbaci neku gresku, pa koristim .iteration.
Ili mozes niz da preslozis u dva nivoa, pa onda sa dve petlje (sporije, imas po 2 petlje vise nepotrebne, ali ajd) recimo:

$niz = [red1] => array[2clanaZaOvajRed];
$niz = [red2] => array[2clanaZaOvajRed];
$niz = [red3] => array[2clanaZaOvajRed];


Prvi slucaj malo detaljnije (hint cisto):

Code:

{* The header block is output every five rows *}
<table>
<tr>
{foreach from=$items key=myId item=i name=foo}
  
  <td>{$i.label}</td>
  {if $smarty.foreach.foo.index % 2 == 0}
     </tr><tr>
  {/if}
{/foreach}
</tr>
</table>
[ bciric @ 30.03.2009. 10:38 ] @
video sa i ja ovaj cod, ali kako da pristupam podacima, ne trebam indekse stampati nego podatke.

Code:

<table>
{foreach from=$items key=myId item=i name=foo}
  {if $smarty.foreach.foo.index % 2 == 0}
     <tr><th>Title</th></tr>
  {/if}
  <tr><td>{$i.label}</td></tr>
{/foreach}
</table>


$i.label je ok, ali kako da pristupim sledecem indeksu?
[ dakipro @ 30.03.2009. 10:59 ] @
Pa ne kontam sta ce ti sad, kroz petlju pristupas svakom indexu po redu, i samo na svaki drugi index udaris novi TR, kao sto sam ti napisao u drugom primeru.. znaci taj kod bi iscrta
<tr>

foreach(){
<td>clan1</td><td>clan2</td>
// Kako je stigo if brojac do 2, nacrtao bi se novi red
if(brojacJeSvakiDrugi){
</tr><tr>
}
}

</tr>


Ne kontam sad pitanje... pogledaj malo bolje ovaj primer, ili je to resenje, ili ja nisam skontao sta ti treba
[ Nikola Poša @ 30.03.2009. 11:36 ] @
Ni meni sad nije jasno šta ti sad hoćeš, ako bi se recimo to što tebi treba u čistom PHP-u ispisivalo ovako:
Code:

for ($i = 0; $i < count($nizdet); $i = $i + 2) {
   echo '
   <tr>
      <td width="6%" align="center"><font size="2">' .$nizdet[$i]['rb'] . '</font></td>
      <td width="39%"><font size="2">' .$nizdet[$i]['naziv'] . '</font></td>
   </tr>
   <tr>
      <td width="6%" align="center"><font size="2">' .$nizdet[$i+1]['rb'] . '</font></td>
      <td width="39%"><font size="2">' .$nizdet[$i+1]['naziv'] . '</font></td>
   </tr>
}

Onda je Smarty-jev pandam tome npr. ovo:
Code:

{section name=test loop=$nizdet step=2}
   <tr>
      <td width="6%" align="center"><font size="2">{$nizdet[test].rb}</font></td>
      <td width="39%"><font size="2">{$nizdet[test].naziv}</font></td>
   </tr>
   <tr>
      <td width="6%" align="center"><font size="2">{$nizdet[test.index_next].rb}</font></td>
      <td width="39%"><font size="2">{$nizdet[test.index_next].rb}</font></td>
   </tr>
{/section}

Ili ako ti je lakše samo uokviri onaj PHP kod u Smarty-ju tag-ovima {php} i {/php}. Ali samo pre petlje stavi $nizdet = $this->_tpl_vars['nizdet _items'].
[ bciric @ 30.03.2009. 15:17 ] @
e bas mi to treba. hvala najlepse


pozdrav
[ VladaSu @ 27.04.2009. 21:11 ] @
Malo sam zakasnio ali problem ti je mysql_fetch_array naredba...
Trenutno ti radi ovako:
array mysql_fetch_array ( resource $result [, int $result_type= MYSQL_BOTH ] )

A promeni po zelji drugi parametar....

"By using MYSQL_BOTH (default), you'll get an array with both associative and number indices. Using MYSQL_ASSOC, you only get associative indices (as mysql_fetch_assoc() works), using MYSQL_NUM, you only get number indices (as mysql_fetch_row() works). "