Autor Zpráva
Coiltare
Profil *
Ahoj,
V PHP jsem sotva začátečník, do té doby jsem se učil JavaScript, kde jsem se inspiroval scriptem, který jsem kdysi naprogramoval. Ted bych ho chtěl udělat v PHP. Níže je uvedený kod, jak bych si to asi představoval.
Jedná se o vygenerování čísla, o počtu znaků rozhodne uživatel (zadá číslo do inputu (name="cisla") )
HTML
<form method="post">
<input type="text" name="cisla"> <br> // tady uživatel zadá počet znaků k vygenerování čísla
<input type="submit" name="odesli" value=" vygeneruj ">
</form>

<?php

  if ( isset($_POST["odesli"]) and is_numeric(trim($_POST['cisla']) ) ){
    function generate($_POST["cisla"]){
    
        $znaky = array(0,1,2,3,4,5,6,7,8,9);
        $vygenerovaneZnaky = "";
        
        for ($i=0; $i<=$_POST["cisla"]; $i++){
        
        
        $num = rand(0,9);
        $vygenerovaneZnaky +=$znaky[$num];
        
        echo $vygenerovaneZnaky;
        }
    
    
    }
}

else {
?>
<script> alert('neplatný řetězec'); </script>
<?php
}
?>
Vím, že ten kod je možná blbost, ale opravdu si nevím, rady. díky
mimochodec
Profil
Coiltare:
$vygenerovaneZnaky .= $znaky[$num];
Coiltare
Profil *
Aha, zlozvyk z JavaScriptu, ale ipřesto to nepomohlo.
Someone
Profil
$num = rand(0,9); ti vygeneruje číslo od 0 do 9, v poli $znaky není žádná položky s indexem 9... Toto by ti mohlo pomoci...

Tu funkci si dej někam mimo a potom při odeslání formuláře zadej hodnotu jako parametr funkce...:
// tady bude funkce
if (isset($_POST['odesli'])) {
    generovat(intval($_POST['cisla']));
}
Pokud má řetězec obsahovat jen nějaké číslo, tak nemusíš používat pole s čísli:
function cislo($pocet) {
   $vysledek = '';
   for ($a=0;$a<$pocet;$a++) {
      $cislo = rand(0,9);
      $vysledek .= $cislo;
   }
   return $vysledek;
}
if (isset($_POST['odesli']) and is_numeric(trim($_POST['cisla']))) {
    echo "Vaše vygenerované heslo je: ".cislo($_POST['cisla']);
}
mimochodec
Profil
Ještě jedna drobnost. Jestli jde opravdu o vygenerování n-místného náhodného čísla, zkusil bych použít
$vygenerovaneZnaky = ( pow(10, $n-1)-1 , pow(10, $n)-1);

(opravena syntaxe, omlouvám se, matematické operátory někdy nejsou, čím se zdají být)
Coiltare
Profil *
Smím se zeptat, proč tu funkci nesmím mít vně podmínky?
panther
Profil
Coiltare:
protože vně podmínky (otestování odeslání formuláře) nemusí tebou používané $_POST['cisla'] existovat (a PHP ti bude vracet varování o použití neexistujícího klíče).

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: