【问题标题】:i want to search filter my database values using checkboxes php mysql我想使用复选框 php mysql 搜索过滤我的数据库值
【发布时间】:2018-02-01 21:46:53
【问题描述】:

通过使用此代码,我现在可以获取 pro_price 表,但我需要多列 saerch。这是我单独列的工作代码,但我需要从该表中再获取两列。我该怎么做。请帮忙

数据库名称:拍卖

表名:添加产品

列名:pro_price、pro_code、hsn_code

这是我的代码,

if(isset($_REQUEST['search'])){
$pro_price = $_REQUEST['pro_price'];
foreach ($_REQUEST['pro_price'] as $pro_price) {
    $statearray[] = mysql_real_escape_string($pro_price);
}
$states = implode ("','", $statearray);
$sql = "SELECT * FROM addproduct WHERE pro_price IN ('$states'))";
$result = mysql_query($sql) or die(mysql_error());
if (mysql_num_rows($result) == 0)
{
    echo "Sorry, but we can not find an entry to match your query...<br><br>";
}
else
{
    echo "<table border='1' width='900' class='srchrslt'>
    <tr class='head'>
    <td>pro_name</td>
    <td>pro_brand</td>
    <td>hsn_code</td>
    <td>pro_tax2</td>
    <td>pro_tax3</td>
    </tr>";
    while($row = mysql_fetch_assoc( $result ))
    {              
        echo "<tr>";

        echo "<td>" . $row['pro_name'] . " </td>";
        echo "<td>" . $row['pro_brand'] . " </td>";
        echo "<td>" . $row['hsn_code'] . " </td>";
        echo "<td>" . $row['pro_tax2'] . " </td>";
        echo "<td>" . $row['pro_tax3'] . " </td>";
        echo "</tr>";
    }
    echo "</table>";
}

}

请帮忙...谢谢

【问题讨论】:

  • 请提供有关您的问题的更多详细信息。您已经选择了表格中的所有值,因此它将提供与您的条件匹配的所有结果。您想在条件中获取另外两个参数。请解释一下。
  • @sonamgupta 我正在通过多个复选框从数据库中搜索。在这里,通过执行此代码,我仅获得复选框下的 pro_price。我还需要使用 pro_code 和 hsn_code 进行多次搜索
  • 所以您确实在该页面上发布了多个检查值,首先获取所有值,例如 pro_price,然后将其添加到 where 子句中。
  • 停止使用 PHP 已弃用且不安全的 mysql_ API

标签: php mysql search checkbox


【解决方案1】:

您执行 SELECT *,它返回表中的所有列。在您的情况下,似乎只有一列,因此您需要向表中添加其他列,或者您需要确定您是否没有被授予查看表中所有列的权限。

更新:

看来您真正想做的是添加额外的搜索条件。这意味着您的查询将变成如下所示:

SELECT * FROM addproduct WHERE pro_price IN ('$states') OR pro_code IN ('$codes')

为此,您必须使用所选价格执行已有的操作(即将它们存储在一个名为 $states 的变量中)。在上面的 SQL 行中,我假设您将代码的选定值存储在一个名为 $codes 的类似变量中。

这个添加的完整代码类似于 tis:

