Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用选择菜单对MySQL数据进行排序_Php_Html_Mysql - Fatal编程技术网

Php 使用选择菜单对MySQL数据进行排序

Php 使用选择菜单对MySQL数据进行排序,php,html,mysql,Php,Html,Mysql,我有一个选择菜单,可以选择如何对数据库中的数据进行排序。我被困在如何根据日期和考试进行分类的问题上 这是我目前的代码: echo "<form action=results.php method=post>"; echo "Sort By: <select name=q><option value= name=></option><option value=date name=date>Date</option><op

我有一个选择菜单,可以选择如何对数据库中的数据进行排序。我被困在如何根据日期和考试进行分类的问题上

这是我目前的代码:

echo "<form action=results.php method=post>";
echo "Sort By: <select name=q><option value= name=></option><option value=date name=date>Date</option><option value=exam name=exam>Exam</option></select>";
echo "</form>";

if()
$q = $_GET['q'];

echo "<table border=1 align=center><tr class=style2><td>Date <td>Student Name <td> Subject <td> Score";

$sortQuery = mysql_query("SELECT * FROM mst_adminresult m
JOIN mst_test t ON t.test_id = m.test_id
JOIN mst_subject s ON s.sub_id = t.sub_id order by'".$q."'" ,$cn) or die(mysql_error());

while($row=mysql_fetch_row($sortQuery))
{
    echo "<tr class=style8><td>$row[5]<td>$row[1] <td align=center> $row[4] <td align=center> $row[3]/20";   
}
echo "</table>";
echo”“;
echo“排序依据:日期检查”;
回声“;
if()
$q=$_GET['q'];
回显“日期学生姓名科目分数”;
$sortQuery=mysql\u查询(“从mst\u adminresult m中选择*
在t.test\u id=m.test\u id上加入mst\u test
在s.sub_id=t.sub_id上加入mst_主题,顺序为“.$q.”,$cn)或die(mysql_error());
while($row=mysql\u fetch\u row($sortQuery))
{
回显“$行[5]$行[1]$行[4]$行[3]/20”;
}
回声“;
在“订购人”后面必须有空格

样本:

... ORDER BY column_name ASC|DESC ...

这是你修改过的代码,让我很想看到它:

echo '<form action="results.php" method="post">';
echo 'Sort By: <select name="q"><option value=""></option><option value="date">Date</option><option value="exam">Exam</option></select>';
echo '</form>';

if(isset($_GET['q']) {
  $q = $_GET['q'];
} else {
  $q = 'date';
}

echo '<table border="1" align="center"><tr class="style2"><td>Date</td><td>Student Name</td><td>Subject</td><td>Score</td></tr>';

$sortQuery = mysql_query("SELECT * FROM mst_adminresult 
JOIN mst_test t ON t.test_id = m.test_id
JOIN mst_subject s ON s.sub_id = t.sub_id order by `".$q."`" ,$cn) or die(mysql_error());

while($row=mysql_fetch_row($sortQuery))
{
  echo '<tr class="style8"><td>$row[5]</td><td>$row[1]</td><td align=center>$row[4]</td><td align=center>$row[3]/20</td></tr>';   
}
echo '</table>';
echo';
echo“排序依据:日期检查”;
回声';
if(isset($\u GET['q'])){
$q=$_GET['q'];
}否则{
$q=‘日期’;
}
回显“DateStudent NameSubjectScore”;
$sortQuery=mysql\u查询(“从mst\u adminresult中选择*
在t.test\u id=m.test\u id上加入mst\u test
在s.sub_id=t.sub_id上加入mst_主题,按“`.$q.`,$cn”或die(mysql_error());
while($row=mysql\u fetch\u row($sortQuery))
{
回显“$row[5]$row[1]$row[4]$row[3]/20”;
}
回声';
一些意见:

  • 选择中的选项不需要名称
  • 你的许多人都没有结束
  • 你的房间没有关门
  • 使用单引号包装使用大量双引号的文本或转义双引号:
    此“文本”
    此“文本”

我希望这会有所帮助。

ORDER BY子句中的字段应该用反勾号而不是单引号括起来,特别是因为您使用的是保留字
date
。但是,如果您是这样编码的,那么您的问题要比缺少几个反勾号大得多。我希望这只是您的示例代码……您甚至不检查
$\u GET['q']
已设置或未设置,我知道我必须
isset()
但这是我遇到的问题…我不知道正确的方法。我一直在使用
如果(isset($\u GET['q'])==“examdate应该是这样的,如果值等于examdate,它将按日期排序,@kirito如果(isset($\u GET['q']),则无法计算
if(isset($\u GET['q'])“examdate”)
,你可以,但是你得到了意想不到的结果。
isset
只返回true或false,所以使用:
如果(isset($\u GET['q']){$q=$\u GET['q'];}否则{$q=“date”}
这意味着
date
将是未设置
$\u GET['q']
时的默认值,或者你可以将其更改为
$q=”考试“
,由你决定。很多很多年前,PHP mysql\uuAPI被发现不安全。所以我们停止使用它。来吧。加入我们。我知道我必须
isset()
it,但这是我遇到的问题…我不知道正确的方法。我一直坚持
if(isset($\u GET['q'])==“examdate”)
应该是,如果该值等于examdate,它将按日期排序