Autor Zpráva
maks
Profil
Ahoj,

ať zkouším, jak zkouším, nedaří se mi ve Smarty zapsat totéž, co by šlo v PHP asi takto:
substr($string, -1, strlen($string2));


{if $string|substr:-1:$string2|strlen}

nefunguje. Ani jsem o existenci fce strlen nic nenašel. Existuje vůbec, resp. dá se něco takového udělat?

Našel jsem tento odkaz, ale tady je známa délka druhého stringu.


Děkuji.
Lamicz
Profil
Napises si vlastni modifikator nebo lepe radeji funkci - nemam rad modifikator s vic jak jednou promennou, blbe se mi to cte.
maks
Profil
Abych nezakládal další vlákno, rád bych se zeptal ještě na jednu věc:

Když vypisuji z DB, v PHP používám toto:
while ($polozky = mysql_fetch_assoc($query)) {...}

Toto bych potřeboval nahradit nějakým while ve smarty, pokud by to šlo. Proměnnou query mám v jiném souboru, kde mám všechny sql dotazy.
Ptám se, jak tedy vypsat vše z DB pomocí Smarty?


Díky.
Lamicz
Profil
Smarty verze 2.x umi pouze {foreach}, kteremu predas asociativni pole, viz dokumentace. V PHP je to nesmysl vypisovat, naplnis hned po query to pole a predas promenne do Smarty, kde si priradis promennou a vypises patricne sloupce jako v PHP. Cyklus jde take pojmenovat a pak pristupovat k pocitadlu {$smarty.foreach.nazev_cyklu.iteration} a {$smarty.foreach.nazev_cyklu.index}. Iteration je od 1 a index od 0.
{foreach from=$pole item=polozka name=cyklus}

  Index: {$smarty.foreach.cyklus.index}
  Iterace: {$smarty.foreach.cyklus.iteration}
  
  {$polozka.id}
  {$polozka.jmeno}
{/foreach}


$query = mysql_query('SELECT `id`,`jmeno` FROM `uzivatele`');
$arr = array();
$i = 0;
while($row = mysql_fetch_assoc($query)){
	foreach($row as $key => $val){
			$arr[$i][$key] = $val;
	}
	$i++;
}

$smarty = new Smarty;
$smarty->assign('pole', $arr);
...

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: