Autor Zpráva
Ajtak
Profil
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>
Už se tady s tím dělám 5 hodin a nějak se mi to stále nedaří. Mnohokrát díky o přepis
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}
Vzhledem k tomu, že implode akceptuje parametry i v opačném pořadí, by šlo použít i tohle: <p>Výsledek : {$vysledek|implode:', '}</p> bez vytváření/registrace Smarty modifikátoru.

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: