Autor Zpráva
Xantippa
Profil
Zdravím, chtěla bych vás poprosit o radu.
Zadání příkladu bylo: "Jednookýnkový" formulář, číslo v něm zadané udává, kolik náhodných čísel od 1 do 100 se vypíše (např. při zadání 5 by se měla objevit např. čísla 15, 29, 9, 97, 56). Měli jsme zjistit to největší číslo (to mám), a pak součet těch čísel a to už jsem nezvládla. Dovedl by mi někdo, prosím, poradit? (Čím jednodušší, tím lepší, přeci jen teprve začínám :))
Děkuji mnohokrát.

Přikládám zdrojový kód:
<fieldset><legend>Čísla</legend>
            <form method="post">
             <input placeholder="Zadej číslo" name="cislo" type="text" size="10" />
             <input class="tlacitko" value="OK" type="submit" />
            </form>
<?php
$a = $_POST["cislo"];
$max = 1;
if($a)
{for($i=1;$i<=$a;$i++)
{$b = rand(1,100);
echo "$b ";
if($b > $max) $max = $b;}
echo "<br/>Největší číslo je $max."}

?>
Taps
Profil
Xantippa:
<?
<?php
$a = $_POST["cislo"];
if($a)
{for($i=1;$i<=$a;$i++)
{
$cisla[]  = rand(1,100);

}
echo "<br/>Největší číslo je ".max($cisla)." Součet činí ".array_sum($cisla);
}
 
?>
xROAL
Profil
Taps:
Máš tam trošku chybičku v tom echu. Skôr takto:
echo "<br/>Největší číslo je ".$max.". Součet činí ".$cislaSoucet;

Inak je to funkčné riešenie.
Xantippa
Profil
Taps:
Děkuji mnohokrát, jen se chci ještě zeptat... Jak vypsat ta použitá čísla?
Taps
Profil
Xantippa:
<?

$a = $_POST["cislo"];
if($a)
{for($i=1;$i<=$a;$i++)
{
$cisla[]  = rand(1,100);
 
}
echo implode (", ",$cisla) //vypíše vygenerovaná čísla
echo "<br/>Největší číslo je ".max($cisla)." Součet činí ".array_sum($cisla);
}
 
?>
CZghost
Profil
Xantippa:
Jenom malinké upřesnění formuláře - Pokud chceš pouze čísla, zadávej typ políčka pro čísla:
<fieldset><legend>Čísel</legend>
            <form method="post">
             <input placeholder="Zadej číslo" name="cislo" type="number" size="10" />
             <input class="tlacitko" value="OK" type="submit" />
            </form>
</fieldset>
Jinak nezapomínej uzavírat tagy, tag <fieldset> je párový, pozor na to ;-)
Xantippa
Profil
CZghost:
Uzavřený ho mám, jen chybička při kopírování, ale děkuji :)

Taps:
Děkuji mnohokrát! :)
Taps
Profil
CZghost:
V případě, že se bude formulář optimalizovat pro HTML5 tak je vhodné doplnit min a max a tak omezit rozptyl hodnot, které mohou být zadávány.
juriad
Profil
Xantippa:
Atribut placeholder nefunguje ve starších prohlížečích. Navíc jeho obsahem nemá být popis pole, ale ukázka toho, co do něj vyplnit.
Popis pole se dává do elementu label.

Tvůj původní kód je chybně vzhledem k definici $a:
if (isset($_POST["cislo"]) {
  $pocet = intval($_POST["cislo"];
  $max = 1;
  for ($i = 1; $i <= $pocet; $i++) {
    $cislo = rand(1,100);
    echo "$b ";
    if ($b > $max) {
      $max = $b;
    }
  }
  echo "<br>Největší číslo je $max.";
}

Odsazuj rozumně kód, piš mezery kolem operátorů. Pak je kód přehlednější a čitelnější.

CZghost:
Ano, je vhodnější typ number. Projde to i ve starších prohlížečích, které tento typ neznají. Pak se to zobrazí, jakoby to byl typ text.
pcmanik
Profil
xROAL:
Akú chybu tam má? Ja nič nevidím, ty si odtiaľ odmazal obidve potrebné funkcie a naviac si pridal dve nedefinované premenné.
juriad
Profil
pcmanik:
Chyba am byla; chyběla uvozovka nebo byla tečka na špatném místě, už si nepamatuji.
Všimni si, že Taps příspěvek upravil. Nejsem si vlastně ani jistý, zda v původní verzi byly použité funkce max a array_sum.
Je tedy možné, že xROALův příspěvek dával smysl.
jenikkozak
Profil
pcmanik:
xROAL reagoval na tuto chybnou verzi skriptu:
<?
<?php
$a = $_POST["cislo"];
$max = 1;
if($a)
{for($i=1;$i<=$a;$i++)
{$b = rand(1,100);
$cislaSoucet+=$b;

if($b > $max) $max = $b;
}
echo "<br/>Největší číslo je $max." Součet činí ".$cislaSoucet;}
 
?>
CZghost
Profil
Taps:
V případě, že se bude formulář optimalizovat pro HTML5 tak je vhodné doplnit min a max
Tak to samozřejmě, ale nevím jaký rozptyl bude chtít, tak jsem ho nezadával :-)

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: