2011-04-13 166 views
1

這是更多的PHP設計問題。基本上,我將有一個下拉菜單和一個提交按鈕的表單。我將有無限的下拉選項;顯然,不是一個無限的,但基本上會有一個下拉菜單ALOT的選項。這些「選項」是我想要運行的個別報告。PHP:多個下拉選項綁定到多個功能

因此,用戶從下拉菜單中選擇,例如「我沒有批准的文章」,我想綁定到我的functions.php文件中的一個函數,該文件爲此運行SQL,並在表。

我的問題是,我如何做到這一點,而沒有在我的主要文檔中有一個巨大的if/else語句,基本上說「如果提交按鈕等於」未經批准的文章「,請執行此操作」等等等等每個下拉選項。我需要一些動態的,沒有一堆if/else語句。

我是否在推翻這個?

回答

1

除非您想將所有應用程序包裝到可能更有利於此類事物的框架中,否則您可能會發現動態調用該函數更容易。

假設您有函數articlesWithoutApproval()articlesWithApproval()。然後,你可以做這樣的事情:

<form action="handler.php" method="post"> 
    <select name="reportName"> 
     ... 
     <option value="articlesWithoutApproval">Articles without approval</option> 
     <option value="articlesWithApproval">Articles with approval</option> 
     ... 
    </select> 
</form> 

然後,在handler.php,做到:

<?php 
function articlesWithoutApproval(){ ... } 
function articlesWithApproval(){ ... } 

// clean variables, etc 

if(isset($_POST['submit']) && $_POST['submit'])) { 

    $func_name = $_POST['reportName']; // equal to "articlesWithoutApproval" 
    echo $func_name(); // call the function dynamically 
    // above evaluates to `echo articlesWithoutApproval();` etc 
} 
?> 
+1

我要給這個旋轉,看起來很直截了當,很容易理解。 – drewrockshard 2011-04-13 04:26:30

+0

它是如何爲你工作的? – Ryan 2011-04-13 05:05:29

+0

瑞恩,這工作很好!我熟悉這個幫助 – drewrockshard 2011-04-14 00:28:27

2

有選項功能,如映射...

$reportsToFunctions = array(
    'without_approval' => 'withoutApproval', 
    ... 
); 

,你可以再看看和運行功能。

+0

你能重申呢?我從來沒有這樣做過,所以如果你有一些洞察力,甚至有資料記錄這一點,我會非常感激。 – drewrockshard 2011-04-13 04:10:25

+0

它會像'$ reportsToFunctions ['without_approval'];',這將通過調用'if(isset($ _POST ['submit'])&& $ _POST ['submit'])){',like瑞安發佈了什麼?你只是將它們存儲在一個數組中,對嗎? – drewrockshard 2011-04-13 04:18:29

+0

@drewrockshard [瑞安已覆蓋得很好](http://stackoverflow.com/questions/5644222/php-multiple-drop-down-options-tied-to-multiple-functions/5644258#5644258):) – alex 2011-04-13 04:21:11