带提交按钮的复选框表单不回显数据库php html sql的值


Checkbox Form with Submit Button doesn't echo values from database php html sql

我是php, html和mysql的新手。我有一个数据库的用户名,产品和价格,他们想要出售的产品。该代码用于带有提交按钮的复选框表单,该按钮的工作原理类似于价格过滤器,当提交时,它应该回显与相应复选框匹配的用户名、产品和价格。如果用户选择标有"0-25"或"100 &并单击提交按钮,它应该返回所有拥有该特定价格范围内商品的用户。我在网上看了看,并试图操纵一些接近我所拥有的。有人可以帮助我或给我的见解如何做到这一点?任何帮助都是感激的

这是我的复选框表格。

<form action="pricefilter.php" method="post">
    <br><b>Filter By Price:</b><br><br> 
    <input type="checkbox" name="$0-$25[]" id="Price" value="0-25"/>&nbsp;$0-$25<br><br>
    <input type="checkbox" name="$25-$50[]" id="Price" value="25-50"/>&nbsp;$25-$50<br><br>
    <input type="checkbox" name="$50-$100[]" id="Price" value="50-100"/>&nbsp;$50-$100<br><br>
    <input type="submit" name="submit" value="Submit" />
</form>

这是我的php文件的代码

<?php
mysql_connect ("localhost", "root","root")  or die (mysql_error());
mysql_select_db ("xuswapuser");
$priceFilter = $_GET['priceFilter'];
 $filteredResponse = array ();
foreach($priceFilter as $range)
{
if($range == 025)
    {
        $query = "select * from Books where Price <= 25";
        $sql = mysql_query($query);
        array_push($filteredResponse, $sql);

    }
    if($range == 2550)
    {
        $query = "select * from Books where Price >= 25 AND Price <=50";
        $sql = mysql_query($query);
        array_push($filteredResponse, $sql);
    }
     if($range == 5075)
    {
        $query = "select * from Books where Price >= 50 AND Price <=75";
        $sql = mysql_query($query);
        array_push($filteredResponse, $sql);
    }
     if($range == 75100)
    {
        $query = "select * from Books where Price >= 75 AND Price <=100";
        $sql = mysql_query($query);
        array_push($filteredResponse, $sql);
    }
     if($range == 100)
    {
        $query = "select * from Books where Price >= 100";
        $sql = mysql_query($query);
        array_push($filteredResponse, $sql);
    }
}
?>

 <html>
   <head>
   <title> 
XUSWAP 
</title>
<script type="text/javascript" src="sorttable.js"></script>
</head>
<body style="margin: 0; padding: 0;">
       <div id="header" style="background-color:#339900;height:157px;width:100%;position:relative;">                                      <!--header area-->
            <form id="headerForm" name="headerForm" method="Post" action="" align="right">
                  <input type="image" src="https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcSN3XIAe50cjq5Cf91GbAywPkChmI5HOAqYxgmRN8F5OhW7I_RT5Q" alt="Placeholder" align="left" width="150" height="150">
                  <br><br><br>
                  <input type="text" name="searchInput"id="search" style="width:500px;"/>
                  <input type="submit" name="searchButton" id="searchButton" value="Search" />
                  <input type="submit" name="logoutButton" id="logoutButton" value="Logout"/>
                  <br><br><br>
            </form>
       </div> 
       <div id="background" style="background-color:#FFD700;height:100%; width:100%;"> 
 <div id = "pageContent"></div>
 <div id="background" style="background-color:#FFD700;height:100%; width:100%;"> 
<blockquote>
    <blockquote>
      <blockquote>
        <blockquote>
          <blockquote>
            <blockquote>
              <blockquote>
                <p>Books </p>
              </blockquote>
            </blockquote>
          </blockquote>
        </blockquote>
      </blockquote>
    </blockquote>
  </blockquote>
        <blockquote>
                                <table class="sortable" width="940" height="52" border="0">
                                <tr>
                                  <td width="200" id="sortable">Username</td>
                                  <td width="253"> Product</td>
                                  <td width="220">Condition</td>
                                  <td width="249">Price</td>
                                </tr>
                                <?php do { ?>
                                  <tr>
                                    <td><?php echo $range['id']; ?></td>
                                    <td><?php echo $range['Product']; ?></td>
                                    <td><?php echo $range['Condition']; ?></td>
                                    <td><?php echo $range['Price']; ?></td>
                                  </tr>
                                  <?php } while ($range = mysql_fetch_assoc($sql)); ?>
                              </table>

哎哟。:)

  1. IsChecked()函数做什么?是已定义的,还是想要isset() ?
  2. 不要用$ $符号命名你的字段。
  3. 不要让它们成为数组,如果它们不是,你使用了一次组,所以它后面不应该有[]
  4. 要访问发布的名称字段,你需要$_POST超全局变量,你不能直接通过它的名称访问它:

 <input name="asd">
如果在PHP中发布

,那么

将被访问:
$_POST['asd']

,如果它被张贴,检查将是:

if(isset($_POST['asd']) { ...

根据使用$row[]数组的约定,我假设您想要打印查询结果。为了打印结果,您需要获取它们并遍历它们。按你的方式应该是:

 while ($row = mysql_fetch_assoc($sql)) { ...

然而,mysql_*函数已经被弃用了,在你习惯它们之前,最好切换到mysqli_*或PDO库。

这只是一段简单的代码,您可以通过将选中的值放入数组并通过foreach()

执行查询来循环遍历所有可能性
<input type="checkbox" name="priceFilter[]" value="025">
<input type="checkbox" name="priceFilter[]" value="2550">
// etc.
<?php
  $priceFilter = $_POST['pricFilter']; // this is now an array
  if(isset($priceFilter[025]))
  {
      $query25 = "select * from Books where Price <= 25";
  }
  if(isset($priceFilter[2550]))
  {
      $query2550 = "select * from Books where Price >= 25 AND Price <= 50";
  }
  //etc.
  // then run your query if it is set
  if(isset($query25))
  {
      $sql = mysql_query($query25);
  }
  // then do w/e you need to do then run subsequent possibily
?>

这很费时间但我只是想让你们明白如何处理php中的复选框

更新如果你想用foreach:

<?php
$priceFilter = $_GET['priceFilter'];
$filteredResponse = array ();
foreach($priceFilter as $range)
{
if($range == 025)
    {
        $query = "select * from Books where Price <= 25";
        $sql = mysql_query($query);
        array_push($filteredResponse, $sql);
    }
    if($range == 2550)
    {
        $query = "select * from Books where Price >= 25 AND Price <=50";
        $sql = mysql_query($query);
        array_push($filteredResponse, $sql);
    }
    // do this for all the conditions and you can save the results in an array of arrays
}

您现在有一个MYSQL响应数组,该数组基于复选框表单中的选择。然后按你认为合适的方式解析信息。

我还建议-在继续使用PDO代替mysql_之前,因为它是遗留代码

看一下PDO使用