当前位置:Gxlcms > PHP教程 > 如何通过列表中某一个属性来显示具有相同属性的内容

如何通过列表中某一个属性来显示具有相同属性的内容

时间:2021-07-01 10:21:17 帮助过:23人阅读

这是我的课题列表,我的课题列表中有一列是“状态”来显示“可选”或“不可选”的。目前列表显示的是所有可选和不可选的内容。我想添加一个功能,就是通过点击“可选”后,系统自动调用数据库中状态为“可选”的内容;点击“不可选”后,系统又能自动调用数据库中状态为“不可选”的内容。
 课题列表";}	  else{	  echo "";	  }	if($row['surplus']==0)	     $ss="不可选";	else $ss="可选";      echo"	 ";   $n++;   }   ?>

课题编号

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


回复讨论(解决方案)

功能类似你的查看,点击之后弄一个链接,然后把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");

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



$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行。

 课题列表";}	  else{	  echo "";	  }	  	  	if($row['surplus']==0)	     $ss="不可选";	else $ss="可选";      echo"	 ";   $n++;   }      ?>

课题编号

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

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'";
嗯,这下没有错误了,嘿嘿。但是那个可选不可选功能仍然没有实现,我应该再怎么修改下呢?
 课题列表";}	  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行

 

那不是都有了,还要什么?

那不是都有了,还要什么? 但是当我选择“可选”后,列表还是显示的全部可选和不可选的内容,并没有分类……

$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这是怎么回事呢?

 课题列表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='';

这是我最新修改的,把那几句换了位置后总记录数和总页数没什么变化。
 课题列表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");

这是我最新的代码,仍然无法实现的功能就是,它无法计算点击“可选”后的总条数和总页数。

 课题列表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 "";}	  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 "第页 "; ?>

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


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



忘记密码?

登录