0

我有一个函数,它接受一个我想要分解并传递到 where 条件的数组。我的功能

<?php
function somearray($value = array())
{
    $conditions = "";
    foreach($value as $key => $condition)
    {
        $conditions .= "$key=$condition && ";
    }
    $conditions = substr($conditions, 0, -4);
    $qry = mysql_query("SELECT * FROM maincase WHERE $conditions");
    while($arr = mysql_fetch_array($qry))
    {
        echo 'Ticket Number= '.$arr['ticket_number'].'<br />';
    }
}

?>

我想通过表单发送值,但只有选中的复选框

<?php 
        if(isset($_GET['filter']))
        {
            $list = array(
                "region" => $_GET['region'],
                "status" => $_GET['status']
            );
            somearray($list);
        }
    ?>

    <form action="" class="form-inline" method="get">
        <label for="">Region</label>
        <input type="checkbox" name="region" <?php if(isset($_GET['region'])) { echo 'checked' ;} ?> value="1">

        <label for="">Status</label>
        <input type="checkbox" name="status" <?php if(isset($_GET['status'])) { echo 'checked' ;} ?> value="3">

        <input type="submit" value="filter" name="filter">
    </form>

此代码有效。但我必须过滤 7 到 8 个字段。我只想在选中复选框时发送值。

4

2 回答 2

0

在你的函数中传递一个值应该是这样的:

function somearray($value)
{
    $conditions = "";
    foreach($value as $key => $condition)
    {
        $conditions .= "$key=$condition && ";
    }
    $conditions = substr($conditions, 0, -4);
    $qry = mysql_query("SELECT * FROM maincase WHERE $conditions");
    while($arr = mysql_fetch_array($qry))
    {
        echo 'Ticket Number= '.$arr['ticket_number'].'<br />';
    }
}
?>

在您的情况下,参数被初始化为默认或空数组,当您传递带有值的数组时。

见参考:

于 2013-07-30T09:35:41.603 回答
0

默认情况下不应发送未选中的复选框。


<form action="?" method="post">
    <input type="checkbox" name="first" />
    <input type="checkbox" name="second" />
    <input type="submit" name="OK" />
</form>
<?php
    var_dump($_POST);

样本输出:

array(2) { 'first' => string(2) "on" 'OK' => string(6) "Submit" }

此代码显示,仅发送选定复选框的数据。

于 2013-07-30T09:49:04.630 回答