课题编号
Maison >développement back-end >tutoriel php >如何通过列表中某一个属性来显示具有相同属性的内容
这是我的课题列表,我的课题列表中有一列是“状态”来显示“可选”或“不可选”的。目前列表显示的是所有可选和不可选的内容。我想添加一个功能,就是通过点击“可选”后,系统自动调用数据库中状态为“可选”的内容;点击“不可选”后,系统又能自动调用数据库中状态为“不可选”的内容。
<?php//######################课题列表########################## include "conn.php"; include "header.php";?> <meta http-equiv="Content-Type" content="text/html; charset=GB2312"><link href="style.css" rel="stylesheet" type="text/css"><title>课题列表</title><style type="text/css"><!--.STYLE1 {font-size: 14px}--></style><table width="740" border="0" cellspacing="1" cellpadding="0" bgcolor="#333333" align="center"> <tr> <td width="60" height="30" bgcolor="#CDE6C7"> <div align="center" class="text"> <p class="STYLE1">课题编号</p></div> </td> <td width="300" height="30" bgcolor="#CDE6C7"> <div align="center" class="title STYLE1">课题名称</div> </td> <td width="85" height="30" bgcolor="#CDE6C7"> <div align="center" class="STYLE1">指导教师</div></td> <td width="60" height="30" bgcolor="#CDE6C7"> <div align="center" class="STYLE1">职称</div> </td> <td width="60" height="30" bgcolor="#CDE6C7"> <div align="center" class="title STYLE1">可选人数</div> </td> <td width="80" height="30" bgcolor="#CDE6C7" class="title"><div align="center" class="STYLE1">选题情况</div> </td> <td width="60" height="30" bgcolor="#CDE6C7" class="title"><div align="center" class="STYLE1">状态</div> </td> <td width="60" height="30" bgcolor="#CDE6C7" class="title"><div align="center" class="STYLE1">详细资料</div> </td> </tr><?php extract($_REQUEST); $n=0; $query=mysql_query("select count(*) as sm from jiaoshi"); mysql_query("set names 'GB2312'"); $row=mysql_fetch_array($query); $count=$row['sm']; if(empty($offset)) {$offset=0;} echo $offset; $query=mysql_query("select * from jiaoshi order by id asc limit $offset,$list_num") or die ("fail"); mysql_query("set names 'GB2312'"); while($row=mysql_fetch_array($query)){ if(($n%2)!='0'){ echo "<tr bgcolor=#CDE6C7>";} else{ echo "<tr bgcolor=#FFFFFF>"; } if($row['surplus']==0) $ss="不可选"; else $ss="可选"; echo" <td height='22' class='STYLE1'> <div align='center'>".$row['id']."</div></td> <td height='22' class='STYLE1'> <div align='center'>".$row['subject']."</div></td> <td height='22' class='STYLE1'> <div align='center'>".$row['teacher']."</div></td> <td height='22' class='STYLE1'> <div align='center'>".$row['zhicheng']."</div></td> <td height='22' class='STYLE1'> <div align='center'>".$row['number']."</div></td> <td height='22' class='STYLE1'> <div align='center'>".$row['xuehao']."</div></td> <td height='22' class='STYLE1'> <div align='center'>".$ss."</div></td> <td height='22' class='STYLE1'> <div align='center'> <a href=xiangxiziliao.php?id=".$row['id'].">查看</a></div></td> </tr> "; $n++; } ?></table>
功能类似你的查看,点击之后弄一个链接,然后把id传过去,update该条记录。
加个select框,监听onchange 事件,然后form提交实现过滤记录。
加个select框,监听onchange 事件,然后form提交实现过滤记录。 能简单地帮我写出一些关键的代码吗?
我的列表是这样的 我想直接点击列表上的“可选”,然后列表筛选数据库表后显示所有可选课程,这样的话我应该怎么办呢?
$where=($_POST['surplus']=="") ? '' : " where surplus=".$_POST['surplus'] ;
$query=mysql_query("select * from jiaoshi $where order by id asc limit $offset,$list_num") or die ("fail");
$where=($_POST['surplus']=="") ? '' : " where surplus=".$_POST['surplus'] ;
$query=mysql_query("select * from jiaoshi $where order by id asc limit $offset,$list_num") or die ("fail"); 我按你给我的第一种方法写的,但是系统提示错误Undefined index: surplus 在第46行。
<?php//######################课题列表########################## include "conn.php"; include "header.php";?> <meta http-equiv="Content-Type" content="text/html; charset=GB2312"><link href="style.css" rel="stylesheet" type="text/css"><title>课题列表</title><style type="text/css"><!--.STYLE1 {font-size: 14px}--></style><table width="740" border="0" cellspacing="1" cellpadding="0" bgcolor="#333333" align="center"> <form name='myform' action='' method='post' > <select name='surplus' onchange="document.myform.submit()"> <option value=0>不可选</option> <option value=1>可选</option> </select> </form> <tr> <td width="60" height="30" bgcolor="#CDE6C7"> <div align="center" class="text"> <p class="STYLE1">课题编号</p></div> </td> <td width="300" height="30" bgcolor="#CDE6C7"> <div align="center" class="title STYLE1">课题名称</div> </td> <td width="85" height="30" bgcolor="#CDE6C7"> <div align="center" class="STYLE1">指导教师</div></td> <td width="60" height="30" bgcolor="#CDE6C7"> <div align="center" class="STYLE1">职称</div> </td> <td width="60" height="30" bgcolor="#CDE6C7"> <div align="center" class="title STYLE1">可选人数</div> </td> <td width="80" height="30" bgcolor="#CDE6C7" class="title"><div align="center" class="STYLE1">选题情况</div> </td> <td width="60" height="30" bgcolor="#CDE6C7" class="title"><div align="center" class="STYLE1">状态</div> </td> <td width="60" height="30" bgcolor="#CDE6C7" class="title"><div align="center" class="STYLE1">详细资料</div> </td> </tr> <?php extract($_REQUEST); $n=0; $query=mysql_query("select count(*) as sm from jiaoshi"); mysql_query("set names 'GB2312'"); $row=mysql_fetch_array($query); $count=$row['sm']; if(empty($offset)) {$offset=0;} /*echo $offset;*/ $where=($_POST['surplus']=="") ? '' : " where surplus=".$_POST['surplus'] ; $query=mysql_query("select * from jiaoshi order by id asc limit $offset,$list_num") or die ("fail"); mysql_query("set names 'GB2312'"); while($row=mysql_fetch_array($query)){ if(($n%2)!='0'){ echo "<tr bgcolor=#CDE6C7>";} else{ echo "<tr bgcolor=#FFFFFF>"; } if($row['surplus']==0) $ss="不可选"; else $ss="可选"; echo" <td height='22' class='STYLE1'> <div align='center'> ".$row['id']." </div></td> <td height='22' class='STYLE1'> <div align='center'> ".$row['subject']." </div></td> <td height='22' class='STYLE1'> <div align='center'> ".$row['teacher']." </div></td> <td height='22' class='STYLE1'> <div align='center'> ".$row['zhicheng']." </div></td> <td height='22' class='STYLE1'> <div align='center'> ".$row['number']." </div></td> <td height='22' class='STYLE1'> <div align='center'> ".$row['xuehao']." </div></td> <td height='22' class='STYLE1'> <div align='center'>".$ss."</div></td> <td height='22' class='STYLE1'> <div align='center'> <a href=xiangxiziliao.php?id=".$row['id'].">查看</a></div></td> </tr> "; $n++; } ?></table>
46 行的 $where=($_POST['surplus']=="") ? '' : " where surplus=".$_POST['surplus'] ;
应写作 $where=(isset($surplus)) ? '' : " where surplus='$surplus'";
原因是 37 的 extract($_REQUEST); 已经将外来的变量导入到变量表中了
所以不再需要从 $_POST 中读取,何况也不一定是 post 方式传入的
extract这个函数生成的变量应该还是局部变量吧
46 行的 $where=($_POST['surplus']=="") ? '' : " where surplus=".$_POST['surplus'] ;
应写作 $where=(isset($surplus)) ? '' : " where surplus='$surplus'";
原因是 37 的 extract($_REQUEST); 已经将外来的变量导入到变量表中了
所以不再需要从 $_POST 中读取,何况也不一定是 post 方式传入的 我修改后系统提示又变成Undefined variable: surplus 在46行。还有就是,您给看看我这种方法能实现点“可选”实现列表显示所有可选的内容不?
不好意思,写反了!
应该这样:
$where = (! isset($surplus)) ? '' : " where surplus='$surplus'";
不好意思,写反了!
应该这样:
$where = (! isset($surplus)) ? '' : " where surplus='$surplus'";嗯,这下没有错误了,嘿嘿。但是那个可选不可选功能仍然没有实现,我应该再怎么修改下呢?
课题列表
课题编号 | 课题名称 | 指导教师 | 职称 | 可选人数 | 选题情况 | 状态 | 详细资料 |
".$row['id']." | ".$row['subject']." | ".$row['teacher']." | ".$row['zhicheng']." | ".$row['number']." | ".$row['xuehao']." | ".$ss." |
贴出截图中的下拉列表的代码
贴出截图中的下拉列表的代码 第18-24行
<form name='myform' action='' method='post' > <select name='surplus' onchange="document.myform.submit()"> <option value=0>不可选</option> <option value=1>可选</option> </select> </form>
那不是都有了,还要什么?
那不是都有了,还要什么? 但是当我选择“可选”后,列表还是显示的全部可选和不可选的内容,并没有分类……
$query=mysql_query("select * from jiaoshi $where order by id asc limit $offset,$list_num") or die ("fail");
$query=mysql_query("select * from jiaoshi $where order by id asc limit $offset,$list_num") or die ("fail"); 那我应该把这两句放在哪呢?
$where = (! isset($surplus)) ? '' : " where surplus='$surplus'";$query=mysql_query("select * from jiaoshi $where order by id asc limit $offset,$list_num") or die ("fail");
原来的位置就可以啊
原来的位置就可以啊 嗯,我照你说的那样改了,但是跟原来一样。我点“可选”后,内容不变,而且立即弹回“不可选”
改为:
但是内容应该有变化了才对啊
改为:
但是内容应该有变化了才对啊 不好意思我看错了,内容确实是有变化了,他把第一页的不可选的内容全部筛选掉了,但是我点下一页,它又显示的混合的可选和不可选的内容?
print "
这是我改完后的,点可选后每一页都是可选了,就是有一点小问题,它提示第90行有一个未定义的变量 Undefined variable: surplus这是怎么回事呢?
课题列表
课题编号 | 课题名称 | 指导教师 | 职称 | 可选人数 | 选题情况 | 状态 | 详细资料 |
".$row['id']." | ".$row['subject']." | ".$row['teacher']." | ".$row['zhicheng']." | ".$row['number']." | ".$row['xuehao']." | ".$ss." |
$surplus 只在选择了下拉框后才会有
你需要在 37 行前为 $surplus 赋初值
或在 90 行做条件判断
都在做毕设了,怎么连基本常识都不知道?
$surplus 只在选择了下拉框后才会有
你需要在 37 行前为 $surplus 赋初值
或在 90 行做条件判断
都在做毕设了,怎么连基本常识都不知道?
唉,惭愧惭愧,身为这个专业的人也没有为这个专业发光发热,尽拖后腿了……
那我在第37行给surplus赋个什么值呢
$surplus=?;
$surplus = ''; 就可以。
你的总记录数和总页数是通过
$query=mysql_query("select count(*) as sm from jiaoshi");
这句算出来的 ,你需要将where条件也加入进去
给surplus赋个什么值呢
赋什么值都不合适!
只要一赋值,就变成条件查询了
也就是一开始的 可选和不可选 共存的情况就没有了
这是你的数据组织有问题而造成的
计算总记录和总页数应放在 46 行以后进行
你们太伟大了。我还以为只说一下思路,居然HMTL都出来了。
$surplus = ''; 就可以。
你的总记录数和总页数是通过
$query=mysql_query("select count(*) as sm from jiaoshi");
这句算出来的 ,你需要将where条件也加入进去 那这样写对吗?
$query=mysql_query("select count(*) as sm from jiaoshi where surplus=$surplus");
$surplus = ''; 就可以。
你的总记录数和总页数是通过
$query=mysql_query("select count(*) as sm from jiaoshi");
这句算出来的 ,你需要将where条件也加入进去 还有一个问题,为什么点“不可选”的时候内容没有变化?
将下面几行放在$where 的下面就可以了
$query=mysql_query("select count(*) as sm from keti");
mysql_query("set names 'GB2312'");
$row=mysql_fetch_array($query);
$count=$row['sm'];
将下面几行放在$where 的下面就可以了
$query=mysql_query("select count(*) as sm from keti");
mysql_query("set names 'GB2312'");
$row=mysql_fetch_array($query);
$count=$row['sm']; 如果加上这句的话“可选”功能就失效了,我就先把它注释掉了。
$surplus='';
课题列表
课题编号 | 课题名称 | 指导教师 | 职称 | 可选人数 | 选题情况 | 状态 | 详细资料 |
".$row['id']." | ".$row['subject']." | ".$row['teacher']." | ".$row['zhicheng']." | ".$row['number']." | ".$row['xuehao']." | ".$ss." |
$surplus=''; //放在这个位置
extract($_REQUEST);
$query=mysql_query("select count(*) as sm from keti $where");
这是我最新的代码,仍然无法实现的功能就是,它无法计算点击“可选”后的总条数和总页数。
<?php//######################课题列表########################## include "conn.php"; include "header.php"; error_reporting(E_ALL ^ E_NOTICE);?> <meta http-equiv="Content-Type" content="text/html; charset=GB2312"><link href="style.css" rel="stylesheet" type="text/css"><title>课题列表</title><style type="text/css"><!--.STYLE1 {font-size: 14px}--></style><table width="740" border="0" cellspacing="1" cellpadding="0" bgcolor="#333333" align="center"> <form name='myform' action='' method='post'> <select name='surplus' onchange="document.myform.submit()"> <option value=0>不可选</option> <option value=1>可选</option> </select> </form> <tr> <td width="60" height="30" bgcolor="#CDE6C7"> <div align="center" class="text"> <p class="STYLE1">课题编号</p></div> </td> <td width="300" height="30" bgcolor="#CDE6C7"> <div align="center" class="title STYLE1">课题名称</div> </td> <td width="85" height="30" bgcolor="#CDE6C7"> <div align="center" class="STYLE1">指导教师</div></td> <td width="60" height="30" bgcolor="#CDE6C7"> <div align="center" class="STYLE1">职称</div> </td> <td width="60" height="30" bgcolor="#CDE6C7"> <div align="center" class="title STYLE1">可选人数</div> </td> <td width="80" height="30" bgcolor="#CDE6C7" class="title"><div align="center" class="STYLE1">选题情况</div> </td> <td width="60" height="30" bgcolor="#CDE6C7" class="title"><div align="center" class="STYLE1">状态</div> </td> <td width="60" height="30" bgcolor="#CDE6C7" class="title"><div align="center" class="STYLE1">详细资料</div> </td> </tr> <?php $surplus=''; extract($_REQUEST); $n=0; if(empty($offset)) {$offset=0;} /*echo $offset;*/ $where = (isset($surplus) && strlen($surplus)>0) ? " where surplus='$surplus'" : ''; $query=mysql_query("select count(*) as sm from keti $where"); mysql_query("set names 'GB2312'"); $row=mysql_fetch_array($query); $count=$row['sm']; $query=mysql_query("select count(*) as sm from keti"); mysql_query("set names 'GB2312'"); $row=mysql_fetch_array($query); $count=$row['sm']; $query=mysql_query("select * from keti $where order by id asc limit $offset,$list_num") or die ("fail"); mysql_query("set names 'GB2312'"); while($row=mysql_fetch_array($query)){ if(($n%2)!='0'){ echo "<tr bgcolor=#CDE6C7>";} else{ echo "<tr bgcolor=#FFFFFF>"; } if($row['surplus']==0) $ss="不可选"; else $ss="可选"; echo" <td height='22' class='STYLE1'> <div align='center'> ".$row['id']." </div></td> <td height='22' class='STYLE1'> <div align='center'> ".$row['subject']." </div></td> <td height='22' class='STYLE1'> <div align='center'> ".$row['teacher']." </div></td> <td height='22' class='STYLE1'> <div align='center'> ".$row['zhicheng']." </div></td> <td height='22' class='STYLE1'> <div align='center'> ".$row['number']." </div></td> <td height='22' class='STYLE1'> <div align='center'> ".$row['xuehao']." </div></td> <td height='22' class='STYLE1'> <div align='center'>".$ss."</div></td> <td height='22' class='STYLE1'> <div align='center'> <a href=xiangxiziliao.php?id=".$row['id'].">查看</a></div></td> </tr> "; $n++; } ?></table> <?php $pages=ceil($count/$list_num); echo "<table width=740 border=0 cellspacing=0 cellpadding=0 align=center class='text'> <tbody> <tr> <td width='290'><font color='#ff0000'>目前共有".$count."条记录</font> </td> <td width='245'>共".$pages."页</td>"; if($offset){ $preoffset=$offset-$list_num; print "<td width='170'><a href=\"?offset=0\">首页</a></td><td width='170'><a href=\"?offset=$preoffset&surplus=$surplus\">上一页</a></td>";} else { echo "<td width='170'>首页</td><td width='170'>上一页</td>";} $nextoffset=$offset+$list_num; if(($pages!=0)&&(($nextoffset/$list_num)!=$pages)) { print("<td width='170'><a href=\"?offset=$nextoffset&surplus=$surplus\">下一页</a></td>");} else{ echo "<td width='170'>下一页</td>";} $pageno=ceil(($offset/$list_num)+1); echo "<td width='112' class=text>第<input class=text type='text' size='3' value=".$pageno." readonly>页</td> <td width='4'> </td></tr></table>"; ?> <p></p><?php include "foot.php";?>
44 到 56 行改成
mysql_query("set names 'GB2312'");
$where = (isset($surplus) && strlen($surplus)>0) ? " where surplus='$surplus'" : '';
$query=mysql_query("select count(*) as sm from keti $where");
$row=mysql_fetch_array($query);
$count=$row['sm']; //总记录数
$query=mysql_query("select * from keti $where order by id asc limit $offset,$list_num") or die ("fail");
44 到 56 行改成
mysql_query("set names 'GB2312'");
$where = (isset($surplus) && strlen($surplus)>0) ? " where surplus='$surplus'" : '';
$query=mysql_query("select count(*) as sm from keti $where");
$row=mysql_fetch_array($query);
$count=$row['sm']; //总记录数
$query=mysql_query("select * from keti $where order by id asc limit $offset,$list_num") or die ("fail"); 可以计算了!太好了,这样改不会影响其他的内容吧?
44 到 56 行改成
mysql_query("set names 'GB2312'");
$where = (isset($surplus) && strlen($surplus)>0) ? " where surplus='$surplus'" : '';
$query=mysql_query("select count(*) as sm from keti $where");
$row=mysql_fetch_array($query);
$count=$row['sm']; //总记录数
$query=mysql_query("select * from keti $where order by id asc limit $offset,$list_num") or die ("fail"); 还有一个小问题,我一点“可选”,内容可以正常显示,但是“可选”和“不可选”的form表单里就弹回到不可选了?like this
点“可选”后,又弹回不可选。