Надеюсь, вы могли бы помочь мне с моей проблемой. Мой скрипт для проверки формы (проверяет, не является ли текстовое поле пустым, а если это число, обратите внимание: в моем регионе мы используем десятичное число, запятая не указана, PHP работает только с десятичной точкой) не работают должным образом. HTML:инструкция if-else не запускается
...
<form action="http://localhost/kalkulacka.php" method="post" name="formular">
<table>
<tr>
<td>1 dávka(g):</td>
<td><input type="text" name="davka" maxlength="7" size="7"></td>
</tr>
<tr>
<td>Bielkoviny v 1 dávke(g):</td>
<td><input type="text" name="bielkoviny" maxlength="7" size="7"></td>
</tr>
<tr>
<td>Sacharidy v 1 dávke(g):</td>
<td><input type="text" name="sacharidy" maxlength="7" size="7"></td>
</tr>
<tr>
<td>Balenie(g):</td>
<td><input type="text" name="balenie" maxlength="7" size="7"></td>
<tr>
<td>Cena za balenie(€):</td>
<td><input type="text" name="cena" maxlength="7" size="7"></td>
</tr>
<tr>
<td><input type="submit" value="Vypočítaj"></td>
</tr>
</table>
</form>
PHP:
<?php
$davka=$_POST['davka'];
$bielkoviny=$_POST['bielkoviny'];
$sacharidy=$_POST['sacharidy'];
$balenie=$_POST['balenie'];
$cena=$_POST['cena'];
$is_valid=true;
function vypocitaj($serving, $proteins, $pack, $price)
{
$proteins_percentage=($proteins/$serving)*100;
$price_per_gram=$price/($pack/100*$proteins_percentage);
printf("1 gram bielkoviny stoji: %.3f", $price_per_gram);
}
if (empty($davka)||empty($bielkoviny)||empty($sacharidy)||empty($balenie)||empty($cena))
{
echo "Some boxes are empty!";
$is_valid=false;
}
else /*when I remove this whole "else" block, script at least verifies if are boxes empty by if statement above, but when I add this block, it not even verifies if are boxes empty*/
{
if (!is_numeric($davka))
{
$davka=str_replace(",", ".", $davka);
if (!is_numeric($davka)
{
$is_valid=false;
}
}
if ($is_valid==true && !is_numeric($bielkoviny))
{
$bielkoviny=str_replace(",", ".", $bielkoviny);
if (!is_numeric($bielkoviny)
{
$is_valid=false;
}
}
if ($is_valid==true && !is_numeric($sacharidy))
{
$sacharidy=str_replace(",", ".", $sacharidy);
if (!is_numeric($sacharidy)
{
$is_valid=false;
}
}
if ($is_valid==true && !is_numeric($balenie))
{
$balenie=str_replace(",", ".", $balenie);
if (!is_numeric($balenie)
{
$is_valid=false;
}
}
if ($is_valid==true && !is_numeric($cena))
{
$cena=str_replace(",", ".", $cena);
if (!is_numeric($cena)
{
$is_valid=false;
}
}
if ($is_valid)
{
vypocitaj($davka, $bielkoviny, $balenie, $cena);
}
else
{
echo "Only number are accepted!";
}
}
?>
Тот же сценарий, написанный в синтаксисе в JavaScript работает должным образом в JavaScript, но в PHP не будет работать. Когда я удалил основную инструкцию «else», основной оператор «if» работал, но когда я добавил его, весь код не работал. Когда я пробовал каждую функцию отдельно - они работали.
Я застрял в течение нескольких дней в этом, и я не могу двигаться. Я хотел бы знать причину, почему она не работает должным образом. Я ценю любые советы. Спасибо;) Извините за мой английский.
Вы используете, если еще более одного раза. Можете ли вы добавить комментарии к своему коду, чтобы указать, что вы имеете в виду? –
Как не работает? Являются ли переменные не ожидаемыми? Есть ли ошибки? Вы пробовали упростить свой код? Например, в блоке «main else» замените весь код простым «эхом» ELSE, достигнутым «», чтобы узнать, достигнут ли этот бит кода (т. Е. Ваш if conditional работает так, как вы ожидаете). – Etzeitet
Я предлагаю вам заменить функцию 'empty()' на 'isset()' – Martijn