if(isset($_REQUEST['search'])){
$pro_price = $_REQUEST['pro_price'];
$pro_code = $_REQUEST['pro_code'];
foreach ($_REQUEST['pro_price'] as $pro_price) {
    $statearray[] = mysql_real_escape_string($pro_price);
}
foreach ($_REQUEST['pro_code'] as $pro_code) {
    $codesarray[] = mysql_real_escape_string($pro_code);
}
$states = implode ("','", $statearray);
$codes = implode ("','", $codesarray);
$sql = "SELECT * FROM addproduct WHERE pro_price IN ('$states') OR pro_code IN ('$codes')";

请注意,我不是 PHP 编码员,因此完全有可能对代码进行优化。我只是想向您展示我认为可行的方法。

【讨论】:

  • 我已经使用$sql = "SELECT * FROM addproduct WHERE pro_price IN ('$states'))"; 从表 addproduct 中获取所有值我需要知道如何从表中检索两个或更多列,就像我获取 pro_price。我需要在哪里更改我的代码???
  • 这就是我要说的;您可以使用SELECT * 获取表中的每一列。没有其他列。该表似乎包含您已经提取的列(在这种情况下,SELECT * 相当于执行SELECT pro_name, pro_brand, hsn_code, pro_tax2, pro_tax3)。如果您怀疑还有其他列,您要么已经在记录集中拥有它们,需要通过将它们添加到 HTML 表中来显示它们,要么您可能没有查看这些列的权限。
  • 我正在通过多个复选框从数据库中进行搜索。在这里,通过执行此代码,我仅获得复选框下的 pro_price。我还需要使用 pro_code 和 hsn_code 进行多次搜索
  • 您的问题并不清楚那部分。回顾一下,您实际上想在搜索条件中添加更多列?
  • 我不知道正确地重写这段代码,我目前正在处理 ftp 访问,所以我不能做任何错误。你能帮忙解决这个问题吗
【解决方案2】:

我终于找到了我的问题的解决方案。感谢支持我的@SchmitzIT。我正在为更多候选人发布代码。

index.php

<form name="search" method="post" action="searchplant">
<table width="900" border="1" class="srch">
<tr class="head"><td>Pro Price</td></tr>
<tr>
<td>
<input type="checkbox" value="250" name="pro_price[]">250<br />
<input type="checkbox" value="80" name="pro_price[]">80<br />
<input type="checkbox" value="50" name="pro_price[]">50<br />
<input type="checkbox" value="40" name="pro_price[]">40<br />
<input type="checkbox" value="299" name="pro_price[]">299<br />
<td>
</tr>
<tr class="head"><td>hsncode</td></tr>
<tr>
<td>
<input type="checkbox" value="101101" name="hsn_code[]">101101<br />
<input type="checkbox" value="101102" name="hsn_code[]">101102<br />
<input type="checkbox" value="101103" name="hsn_code[]">101103<br />
<input type="checkbox" value="101104" name="hsn_code[]">101104<br />
<input type="checkbox" value="101105" name="hsn_code[]">101105<br />
<td>
</tr>
<tr class="head"><td>procode</td></tr>
<tr>
<td>
<input type="checkbox" value="101" name="pro_code[]">101<br />
<input type="checkbox" value="102" name="pro_code[]">102<br />
<input type="checkbox" value="103" name="pro_code[]">103<br />
<input type="checkbox" value="104" name="pro_code[]">104<br />
<input type="checkbox" value="105" name="pro_code[]">105<br />
<td>
</tr>
<tr><td colspan="3" align="Right">
<input type="submit" name="search" value="Search" /></td></tr>
</table>
</form>
</div><!-- end service-->
<div id="media" class="group">

search.php

if(isset($_REQUEST['search']))
{
    $pro_price = $_REQUEST['pro_price'];
    $pro_code = $_REQUEST['pro_code'];
    $hsn_code = $_REQUEST['hsn_code'];
    foreach ($_REQUEST['pro_price'] as $pro_price) {
        $statearray[] = mysql_real_escape_string($pro_price);
    }
    foreach ($_REQUEST['pro_code'] as $pro_code) {
        $codesarray[] = mysql_real_escape_string($pro_code);
    }
    foreach ($_REQUEST['hsn_code'] as $hsn_code) {
        $hsnarray[] = mysql_real_escape_string($hsn_code);
    }
    $states = implode ("','", $statearray);
    $codes = implode ("','", $codesarray);
    $hsn = implode ("','", $hsnarray);
    $sql = "SELECT * FROM addproduct WHERE pro_price IN ('$states') OR pro_code IN ('$codes') OR hsn_code IN ('$hsn')";

    //Now we search for our search term, in the field the user specified
    $result = mysql_query($sql) or die(mysql_error());

    //This counts the number or results - and if there wasn't any it gives them a     little     message explaining that
    if (mysql_num_rows($result) == 0)
    {
        echo "Sorry, but we can not find an entry to match your query...<br><br>";
    }
    else
    {
        echo "<table border='1' width='900' class='srchrslt'>
        <tr class='head'>
        <td>pro_name</td>
        <td>pro_brand</td>
        <td>hsn_code</td>
        <td>pro_price</td>
        <td>pro_code</td>
        </tr>";

        //And we display the results
        while($row = mysql_fetch_assoc( $result ))
        {              
            echo "<tr>";

            echo "<td>" . $row['pro_name'] . " </td>";
            echo "<td>" . $row['pro_brand'] . " </td>";
            echo "<td>" . $row['hsn_code'] . " </td>";
            echo "<td>" . $row['pro_price'] . " </td>";
            echo "<td>" . $row['pro_code'] . " </td>";
            echo "</tr>";
        }
        echo "</table>";
    }
}

只需根据你的数据更改数据库名、表名、列名和值即可。

希望你觉得这很有用

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-27
    • 2016-07-01
    • 2017-05-15
    • 2018-10-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多