2010-11-03 62 views
0

我有一個包含7個下拉框的表單的php頁面。 問題是可能取消選擇0到6個框。如何縮短php代碼,以多種形式結果的組合

對於每個組合,製作switchcase將是很多工作。

我還可以使用其他方法嗎?

感謝, 塞巴斯蒂安

編輯

對於每一個組合我不得不做出這樣的只包含從下拉列表框中選擇的項目不同的查詢。

Ex。如果用戶從7中選擇3,則查詢必須通過3個條件。

EDIT2 我不知道收件箱的值是多少。因爲它們是建立在while聲明

SOLUTION

使用MySQL查詢我發現,應該工作的解決方案。我還沒有測試過。 首先,我想檢查在收件箱中是否選擇了什麼。 `如果($ _ POST [電話] = 「空的」){$ TEL = 「」}

否則{$ TEL =「WHERE電話=」「}`

在此之後我可以連接的$tel串與$_POST['telefon']字符串。 $query_tel=$tel.$_POST['telefon']." ' ";

最終查詢字符串應該是這樣的$query="SELECT * table ".$query_telefon." ,".$query_ziua....(and so on)

當然,我必須非常小心,這將導致,缺少逗號,引號等查詢。但我想這是最簡單的方法。

+1

這實際上取決於你打算如何處理數據。也許增加更多細節 – 2010-11-03 14:33:30

+0

'if/else'? .... – 2010-11-03 14:33:57

+1

這是一個非常不確定的問題。請發佈一些你想要說明的代碼示例 – ssice 2010-11-03 14:35:53

回答

0

已更新

ASSUMPTI ON:這裏的要點就是要減少與查詢次數相關的代碼!

的前提:使用switchand/if是無論如何都有效的方法!

  • 減少你的代碼到一個行所有的查詢,您的SQL列名並選擇HTML元素應該被稱爲相同,如:
t_apple VARCHAR(255) NOT NULL, 
t_peach VARCHAR(255) NOT NULL, 
t_strawberry VARCHAR(255) NOT NULL, 
... 

<select name="t_apple"></select> 
<select name="t_peach"></select> 
<select name="t_strawberry"></select> 
... 

試試這個:

if (isset($_POST['submit'])) { 
    $form_button = array_pop($_POST); //remove the submit button val 
    $new_array = array_filter($_POST , 'strlen'); //remove empty value from $_POST 
    foreach($new_array as $key => $val) { 

    //optionaly make some other check here if ($val != '---') 

    // "INSERT INTO {$key} VALUES ({$val})" 

    } 
} 
0

你可以決定的預設值,然後覆蓋它們:

$array(
    'dropdown1' => 'value1', 
    'dropdown2' => 'value2', 
    'dropdown3' => 'value3', 
    'dropdown4' => 'value4', 
    'dropdown5' => 'value5', 
    'dropdown6' => 'value6' 
) 

$array = $_POST; 

這樣你就可以設置默認值,只是簡單地覆蓋與後陣列的方向從形式發送。

編輯: 如果你這樣設置空值「空」:

<select name="dropdown[dropdownnamehere]"> 
    <option value='empty'>---</option> 
</select> 

您將能夠循環槽的值,僅選擇一組的人

foreach($_POST['dropdown'] as $item => $value) 
{ 
    if($value != 'empty') 
    { 
     //create a mysql part here 
    } 
} 
+0

感謝您的回覆。但是我不能這樣做,因爲我不知道這些值是什麼,因爲這些值是用'while'語句寫成的。像這樣:'\t \t \t \t <選項值= '---'> ---「; \t \t \t而($ trunchiRow = mysql_fetch_array($ trunchiResult)){ \t \t \t $ trunchi1 = $ trunchiRow [ 'LINIE']; \t \t \t回聲 「<選項值= '$ trunchi1'> $ trunchi1」; \t \t \t \t} \t \t \t \t \t回聲「」; ' – sebastian 2010-11-03 14:42:45

+0

我不知道這是否會有所幫助。因爲我的7個收件箱中的任何一個都可以是空的。也可以有0到6個空的。 – sebastian 2010-11-03 15:25:32

+0

此循環僅循環輸入框,因此無論哪個框爲空。你現在唯一需要做的就是從循環中生成一個查詢。 – RJD22 2010-11-04 11:13:05