0

我已经在这几个小时了,我已经取得了一点突破,但是我现在处于静止状态。我有一个存储车辆信息的 SQL 数据库,例如品牌、型号和年份。我想要做的是允许用户修改查询并且只显示特定的结果。

我了解如何一次显示所有记录,但我想添加的是当用户选择例如“丰田”的品牌时,我只希望出现特定的品牌。通过使用以下代码,我确实达到了某些地方:

<form method="post" action=""> 
 <div id="search_query" >
     Make 
    <select name="make" size="0">
    <option value="honda">Honda</option>
  <option value="toyota">Toyota</option>
  <option value="nissan">Nissan</option>
    </select>

     <input type="submit" name="submit" value="submit">

 </div>
 </form>     

<?php

    $db_con = mysql_connect('localhost', 'root', '');

    if (!$db_con) {
        die('Could not connect: ' . mysql_error());
    }

    mysql_select_db('my_db', $db_con);

    $make = mysql_real_escape_string($_POST['make']);

    $sql = sprintf("SELECT * FROM chjadb_vehicles WHERE v_make= '$make' ");


    $result = mysql_query($sql);


    echo "<table width= 970 border=1>
         <tr>
           <th width='120' scope='col'>Image</th>
           <th width='170' scope='col'>Details</th>
           <th width='185' scope='col'>Seller</th>
           <th width='126' scope='col'>Price</th>
         </tr>";
    while($row = mysql_fetch_array($result))
      { 
         echo "<tr>";
           echo "<td> <img src=" .$row['v_image']. " width =200 height = 130>" . "</td>";
           echo "<td>". $row['v_year'] . "&nbsp;" . $row['v_make'] . "&nbsp;". $row['v_model'] . "&nbsp;". $row['b_type']. "</td>";
           echo "<td>". $row['user_id'] ."</td>";
           echo "<td>". $row['v_price'] ."</td>";
         echo "</tr>";
      }
       echo "</table>";

     mysql_close($db_con);
    ?>

但是,当我最初运行该页面时,我收到此错误:“注意:未定义的索引:在第 62 行的 C:\xampp\htdocs\carhuntja.com\buy_a_car.php 中制作”

我做了一些研究并意识到发生这种情况是因为我没有设置制造值,我希望在这里做的是在开始访问该页面时,我希望显示所有车辆。

4

2 回答 2

0

问题是查询是在用户选择品牌之前发送的。要解决此问题,您需要通过将您的 PHP 代码封装在其中来检查用户是否实际提交了表单if(isset($_POST['submit']))(使用“提交”,因为这是name您的提交按钮)。

//place connection code here (do not query the database yet)

if(isset($_POST['submit']))
{
   //all of the database retrieval code
}
else
{
  $query_makes = "SELECT v_make FROM chjadb_vehicles";
  $result_makes = mysqli_query($query_makes);
  echo "Please choose a make."
  //echo opening select tag
  while($row = mysql_fetch_array($result_makes))
  {
     //echo each option tag
  }
  //echo ending select tag
}

此外,您在自包含输入标签中缺少斜杠。最后,您应该使用MySQLi 函数,因为 PHP 中不推荐使用 MySQL 函数。

于 2012-07-09T14:30:23.900 回答
0
  1. 当页面首次加载时,您需要运行此查询:

    SELECT * FROM chjadb_vehicles
    
  2. 您需要检查用户是否单击了提交按钮并发布了 make 字段,为此使用 isset():

    if (isset($_POST['make']){
        $make = mysql_real_escape_string($_POST['make']);
    }
    
  3. 我强烈建议你使用jqueryajax

编辑:

第一次加载页面时,您会显示所有车辆。

在您的 javascript 中,您将一个 onSelect 事件绑定到下拉列表,一旦用户选择了一个品牌,您就会向服务器发送一个 ajax 请求并显示来自服务器的新结果,所以它看起来像这样:

$('#search_query select').change(function(){
//get the selected option text
var selectedVal = $(this).find('option:selected').text();

//send ajax request
$.ajax( {
url : url,
type : "POST",
data : selectedVal ,
dataType : 'json',
success : function(data) {//handle returned data}
})

});

我建议你看看这里,关于 jquery 的完整视频教程。

于 2012-07-09T14:32:49.750 回答