根据选择框结果执行功能


Execute function based upon select box result

我有一个普通的选择框,如下所示,在一个单独的类中,我有许多php函数。我希望能够根据选择框执行功能。

<form action="functions.php" method"post">
<select name="sales">
  <option value="week">Last 7 days</option>
  <option value="month">Last 30 Days</option>
  <option value="year">Last 365 Days</option>
  <option value="all">Complete report</option>
</select>
<input type="submit" value="Submit" />
</form>

然后例如在我的函数类中,我有函数function week(), function month(), function year().我希望当例如选择周并单击提交时,将执行周功能,有没有简单的方法可以做到这一点?最好在同一页面上,但在单独的页面上就可以了。

一个简单的if/else语句有什么问题?

if ( $_POST['select'] == 'year' ){ year(); }
else if ( $_POST['select'] == 'month' ){ month(); }
...

在最简单的形式上:

$function = $_POST['select_name'];
$function();

或者(更好的是),

call_user_func($_POST['select_name']);
<小时 />

笔记:

  • 您没有将名称添加到您的选择中,这是它传递给 PHP 的强制性要求。
  • 您可能应该验证用户输入,以确保他们没有输入邪恶的内容。

名称添加到所选<select name="myvariable" method="POST">

然后,您可以使用该名称来调用函数,例如:

echo $_POST['myvariable']();

或使用 call_user_func() 函数,如下所示:

echo call_user_func($_POST['myvariable']);

(在此处阅读有关call_user_func的更多信息 - http://lt.php.net/manual/en/function.call-user-func.php)