【问题标题】:Page filters not getting data from the database页面过滤器没有从数据库中获取数据
【发布时间】:2016-03-23 12:29:51
【问题描述】:

此代码适用于我页面上的一些过滤器(下拉菜单)。我希望这些能够正常工作,因此当用户想要过滤某些数据时,它只会显示他们选择的内容。但是,我尝试在我的代码中实现该逻辑,但它不起作用 - 即使在我刷新页面几次后,它也只会显示我设置的错误消息。

<?php
    if (isset($_POST['search'])){

    $bedrooms= htmlentities(strip_tags($_POST['bedrooms']));
    $radius= htmlentities(strip_tags($_POST['radius']));
    $type_prop= htmlentities(strip_tags($_POST['type_prop']));
    $prop_share= htmlentities(strip_tags($_POST['prop_share']));


    $bed_query = mysqli_query($connect, "SELECT * FROM properties WHERE prop_radius='$bedrooms'");
    $radius_query = mysqli_query($connect, "SELECT * FROM properties WHERE prop_radius='$radius'");
    $type_query = mysqli_query($connect, "SELECT * FROM properties WHERE prop_type='$type_prop'");
    $share_query = mysqli_query($connect, "SELECT * FROM properties WHERE prop_share='$prop_share'");
    var_dump($bed_query);
    echo $radius_query;
    echo $type_query;
    echo $prop_share;
    }else {
    echo "This didnt work";     
    }
    ?>

    <form action="" enctype="multipart/form-data">
    <div class="form-group" style="width: 400px; margin-left: 375px; margin-top: 20px; ">
      <label for="sel1">Radius (from Aston University):</label>
      <select class="form-control" id="sel1" name="radius">
        <option>1</option>
        <option>2</option>
        <option>3</option>
        <option>4</option>
      </select>
      <br>
      <label for="sel2">No of bedrooms:</label>
      <select class="form-control" id="sel2" name="bedrooms">
        <option>1</option>
        <option>2</option>
        <option>3</option>
        <option>4</option>
      </select>
    </div>
    <div class="form-group" style="width: 400px; margin-left: 850px; margin-top: -152px; ">
      <label for="sel1">Type of Property:</label>
      <select class="form-control" id="sel3" name="type_prop">
        <option>Halls</option>
        <option>Flat</option>
        <option>Terrace Home share</option>
        <option>Semi Detactched Home share</option>
      </select>
      <br>
      <label for="sel2">Property share:</label>
      <select class="form-control" id="sel4" name="prop_share">
        <option>2</option>
        <option>3</option>
        <option>4</option>
        <option>5</option>
        <option>6</option>
      </select>
    </div>
    <input type="submit" name="search" value="test">
  </form>

【问题讨论】:

  • 那么,独家新闻是什么?我在一个多小时前发布了一个答案,但没有回复。

标签: php mysqli filter


【解决方案1】:

&lt;form&gt; 在未隐含 (post) 方法并且您正在使用 POST 数组时默认为 GET 方法。

<form action="" enctype="multipart/form-data">

...和做的一样:

<form method="get" action="" enctype="multipart/form-data">

在表单中添加(post)方法:

<form method="post" action="" enctype="multipart/form-data">

旁注:如果您不处理文件,您可以安全地从表单中删除enctype="multipart/form-data",但仍然添加 post 方法。

但是,如果您以后决定处理文件,请使用它。处理文件需要显式的 POST 方法。

如果碰巧没有传递任何值,您可能必须给它们实际值。

例如:

<option>1</option>

<option value="1">1</option>

并对其他人遵循相同的程序。

&lt;option&gt;Halls&lt;/option&gt;&lt;option value="Halls"&gt;Halls&lt;/option&gt;

请注意,如果 halls 是数据库中的值,则 Hallshalls 不会被视为相同。

现在,您正在尝试回应您的查询:

echo $radius_query;
echo $type_query;
echo $prop_share;

这不是您从数据库中提取信息以进行显示的方式。

您需要遍历这些结果。

你想使用这样的例子:

while($row = $query->fetch_array())
  {
  echo $row['col1'] . " " . $row['col2'];
  echo "<br />";
  }

参考资料:

不确定您是否使用相同的 MySQL API mysqli_ 连接到您的数据库。如果还没有,请查阅手册:

在您打开 PHP 标记之后立即将错误报告添加到文件顶部,例如
&lt;?php error_reporting(E_ALL); ini_set('display_errors', 1); 然后是其余代码,以查看它是否产生任何结果, 以及or die(mysqli_error($connect))mysqli_query()

【讨论】:

  • 您好,很抱歉耽搁了...感谢您的回复,我现在可以正常工作了。
  • @JackDaniels 不用担心,不客气。很高兴看到我对 Jack 有所帮助,干杯
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-18
  • 1970-01-01
  • 1970-01-01
  • 2015-12-02
  • 2019-03-04
  • 2022-08-24
相关资源
最近更新 更多