| Autor | Zpráva | ||
|---|---|---|---|
| Ajtak Profil |
#1 · Zasláno: 15. 1. 2013, 22:16:10
Zdravím, Mám tento jednoduchý kód a potřeboval bych pomoct s převodem do smarty. Jak bude vypadat šablona? Jak bude vypadat soubor?
<?php
if($_POST){
$maxCislo = $_POST["maxCislo"];
if($maxCislo >= 2;) {
echo "2; "
}
for($i = 3; $i < $maxCislo; $i = $i + 2){
$l = 0;
for($j = 2; $i > $j; $j++) {
if($i % $j == 0){
$l++;
}
}
if($l == 0){
echo "$i; ";
}
}
}
?>
<html>
<form method="post" action="#">
<input type="text" name="maxCislo">
<input type="submit" value="Odeslat">
</form>
</html> |
||
| blaaablaaa Profil |
// napsal jsem blbost ;) Tori spravne
|
||
| Tori Profil |
Ajtak:
Asi bych tu část na výpočet prvočísel zabalila do funkce, která by vracela pole. To si pak v šabloně zobrazíte jak chcete. function prvocisla($num) {
$vysledek = array();
if ($num < 2) return $vysledek;
elseif ($num == 2) return array(2);
else $vysledek[] = 2;
for ($i = 3; $i < $num; $i += 2) {
$l = 0;
for ($j = 2; $i > $j; $j++) {
if ($i % $j == 0)
$l++;
}
if ($l == 0)
$vysledek[] = $i;
}
return $vysledek;
}
if (!empty($_POST['maxCislo'])) {
$cislo = (int) $_POST['maxCislo'];
if ($cislo < 2)
$smarty->assign('chyba', 'Číslo nesmí být menší než 2.');
else $smarty->assign('vysledek', prvocisla($cislo));
}
$smarty->display('nazev-sablony.tpl');{* Smarty sablona *}
<html>
{if !empty($chyba)}<p class='alert'>{$chyba}</p>{/if}
{if !empty($vysledek)}
<p>Výsledek: {foreach $vysledek as $cislo}{$cislo}{if !$cislo@last}, {/if}{/foreach}</p>
{/if}
<form method="post" action="#">
<input type="text" name="maxCislo">
<input type="submit" value="Odeslat">
</form>
</html>Trochu čitelněji by ta šablona vypadala, když si uděláte vlastní modifikátor (obdoba implode): function smarty_join($pole, $sep = '') {
return implode($sep, $pole);
}
$smarty->registerPlugin('modifier', 'join', 'smarty_join');{* změněná část šablony *}
{if !empty($vysledek)}
<p>Výsledek : {$vysledek|join:', '}</p>
{/if}<p>Výsledek : {$vysledek|implode:', '}</p> bez vytváření/registrace Smarty modifikátoru.
|
||
|
Časová prodleva: 13 let
|
|||
0