从所选复选框的数据库中选择全部

时间:2013-03-05 16:38:38

标签: php javascript mysql

下面给出的代码显示主页中的所有产品..每个产品都有一个复选框..我想选择几个产品的复选框,如果我点击提交,下一页不会查看选中的复选框结果

$sql = mysql_query("SELECT * FROM products ORDER BY date_added DESC LIMIT 15");
$productCount = mysql_num_rows($sql); // count the output amount
if ($productCount > 0) {
    $colindex = 1;
    $totcols = 3;
    $rowclosed = false;
    //$totrows=ceil($count/$totcols);
    $dynamicList .= "<dl id='Searchresult'> <form action='selected.php' method='POST'> <table width=\"50%\" border=\"0\" cellspacing=\"0\" align=\"center\" cellpadding=\"3\">";
    while ($row = mysql_fetch_array($sql)) {

        $id = $row["id"];
        $product_name = $row["product_name"];
        $price = $row["price"];
        $date_added = strftime("%b %d, %Y", strtotime($row["date_added"]));
        if ($colindex == 1) {
            $dynamicList .= "<tr>";
            $rowclosed = false;
        }

        $dynamicList .= '<td width="142" valign="top" align="center">
                    <div id="products">
                        <div class="product">
                            <a href="product.php?id=' . $id . '"> <img style=" 1px solid;" src="inventory_images/' . $id . '.jpg" alt="' . $product_name . '" width="100" height="100" border="0" /></a><div class="pr-info"><h4>' . $product_name . '</h4> 
                            <input type="checkbox" name="check[]" value="<?php .$id. ?>"/>
                        </div>
                    </div></td>';
    }
}

下面的代码是我用来从所选复选框的数据库中检索数据的地方

foreach ($_POST['check'] as $k => $check) {
    $where[ ] = $k . " = '" . mysql_real_escape_string($check) . "'";
}
include "storescripts/connect_to_mysql.php";
$sql = mysql_query("Select * from products where " . implode(' AND ', $where)); // Connect to the MySQL database
$productCount = mysql_num_rows($sql); // count the output amount
if ($productCount > 0) {

    while ($row = mysql_fetch_array($sql)) {

        $id = $row["id"];
        $product_name = $row["product_name"];
        $price = $row["price"];
        $details = $row["details"];
        $date_added = strftime("%b %d, %Y", strtotime($row["date_added"]));
        $dynamicList .= '<td width="142" valign="top" align="center">
                            <div id="products">
                                <div class="product">
                                    <a href="printer.php?id=' . $id . '"> 
                                        <img style=" 1px solid;" src="inventory_images/' . $id . '.jpg" alt="' . $product_name . '" width="200" height="200" border="0" />
                                    </a>
                                <div class="pr-info"><h4>' . $product_name . '</h4><p>' . $details . ' </p>

                                    <span class="pr-price"><span>Rs.</span><sup>' . $price . '</sup></span>
                                </div>
                                </div></td>';
    }
} else {
    echo "That item does not exist.";
    exit( );
}

2 个答案:

答案 0 :(得分:0)

尝试将第二个代码的开头更改为:

include "storescripts/connect_to_mysql.php";
$sql = mysql_query('SELECT * FROM products WHERE id IN ('.implode(', ', array_values($_POST['check'])).')');  
// rest of your code, beginning at $productCount = ...

但是,之前的说法如何,你应该开始使用PDO

答案 1 :(得分:0)

我认为您的最终查询和代码应该是这样的...请用此更改您的代码...并发布结果:

foreach($_POST['check'] as $k){
$where[]= $k;}  
var_dump($where); //it show you something, show me the var_dump result ???
include "storescripts/connect_to_mysql.php";
$query = "Select * from products where id IN(".implode(",",$where).")"; 
echo $query; //this line too....show me the result   
$sql = mysql_query($query);     
// Connect to the MySQL database
$productCount = mysql_num_rows($sql);
//the rest of your code ;)

----------------------- EDITED ----------------------- ---------

你的问题在这一行:

<input type="checkbox" name="check[]" value="<?php .$id. ?>"/>

该行是错误的,进行此更改并查看其工作原理:

<input type="checkbox" name="check[]" value="<?php echo $id;?>"/>

Saludos;)