2012-07-09 23 views
0

我已經在這裏待了好幾個小時,並且我得到了一個小小的突破,但是我現在仍然處於停滯狀態。我有一個存儲車輛信息的SQL數據庫,例如品牌,型號和年份。我想要做的是允許用戶修改查詢並只顯示特定的結果。如何使用選擇菜單在HTML表格中顯示來自SQL數據庫的特定結果

我明白如何一次顯示所有記錄,但是我想添加的是當用戶選擇說例如make作爲「豐田」時,我只想要特定品牌出現。我沒有在這個到達一些地方,通過使用此代碼:

<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); 
    ?> 
然而

當我最初運行的頁面我得到這個錯誤:「通知:未定義指數:使在C:\ XAMPP \ htdocs中\ carhuntja.com \ buy_a_car.php在線62「

我做了一些研究,並意識到這是因爲我沒有設置任何值,我想在這裏做的是在去那個頁面的開始,我希望所有的車輛被顯示。

+0

當您第一次加載頁面時,選擇*從chjadb_vehicles'並顯示相應的值。爲了過濾,爲什麼不使用AJAX?見http://api.jquery.com/jQuery.ajax/ – Don 2012-07-09 14:27:36

回答

0

問題是在用戶選擇make之前發送查詢。爲了解決這個問題,你需要通過在if(isset($_POST['submit']))(使用「submit」,因爲這是你的提交按鈕的name)中包含你的PHP代碼來檢查用戶是否確實已經提交了表單。

//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 functions,因爲PHP中不推薦使用MySQL函數。

+0

可愛!如果我想更進一步並顯示所有的結果呢?^_^ – 2012-07-09 14:47:31

+0

這應該在else條件下(即不提交表單)如上所示。然後你可以發佈make菜單的'value'並將其提交給數據庫。這樣,如果添加新品牌,當用戶訪問該頁面時,它們將自動顯示在菜單中。 – FlyingMolga 2012-07-09 15:02:39

+0

感謝你們,我將編輯當前的代碼,讓你們看看..真的很感激! – 2012-07-09 15:28:56

0
  1. 頁面加載後的第一次,你需要運行此查詢:

    SELECT * FROM chjadb_vehicles 
    
  2. 您需要檢查,如果用戶點擊提交按鈕並張貼在化妝領域,要做到這一點使用isset()函數:

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

編輯:

第一次加載頁面顯示你所有的車輛。

在你的javascript中,你將一個onSelect evvent綁定到下拉列表中,一旦用戶選擇了一個make,你發送一個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} 
}) 

});

我建議你看看here,以獲得完整的jQuery視頻教程。

+0

即時將添加其他元素的設計,但在我之前我想要的基本功能工作 – 2012-07-09 14:48:54

+0

看到我是一個完整的n00b到這個地方你建議我使用jQuery和ajax ...你能給我一點更有見識? – 2012-07-10 13:35:58

+0

看到我編輯的答案 – Tomer 2012-07-10 13:55:28

相關問題