2013-03-10 129 views
6

我是StackOverflow的新成員,雖然我一直在使用該網站很長一段時間,但這是我第一次發佈一個問題,希望有人能夠幫助我。我首先要說的是我對PHP和MySQL的知識是基本的,但我想要做的並不是太複雜,所以我希望我不會要求太多。我做了很多事先的研究,但我找不到正確的答案。通過select dropdown過濾mysql結果

總之,這就是我想要做的事:

我有一個HTML表單,它在提交數據寫入到數據庫中,然後發佈一個單獨的HTML頁面上的表。隨着每次成功提交,新表格都會生成併發布,而舊錶格會被推到下面。這一切都很好,我也實現了分頁,每頁只有5個表格可見。

我希望能夠做的是允許人們僅根據特定標準(在本例中爲「評級」)查看/顯示結果(表格),方法是從下拉列表中選擇評分發表表格的頁面。評級是我的表單中的一個字段,它被提交給一個數據庫,然後發佈在表中的一行中。

下面是發佈表的代碼。在此先感謝您的幫助!

<?php 
include('dbconnect.php'); 

mysql_select_db("vtracker", $con); 
$result = mysql_query("SELECT * FROM userdata"); 
$age = "Age:"; 
$rating = "Rating:"; 
$country = "From:"; 
$name = "Name:"; 

     while($row = mysql_fetch_array($result)) 
     { 

         echo "<table id='mft_table' cellspacing='0'>"; 
         echo "<tbody>"; 
         echo "<tr>"; 
         echo "<td class='row1'>" .$name . " " . $row['personsname'] . "</td>"; 
         echo "<td rowspan='4'>"; 
         echo "<div class='mft_column'>" . $row['mft'] . "</div>"; 
         echo "</td>"; 
         echo "</tr>"; 
         echo "<tr>"; 
         echo "<td class='row2'>" . $country . " " . $row['nationality'] . "</td>"; 
         echo "</tr>"; 
         echo "<tr>"; 
         echo "<td class='row3'>" . $age . " " . $row['personsage'] . "</td>"; 
         echo "</tr>"; 
         echo "<tr>"; 
         echo "<td class='row4'>" . $rating . " " . $row['rating'] . "</td>"; 
         echo "</tr>"; 
         echo "</tbody>"; 
         echo "<br>"; 
         echo "</table>"; 

     } 
    ?> 

回答

1

兩個真假的使用可以在代碼中添加THID:

if($_POST['rating_dropdown']!='') 
{ 
    $temp_rating = $_POST['rating_dropdown']; 
    $query=mysql_query("SELECT * FROM userdata WHERE rating = '$temp_rating'"); 
} 
else 
{ 
    $query=mysql_query("SELECT * FROM userdata"); 
} 
+1

謝謝,一切正常,我已經納入給出的建議。感謝所有投入。 – Zeus 2013-03-26 16:15:54

0

不知道,如果這個工程,它只是一個hinch。哈哈。 它會查看評級是否爲真(非空),如果是真的,它會回顯結果。

while($row = mysql_fetch_array($result)) 
{ 
if ($rating) 
       echo "<table id='mft_table' cellspacing='0'>"; 
       echo "<tbody>"; 
       echo "<tr>"; 
       echo "<td class='row1'>" .$name . " " . $row['personsname'] . "</td>"; 
       echo "<td rowspan='4'>"; 
       echo "<div class='mft_column'>" . $row['mft'] . "</div>"; 
       echo "</td>"; 
       echo "</tr>"; 
       echo "<tr>"; 
       echo "<td class='row2'>" . $country . " " . $row['nationality'] . "</td>"; 
       echo "</tr>"; 
       echo "<tr>"; 
       echo "<td class='row3'>" . $age . " " . $row['personsage'] . "</td>"; 
       echo "</tr>"; 
       echo "<tr>"; 
       echo "<td class='row4'>" . $rating . " " . $row['rating'] . "</td>"; 
       echo "</tr>"; 
       echo "</tbody>"; 
       echo "<br>"; 
       echo "</table>"; 
} 

} 
0

一旦下拉菜單被選中,並貼到您的顯示頁面,使用此代碼:

$temp_rating = $_POST['rating_dropdown']; 
mysql_query("SELECT * FROM userdata WHERE rating = '$temp_rating'"); 

請記住,但是,你應該使用PDO或mysqli擴展,而不是MySQL擴展。根據PHP網站:

此擴展從PHP 5.5.0開始已棄用,未來將在 中刪除。相反,應該使用MySQLi或PDO_MySQL擴展。 另請參見MySQL:爲更多 信息選擇API指南和相關FAQ。

+0

感謝回答。帶有評分選項的下拉菜單總是顯示在顯示頁面上,我已經鏈接到一個'filter.php'文件,當用戶點擊「提交」按鈕時會調用該文件。我的代碼在filter.php文件中的邏輯實際上與您的建議相同,但它不起作用,即結果(表格)不會根據用戶選擇進行過濾。以下是filter.php文件中的代碼: – Zeus 2013-03-10 18:13:18

+0

剛剛意識到我沒有足夠的空間來發布所有內容... – Zeus 2013-03-10 18:19:34

+0

在filter.php文件中,我有: $ filtered = mysql_real_escape_string($ _ POST [「filtered」] ); $ result = mysql_query(「SELECT * FROM userdata WHERE rating ='$ filtered'」); 然後一個while循環打印表,就像我的原始代碼一樣。 – Zeus 2013-03-10 18:23:56