2010-11-03 75 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