根据Checkbox Array中的值运行SELECT语句

时间:2016-09-08 15:21:48

标签: php checkbox

我正在尝试根据用户在上一页选择的复选框运行SELECT语句。每个复选框都将产品的ID作为值。

print '<td><input type="checkbox" name="checkbox[]" value="'. $row["id_product"] .'"></td>';

如果选中复选框1,2,3,4和5,我希望SELECT语句选择ID为1 - 5的产品。这是我到目前为止所拥有的:

try {
    $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $stmt = $conn->prepare("SELECT reference, price, unit_price_impact FROM ps_product_attribute WHERE id_product = ". implode(',', $_POST['checkbox']) ."");
    echo $stmt;
    $stmt->execute();
    $product = $stmt->fetchAll();

    echo '<div class="table-responsive">';
        echo '<table class="table table-striped">';
                foreach ($product as $row) {
                    print '<tr>';
                        print '<td>'. $row['reference'] .'</td>';
                        print '<td></td>';
                        print '<td>'. $row['price'] .'</td>';
                        print '<td></td>';
                    print '</tr>';
                }
        echo '</table>';
    echo '</div>';
}

为什么$ _POST ['复选框']值为空?

1 个答案:

答案 0 :(得分:0)

如果您使用Ajax读取复选框,那么在jquery中您必须首先拆分/创建一个Array /对象然后发送到php else如果您使用表单提交那么它不是问题。请尝试使用 isset()/ empty()代码调试代码,如下所示

<form action="#" method="post">
<input type="checkbox" name="checklist[]" value="a"><label>a</label><br/>
<input type="checkbox" name="checklist[]" value="b"><label>b</label><br/>
<input type="checkbox" name="checklist[]" value="c"><label>c</label><br/>
<input type="submit" name="submit" value="Submit"/>
</form>
<?php
if(isset($_POST['submit'])){//to run PHP script on submit
if(!empty($_POST['checklist'])){
// Loop to store and display values of individual checked checkbox.
foreach($_POST['checklist'] as $selected){
echo $selected."</br>";
}
}
}
?>

请尝试使用此示例进行调试,谢谢