0

以下に示すように、通常の選択ボックスがあります。別のクラスには、いくつかの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>

たとえば、私の関数クラスには functions がありますfunction week(), function month(), function year()。たとえば、週を選択して送信をクリックすると、週関数が実行されるようにしたいのですが、これを行う簡単な方法はありますか? できれば同じページですが、別のページでも問題ありません。

4

3 に答える 3

2

単純な if/else ステートメントの何が問題になっていますか?

if ( $_POST['select'] == 'year' ){ year(); }
else if ( $_POST['select'] == 'month' ){ month(); }
...
于 2012-04-25T12:14:01.923 に答える
1

選択に名前を追加<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 )

于 2012-04-25T12:11:49.880 に答える
1

最も単純な形式:

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

または(さらに良いことに)、

call_user_func($_POST['select_name']);

ノート:

  • 選択に名前を追加していません。これは、PHP に渡すために必須です。
  • ユーザー入力を検証して、ユーザーが悪意のあるものを入力していないことを確認する必要があります。
于 2012-04-25T12:12:06.010 に答える