条件表单字段检查

时间:2015-04-08 13:40:22

标签: php

我有以下内容来检查天气是否已填充表格字段。如果设置了$ priceperperson字段,则根据该字段计算$ rentalprice,如果不是,则根据$ baserentalprice计算$ rental price。

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

更新: 我的问题是,我似乎无法将租赁价格设置为$ baserentalprice。 $ priceperperson计算有效但当我从表单中删除$ priceperperson字段的内容并再次激活ajax时,它将无法正常工作。无论哪种方式,它都会在“其他”之后失败。

2 个答案:

答案 0 :(得分:1)

更改块

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

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

答案 1 :(得分:1)

如果变量已设置但空(例如true),

isset()将返回''。您可以改为使用empty()

if (!empty($priceperperson)) { /* ... */ }
但是,要小心。如果您期待例如。 0然后empty将返回true,这可能是不可取的。

通常,建议先进行issetempty检查。这样可以防止生成警告。

您可以使用ternary operator轻松完成此操作。

$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;
}

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

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