Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: suma liczb w SMARTY i wywoływanie funkcji php
Forum PHP.pl > Forum > PHP
elwierka
Witajcie, jak zsumować wartości pól jednej kolumny w Smarty?

Mam plik .tpl
  1. <div class="obszRoboczy" style="width:620px;">
  2. <table class="klienci" cellpadding="1" cellspacing="1">
  3. <tr>
  4. {section name=id loop=$dane}
  5. <th class="tlo-orange txtBialy">{$dane[id]}</th>
  6. {/section}
  7. </tr>
  8.  
  9. {section name=nr loop=$numer}
  10. <tr bgcolor='{cycle values="#ffffff, #f4f7f8"}'>
  11.  
  12. <td>{$numer[nr]}</td>
  13. <td>{$data[nr]|truncate:10:"":true}</td>
  14. <td>{$rabat[nr]}%</td>
  15. <td style="text-align:right;">{$wart_n[nr]}.</td>
  16. <td style="text-align:right;">{$status[nr]}</td>
  17. <td style="text-align:right;">{$stan[nr]}</td>
  18. <td><a href="./?d=zamowienia&zamID={$numer[nr]}">Szczegóły</a></td>
  19. <td><a href="drukuj()"><img src="./includes/img/drukuj2.jpg" width="20" /></a></td>
  20. </tr>
  21. {/section}
  22. <tr><td>Razem: </td><td colspan="5">
  23. [b]{assign var = "total" value="0"}
  24. {section name=wartn loop=$wart_n}
  25. {assign var ="total" value="$tota+$wart_n[wartn]"}
  26. {$total} [/b]
  27. {/section}
  28. </td></tr>
  29. </table>
  30. </div>


Próbuję na różne sposoby ale nie udaje mi się. Wyświetla mi ciąg jako liczba + liczba + liczba + liczba, a nie zsumowaną wartośc.

i jeszcze jedno pytanko.
Czy w szablonie smarty mogę wykorzystywać funkcje z php?
Chciałabym w komórce z id statusu i id_stanu ,wyświetlić ich nazwy.
Ma to wykonać funkcja status_nazwa($status_id)....itd...
Jak użyć tą funkcję w szablonie, jeśli się da?
Daimos
poczytaj o pluginach, czy helperach w smarty (już nie pamiętam jak to się tam zwało winksmiley.jpg
Ale było tam chyba coś do sumowania, na pewno działania matematyczne są do zrobienia. No i możesz pisać własne pluginy, wystarczy poszperać smile.gif
elwierka
to nie ma w Smarty takiego prostego rozwiązania, jak dodawanie ?
maly_swd
{math equation="x + y * z" x=$wartosc_x y=$wartosc_y z=$wartosc_z}


lub {math equation="x + y * z" x=$wartosc_x y=$wartosc_y z=$wartosc_z assign=wynik}

w zeminnej $wynik masz wynik operacji


co do php to:
{php}
global $foo, $bar;
if($foo == $bar){
echo 'This will be sent to browser';
}
// assign a variable to Smarty
$this->assign('varX','Toffee');
{/php}
{* output the variable *}
<strong>{$varX}</strong> is my fav ice cream :-)
chomiczek
a ja się trochę podepnę tutaj pod temat..a mianowicie.. mam w pliku tpl taki kod (wycięte zbędne rzeczy)
Kod
{foreach from=$products item=product name=products}
[cut]
{assign var=plik value=`$product,reference`}
{include_php file='sprawdzZdalnyPlik.php'}
{if $pisz == 'ok'}
{$product.reference|escape}
{else}
pisz: 404
[cut]
{/if}
{/foreach}


plik PHP
  1. if (remote_file_exists('http://url/zdjecia/foto/'.$this->get_template_vars("plik").'.jpg')==200) $pi = 'ok';
  2. else $pi = 'er';
  3. $this->assign('pisz', $pi);

i zwraca prawidłowo pisz, ale tylko za pierwszym razem, później wywala błąd?
z tego co widzę to {assign var=plik value=`$product,reference`} za drugim razem tworzy tablice.. czy można jakoś usunąć zmienną? w tym przypadku plik
tr@k
Kod
{assign var=plik value=`$product,reference`}

chyba raczej powinno być tak (kropka zamiast przecinka)
Kod
{assign var=plik value=`$product.reference`}


Jeśli chodzi o dodawanie w szablonie to chyba nie jest najlepszy pomysł, bo przenosisz logikę do szablonu. Przekaż do szablonu już wyliczone dane.
chomiczek
co do przecinka to mój błąd.. źle przykleiłem.. a co logiki.. hmm.. może masz rację smile.gif

EDT: no jednak z wielu względów nie mogę tego edytować.. znalazłem niby http://smarty.incutio.com/?page=Unassign ale nie działa.. nie wiem czemu sad.gif
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.