[php][smarty] Wyświetlenie wielowymiarowej tablicy

0

To znowu ja :)

Mam problem z wyświetleniem wielowymiarowej tablicy w smarty.

Najpierw pokażę jak ta tablica powstaje/zmienia zawartość w php

private $a_produkty = Array();

public function dodaj_do_koszyka($iv_id_produktu)
{
  $sql = "SELECT nazwa, cena FROM produkty WHERE id_produktu='$iv_id_produktu'";
  $a_produkt = $this->o_db->GetRow($sql);
  $this->a_produkty[]['id_produktu'] = $iv_id_produktu;
  $this->a_produkty[]['nazwa'] = $a_produkt['nazwa'];
  $this->a_produkty[]['cena'] = $a_produkt['cena'];
}

I tyle. Zwracana do smartów jest o tak:

public function zwroc_zawartosc_koszyka()
{
  $o_smarty->assign('a_produkty_z_koszyka', $this->a_produkty);
}

Tabela po np. dodaniu dwóch produktów wygląda tak:

array(6) { [0]=>  array(1) { ["id_produktu"]=>  string(1) "3" } [1]=>  array(1) { ["nazwa"]=>  string(9) "Retro 26s" } [2]=>  array(1) { ["cena"]=>  string(3) "289" } [3]=>  array(1) { ["id_produktu"]=>  string(1) "8" } [4]=>  array(1) { ["nazwa"]=>  string(18) "Giant Boulder 2010" } [5]=>  array(1) { ["cena"]=>  string(4) "1299" } } 

I nie bardzo mam pomysł jak wyświetlić zawartość w smartach. Robię tak:

{foreach from=$a_produkty_z_koszyka item=a_produkt_z_koszyka}
          {$a_produkt_z_koszyka.id_produktu}{$a_produkt_z_koszyka.nazwa} cena {$a_produkt_z_koszyka.cena}<br>
{/foreach}

Smarty wywalają mi to:

3 cena
Retro 26s cena
cena 289
8 cena
Giant Boulder 2010 cena
cena 1299

A chciałbym:

3 Retro 26s cena 289
8 Giant Boulder 2010 cena 1299

0

A nie mozesz zamienic

  $this->a_produkty[]['id_produktu'] = $iv_id_produktu;
  $this->a_produkty[]['nazwa'] = $a_produkt['nazwa'];
  $this->a_produkty[]['cena'] = $a_produkt['cena'];

na

  $this->a_produkty[] = array(
  "id_produktu"=>$iv_id_produktu,
  "nazwa"=> $a_produkt['nazwa'],
  "cena"=>$a_produkt['cena'],
  );

Bo to co teraz robisz jest dla mnie chore...

0

Niech Ci bogowie w dzieciach wynagrodzą dobry człowieku, na prawdę pomogłeś!

0

Dobra, teraz, gdy mam już tą tablicę i potrafię ją wyświetlić, chciałbym się dowiedzieć jak mogę usunąć z niej wybrany rekord

Tablicę tworzę tak jak pokazał mi wyżej kolega:

$this->a_produkty[] = array(
  "id_produktu"=>$iv_id_produktu,
  "nazwa"=> $a_produkt['nazwa'],
  "cena"=>$a_produkt['cena'],
  );

I jak usunąć wybrany rekord po danym id_produktu? Czytałem że array_slice i array_merge może pomóc, ale nie bardzo wiem jak ich użyć.

1 użytkowników online, w tym zalogowanych: 0, gości: 1