条件表单字段检查


Conditional form field checks

我有以下内容来检查表单字段是否已填充。如果设置了$priceperpererson字段,则基于该字段计算$rentalprice;如果未设置,则基于$baserentalprise计算$rental价格。

$priceperperson = ($_POST['priceperperson']);
$baserentalprice = ($_POST['rentalprice']);
$numberofguests = ($_POST['numberofguests']);
 if (isset($priceperperson)) {
  $rentalprice = ($priceperperson * $numberofguests * $numberofnights);
 } elseif (!isset($priceperperson)) {
  $rentalprice = $baserentalprice;
 }

更新:我的问题是,我似乎无法将租金设置为$baserentalprice。$pricepererson计算是有效的,但当我从表单中删除$priceperson字段的内容并再次启动ajax时,它就不起作用了。无论哪种方式,它都会在"其他"之后失败。

更改块

if (isset($priceperperson)) {
  $rentalprice = ($priceperperson * $numberofguests * $numberofnights);
 } elseif (!isset($priceperperson)) {
  $rentalprice = $baserentalprice;
 }

if (isset($priceperperson) && $priceperperson != '') {
  $rentalprice = ($priceperperson * $numberofguests * $numberofnights);
 } else {
  $rentalprice = $baserentalprice;
 }
如果变量已设置但为空(例如''),则

isset()将返回true。您可以改用empty()

if (!empty($priceperperson)) { /* ... */ }

不过要小心。如果您期望例如0,则empty将返回可能不需要的true

不过,通常建议先进行issetempty检查。这将防止生成警告。

使用三元运算符可以很容易地做到这一点。

$priceperperson = isset($_POST['priceperperson']) ? $_POST['priceperperson'] : '';
$baserentalprice = isset($_POST['rentalprice']) ? $_POST['rentalprice'] : '';
$numberofguests = isset($_POST['numberofguests']) ? $_POST['numberofguests'] : '';
if ($priceperperson) {
    $rentalprice = ($priceperperson * $numberofguests * $numberofnights);
} else {
    $rentalprice = $baserentalprice;
}

您不再需要if中的isset(或empty),因为您已经检查过了。如果您想允许例如0作为有效值,您可以将条件更改为$priceperperson != ''

我还将您的elseif更改为常规else,因为条件只是反转的。