Autor Zpráva
MaxDJs
Profil *
Bylo by možno ještě poradit, jak do skriptu správně zakomponovat regulární výraz pro libovolné číslo ereg("\d",$a) && ereg("\d",$b)? Chci zabezpečit aby šlo počítat, pouze když zadá uživatel číslo do obou polí. Zkoušel jsem to udělat ale teď mi to nepočítá ani když tam mám čísla. Viz.: http://moodle-test.g6.cz/kalkulacka.php

Zde je skript:


<?php
function mod($a, $b)
{
  return ($a%$b + $b)%$b;
}

$a = $_POST['cislo_a'];
$b = $_POST['cislo_b'];
$operace = $_POST['operace'];
    if ($a == 0 && $b == 0):
    echo "Zadejte vstupní čísla pro početní operace";
    endif;
if(ereg("\d",$a) && ereg("\d",$b)):
switch($operace):
case "soucet": 
$vysledek = $a + $b;
echo "$a + $b = $vysledek";
break;
case "rozdil":
$vysledek = $a - $b;
echo "$a - $b = $vysledek";
break;
case "soucin":
$vysledek = $a * $b;
echo "$a * $b = $vysledek";
break;
case "podil":
if ($b != 0):
$vysledek = $a / $b;
echo "$a / $b = $vysledek";
else:
echo "Nelze dělit nulou. Zadejte číslo různé od nuly";
endif;
break;
case "modulo":
if ($b != 0):
$vysledek = mod($a, $b);
echo "$a % $b = $vysledek";
else:
echo "Nelze zjistit zbytek po celočíselném dělení s dělitelem, který  je roven nule. Zadejte číslo různé od nuly";
endif;
break;
endswitch;
else:
echo "Zadal jste jiný znak než číslo. Zadejte číslo.";
endif;

?>
AM_
Profil
- funkce ereg() je zastaralá, používej preg_match
- nauč se odsazovat kód, v tomhle štrůdlu se nedá vyznat
- ten regulár je špatně, tenhle matchne jakýkoli string obsahující alespoň jednu číslici. Navíc je špatně oescapovaný, nejsem si jistý, zda v uvozovkách "" nemá \d speciální význam, raději používej apostrofy. Správně by to mělo být nějak takhle:
preg_match('~^\\d+$~', $cislo)


proč to nepočítá netuším.

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:

0