[ Milos911 @ 05.05.2011. 20:15 ] @
Kad izvadim podatke iz baze i stavim ih u array, dobijem sledece:
Code:
Array
(
    [0] => Array
        (
        )

    [1] => Array
        (
            [c_id] => 1
            [address] => Prva cottage
            [price] => 1
            [rooms] => 1
            [available] => 1
            [image] => 
        )

    [2] => Array
        (
            [c_id] => 2
            [address] => druga cottage
            [price] => 2
            [rooms] => 2
            [available] => 1
            [image] => 
        )

    [3] => Array
        (
            [c_id] => 3
            [address] => treca cottage
            [price] => 3
            [rooms] => 4
            [available] => 1
            [image] => 
        )

)

Ovo prosledim smartiju i onda treba da ga ispisem. Ali nikako ne mogu da provalim kako da to uradim? Citam manual, oni u primeru imaju array:
Code:
array(
                             array('phone' => '555-555-1234',
                                   'fax' => '555-555-5678',
                                   'cell' => '555-555-0357'),
                             array('phone' => '800-555-4444',
                                   'fax' => '800-555-3333',
                                   'cell' => '800-555-2222')
                             ));

i ispisuju je sa
Code:
{* key always available as a property *}
{foreach $contacts as $contact}
  {foreach $contact as $value}
    {$value@key}: {$value}
  {/foreach}
{/foreach}

{* accessing key the PHP syntax alternate *}
{foreach $contacts as $contact}
  {foreach $contact as $key => $value}
    {$key}: {$value}
  {/foreach}
{/foreach}
Ja kad ovaj kod pokusam da prilagodim mojoj (mom?) array, ili mi izbaci samo jedno slovo ili mi izbaci array(). Nije mi jasno u cemu gresim, i zasto mi bar ako upisem jedno slovo pored (cisto kao deo teksta, nema veze sa kodom) ne ispise to tri puta (ili 4, uglavnom da prodje kroz sve prve vrednosti array-a). Ne trazim da mi neko napise gotov kod, samo da me posavetuje u cemu gresim.

[ dakipro @ 05.05.2011. 20:24 ] @
ovako instant, kada ti ispise jedno slovo znaci da ono sto vrtis u foreach je ustvari *string. Verovatni imas jednu dubinu visak, probaj "plice" da radis foreach.
Ako stavis foreach od 'text' on ce kao Value da ti izbaci T (ili bese ide za svako slovo ne secam se)

[Ovu poruku je menjao dakipro dana 06.05.2011. u 13:14 GMT+1]
[ Milos911 @ 05.05.2011. 21:32 ] @
Nije mi bas najjasnije kako?
Zar ima plice od onog prvog {foreach $contacts as $contact}? Valjda kad njega vrti, treba da provrti sva cetiri unosa, i onda sa unutrasnjim foreach-om izrotiram array iz array? Ili ja ovo pogresno kapiram?
[ Br@nkoR @ 05.05.2011. 21:43 ] @
Npr
PHP
Code (php):
$smarty = new Smarty;
$tvojNiz = Array
   (
      Array
           (
               'c_id' => 1,
               'address' => 'Prva cottage',
               'price' => 1,
               'rooms' => 1,
               'available' => 1,
               'image' => null
           ),
   
       Array
           (
               'c_id' => 2,
               'address' => 'druga cottage',
               'price' => 2,
               'rooms' => 2,
               'available' => 1,
               'image' => null
           ),
   
       Array
           (
               'c_id' => 3,
               'address' => 'treca cottage',
               'price' => 3,
               'rooms' => 4,
               'available' => 1,
               'image' => null
           )
   );

$smarty->assign("tvojNiz", $tvojNiz);
$smarty->display('index.tpl');


index.tpl
Code:

{foreach $tvojNiz as $niz}
  {foreach $niz as $value}
    {$value@key}: {$value} <br />
  {/foreach}
  <hr />
{/foreach}

<hr /> ILI <hr />

{foreach $tvojNiz as $niz}
  {foreach $niz as $key => $value}
    {$key}: {$value}<br />
  {/foreach}
  <hr />
{/foreach}

<hr /> ILI <hr />

{foreach item=niz from=$tvojNiz}
  {$niz.c_id}<br />
  {$niz.address}<br />
  {$niz.price}<br />
  {$niz.rooms}<br />
  {$niz.available}<br />
  {$niz.image}<br />
<hr />
{/foreach}

<hr /> ILI <hr />

{section name=niz loop=$tvojNiz}
  {$tvojNiz[niz].c_id}<br />
  {$tvojNiz[niz].address}<br />
  {$tvojNiz[niz].price}<br />
  {$tvojNiz[niz].rooms}<br />
  {$tvojNiz[niz].available}<br />
  {$tvojNiz[niz].image}<br />
  <hr />
{/section}

...
[ Milos911 @ 06.05.2011. 09:10 ] @
Code:

0: Array 
ILI 
0: Array
ILI 
A
A
A
A
A
A
ILI

Evo sta mi vraca. Probao sa da menjam ovo trece, posto ono izgleda radi donekle, i da stavim
Code:

{$niz[c_id]} - vraca isto
{$niz} - vraca array
Probao sam i da uzmem bilo koju vrednost iz array (ne kroz loop, nego ovako "normalno"), prateci tutorial sa smarty.net, ali nisam uspeo. Ili sam ja retardiran, ili je ovo mnogo komplikovano :)
[ pajaja @ 06.05.2011. 09:17 ] @
Pa izgleda kao da taj array ima dubinu 3 a ne 2. Ubaci {debug} u templejt pa vidi kakav tacno array dobija smarty ili probaj da dodas jos jednu foreach petlju.
[ Br@nkoR @ 06.05.2011. 09:24 ] @
Postavi php kod koji koristiš za testiranje, jer ono što sam ja postavio radi kod mene.
[ Milos911 @ 06.05.2011. 11:07 ] @
Probao sam i tacan c/p koda koji si ostavio, i meni izbacuje ono gore sto sam napisao.
A evo mog koda sa kojim vadim stvari iz baze:
Code:

functions.php
function get_cottages(){
    $queryT = mysql_query("SELECT * FROM cottages");
    
    $cottages_array[] = array();
    while($rowT = mysql_fetch_assoc($queryT)) {
    $cottages_array[] = $rowT;
    };
    

    return $cottages_array;
    };

index.php
$cottages_array = get_cottages();
$smarty->assign('tvojNiz',"$tvojNiz");

i onda u tpl fajlu kod koji si postavio gore.

Debug mi vraca
Code:
$SCRIPT_NAME    Smarty_Variable Object (3)
->value = "/Freelancer/holiday_cottages/admin/ad..."
->nocache = false
->scope = "Global"
$base_path    Smarty_Variable Object (3)
->value = "../templates/default/admin/"
->nocache = false
->scope = "Smarty root"
$case    Smarty_Variable Object (3)
->value = "edit_cottage"
->nocache = false
->scope = "Smarty root"
$key    Smarty_Variable Object (3)
->value = 0
->nocache = false
->scope = "file:../templates/default/admin/edit_..."
$list_cottages    Smarty_Variable Object (3)
->value = "yes"
->nocache = false
->scope = "Smarty root"
$logged_in    Smarty_Variable Object (3)
->value = "1"
->nocache = false
->scope = "Smarty root"
$niz    Smarty_Variable Object (4)
->value = "Array"
->nocache = false
->scope = "file:../templates/default/admin/edit_..."
->key = 0
$smarty    Smarty_Variable Object (3)
->value = Array (1)
  section => Array (1)
    niz => Array (7)
      name => "niz"
      loop => 0
      show => false
      max => 0
      step => 1
      start => 0
      total => 0
->nocache = false
->scope = "file:../templates/default/admin/edit_..."
$tvojNiz    Smarty_Variable Object (3)
->value = "Array"
->nocache = false
->scope = "Smarty root"
$value    Smarty_Variable Object (4)
->value = "Array"
->nocache = false
->scope = "file:../templates/default/admin/edit_..."
->key = 0
print_r onog array-a sto dobijam kad izvucem podatke iz baze mi vraca onaj array koji sam napisao u prvoj poruci.
Probao sam da ocistim kes, da proverim da on mozda ne pravi problem. Smarty je verzija 3.0.7
[ Br@nkoR @ 06.05.2011. 11:23 ] @
Ja nisam ovako napisao
Code:
$smarty->assign('tvojNiz',"$tvojNiz");


Koristi
Code:
$smarty->assign('tvojNiz', $tvojNiz);
[ Milos911 @ 06.05.2011. 12:02 ] @
Radi :) Ako dobro kapiram, ja sam smartiju slao string umesto array, ili? A kad bi sad ovaj array imao jos jednu dubinu, kako bi se ona listala (ne treba mi za ovo nego me cisto zanima da bih ukapirao kako sta funkcionise}? Recimo, ovaj primer me zanima:

Code:
{foreach $tvojNiz as $niz}
  {foreach $niz as $value}
    {$value@key}: {$value} <br />
  {/foreach}
  <hr />
{/foreach}

I da vidimo da li sam dobro ovo shvatio. U prvom foreach-u mi dodeljujemo prvi array iz glavnog array-a varijabli niz. Onda u drugom samo prodjemo kroz novi array i ispisemo vrednosti?
Znaci kad bi imalo jos jednu dubinu islo bi ovako?
Code:

{foreach $tvojNiz as $niz}
  {foreach $niz as $niz2}
    {foreach $niz2 as $value}
      {$value@key}: {$value} <br />
    {/foreach}
  {/foreach}
  <hr />
{/foreach}
}
[ Br@nkoR @ 06.05.2011. 12:18 ] @
Da. Da.

Samo još nešto, umesto
Code:
$cottages_array[] = array();

stavi
Code:
$cottages_array = array();

Da ti ne bi uvek na prvo mesto u nizu stavljao prazan niz.
[ Milos911 @ 06.05.2011. 19:57 ] @
Super, stvarno mnogo hvala na pomoci, najzad sam razumeo ovo.