2016-05-18 45 views
0

我想讓用戶根據用戶需要對錶格進行排序。 我有兩種選擇,按名稱排序按考試排序。通過檢查選項按鈕排序PHP MYSQL

代碼

echo "<table border=1 align=center><tr class=style2><td><input type=radio name=sort value='byname'>Sort By Name<td><input type=radio name=sort value='byexam'>Sort By Exam"; 

$sort = $_POST['name']; 
if ($sort == "byname"){ 
    $sort=mysql_query("select * from mst_adminresult order by login ASC",$cn) or die(mysql_error()); 

    while($row=mysql_fetch_row($sort)) 
    echo "<table border=1 align=center><tr class=style2><td>Student Name <td> Test<br> Question <td> Score"; 
    echo "<tr class=style8><td>$row[1] <td align=center> $row[2] <td align=center> $row[3]/20"; 
    echo "</table>"; 

}else{ 
    $sort=mysql_query("select * from mst_adminresult order by test_id ASC",$cn) or die(mysql_error()); 
    while($row=mysql_fetch_row($sort)) 
    echo "<table border=1 align=center><tr class=style2><td>Exam<td width=300>Student Name<td> Score"; 
    echo "<tr class=style8><td>$row[1] <td align=center> $row[2] <td align=center> $row[3]/20"; 
    echo "</table>"; 
} 

echo "<table border=1 align=center><tr class=style2><td width=300>Student Name <td> Test<br> Question <td> Score"; 

while($row=mysql_fetch_row($rs)) 
{ 
echo "<tr class=style8><td>$row[1] <td align=center> $row[2] <td align=center> $row[3]/20"; 
} 
echo "</table>"; 

我遇到的問題是它不能正常工作。數據的默認排列由最新的考生在最後列出。現在我的目標是,如果用戶檢查的名稱選項,它將按名稱排序。對於考試的,它將通過考試列出。

輸出: enter image description here

+3

注意:'mysql_ *'函數已被棄用,它們已從PHP 7中刪除,當您升級到該版本時,您的代碼將停止工作。您不應使用它們編寫新代碼,而應使用['mysqli_ *'或PDO](http://php.net/manual/en/mysqlinfo.api.choosing.php)。 –

+0

您的選擇具有'name =「sort」',但您稍後會檢查'$ _POST ['name']'。將其更改爲'$ _POST ['sort']'。 –

+0

它工作正常..但佈局是在一團糟...我會編輯問題,讓每個人都可以看到佈局。它應該只是一張桌子@GeraldSchneider – Jennifer

回答

1

你輸入單選按鈕name="sort",所以你需要使用$_POST['sort']

您可以使用輸入值作爲數據庫字段名稱,以便我們可以在不存在if ... else條件的情況下輕鬆地在查詢中使用它。

echo "<table border=1 align=center><tr class=style2> 
    <tr><td><input type=radio name='sort' value='byname'>Sort By Name</td> 
    <td><input type=radio name='sort' value='byexam'>Sort By Exam</td></tr></table>"; 

$sort = isset($_POST['sort']) ? $_POST['sort'] : "test_id"; // change of $_POST['name'] to $_POST['sort'] 

$sortQuery = mysql_query("select * from mst_adminresult order by ".$sort." ASC",$cn) or die(mysql_error()); 

while($row=mysql_fetch_row($sortQuery)) 
{ 
    echo "<table border=1 align=center><tr class=style2><td>Student Name</td><td>Test<br> Question</td><td>Score</td></tr>"; 
    echo "<tr class=style8><td>$row[1]</td> <td align=center> $row[2]</td> <td align=center> ". ($row[3]/20) ."</td></tr> "; 
    echo "</table>"; 
} 

echo "<table border=1 align=center><tr class=style2><td width=300>Student Name</td><td> Test<br> Question </td><td> Score</td></tr>"; 

while($row=mysql_fetch_row($rs)) 
{ 
echo "<tr class=style8><td>$row[1]</td> <td align=center> $row[2]</td> <td align=center> ". ($row[3]/20) ."</td></tr> "; 
} 
echo "</table>"; 
+0

它工作正常..但佈局是在一團糟......我會編輯的問題,所以每個人都可以看到... 它應該只是一張桌子 – Jennifer

+0

嘗試編輯的代碼,讓我知道你的輸出。 @Jennifer – RJParikh

+1

並向MySQL注入聲音。不要使用'mysql_',因爲這些函數已被棄用。如果你反正使用上面的代碼,至少在你的'$ _POST'數據中加入'mysql_real_escape_string'。 – Boratzan