リスト内の特定の属性を介して同じ属性のコンテンツを表示する方法

WBOY
リリース: 2016-06-23 14:11:25
オリジナル
1088 人が閲覧しました

这是我的课题列表,我的课题列表中有一列是“状态”来显示“可选”或“不可选”的。目前列表显示的是所有可选和不可选的内容。我想添加一个功能,就是通过点击“可选”后,系统自动调用数据库中状态为“可选”的内容;点击“不可选”后,系统又能自动调用数据库中状态为“不可选”的内容。

<?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=isset($_POST['surplus']) ? " where surplus=".$_POST['surplus'] : '';
$query=mysql_query("select * from jiaoshi $where order by id asc limit $offset,$list_num") or die ("fail");

我的列表是这样的 我想直接点击列表上的“可选”,然后列表筛选数据库表后显示所有可选课程,这样的话我应该怎么办呢?













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 "";}
else{
echo "";
}
if($row['surplus']==0)
$ss="不可选";
else $ss="可选";
echo"








";
$n++;
}
?>

课题编号

课题名称
指导教师
职称
可选人数
选题情况
状态
详细资料
".$row['id']."
".$row['subject']."
".$row['teacher']."
".$row['zhicheng']."
".$row['number']."
".$row['xuehao']."
".$ss."




<script> <br /> function func(v){ <br /> document.getElementById('surplus').value=v; <br /> document.myform.submit(); <br /> } <br /> </script>

$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'";
ログイン後にコピー
ログイン後にコピー
嗯,这下没有错误了,嘿嘿。但是那个可选不可选功能仍然没有实现,我应该再怎么修改下呢?
 课题列表  <form name='myform' action='' method='post' >  <select name='surplus' onchange="document.myform.submit()">   <option value=0>不可选</option>   <option value=1>可选</option>  </select> </form>  ";}	  else{	  echo "";	  }	  	  	if($row['surplus']==0)	     $ss="不可选";	else $ss="可选";      echo"	 ";   $n++;   }      ?>

课题编号

课题名称
指导教师
职称
可选人数
选题情况
状态
详细资料
".$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 "上一页";}

if(($pages!=0)&&(($newoffset/$list_num)!=$pages))
{
print("下一页");
}

$where = (! isset($surplus)) ? '' : " where surplus='$surplus'";
这句改为:
$where = (isset($surplus) && strlen($surplus)>0) ? " where surplus='$surplus'" : '';

这是我改完后的,点可选后每一页都是可选了,就是有一点小问题,它提示第90行有一个未定义的变量 Undefined variable: surplus这是怎么回事呢?

 课题列表  <form name='myform' action='' method='post' >  <select name='surplus' onchange="document.myform.submit()">   <option value=0>不可选</option>   <option value=1>可选</option>  </select> </form>  0) ? " where surplus='$surplus'" : '';    $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 "";}	  else{	  echo "";	  }	  	  	if($row['surplus']==0)	     $ss="不可选";	else $ss="可选";      echo"	 ";   $n++;   }      ?>

课题编号

课题名称
指导教师
职称
可选人数
选题情况
状态
详细资料
".$row['id']."
".$row['subject']."
".$row['teacher']."
".$row['zhicheng']."
".$row['number']."
".$row['xuehao']."
".$ss."
目前共有".$count."条记录 共".$pages."页"; if($offset){ $preoffset=$offset-$list_num; print "首页上一页";} else { echo "首页上一页";} $nextoffset=$offset+$list_num; if(($pages!=0)&&(($nextoffset/$list_num)!=$pages)) { print("下一页");} else{ echo "下一页";} $pageno=($offset/$list_num)+1; echo "第页 "; ?>

ログイン後にコピー

$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='';
ログイン後にコピー

这是我最新修改的,把那几句换了位置后总记录数和总页数没什么变化。
 课题列表  <form name='myform' action='' method='post' >  <select name='surplus' onchange="document.myform.submit()">   <option value=0>不可选</option>   <option value=1>可选</option>  </select> </form>  0) ? " where surplus='$surplus'" : '';   $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 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 "";}	  else{	  echo "";	  }	  	  	if($row['surplus']==0)	     $ss="不可选";	else $ss="可选";      echo"	 ";   $n++;   }      ?>

课题编号

课题名称
指导教师
职称
可选人数
选题情况
状态
详细资料
".$row['id']."
".$row['subject']."
".$row['teacher']."
".$row['zhicheng']."
".$row['number']."
".$row['xuehao']."
".$ss."
目前共有".$count."条记录 共".$pages."页"; if($offset){ $preoffset=$offset-$list_num; print "首页上一页";} else { echo "首页上一页";} $nextoffset=$offset+$list_num; if(($pages!=0)&&(($nextoffset/$list_num)!=$pages)) { print("下一页");} else{ echo "下一页";} $pageno=ceil(($offset/$list_num)+1); echo "第页 "; ?>

ログイン後にコピー

$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


点“可选”后,又弹回不可选。