精确控制php传值

garcon1986 2009-12-16 07:05:20

<script language="JavaScript">
function toggle(id,id2,id3) {
var state = document.getElementById(id).style.display;
if (state == 'block') {
document.getElementById(id).style.display = 'none';
if (id2 != undefined)document.getElementById(id2).style.display = 'none';
if (id3 != undefined)document.getElementById(id3).style.display = 'none';
} else {
document.getElementById(id).style.display = 'block';
}
}
</script>
<style type="text/css">
#main{
position:relative;
top:20px;
left:20px;
width:200px;
background: lightblue;
}
#hidden {
position:relative;
top:5px;
left:280px;
width:200px;
background: lightgrey;
display: none;
}
#hidden2 {
position:relative;
top:-12px;
left:580px;
width:200px;
background: lightgreen;
display: none;
}
#hidden3 {
position:relative;
top:100px;
left:20px;
width:200px;
background: lightpink;
display: none;
}
</style>
<?php
error_reporting(E_ALL ^ E_NOTICE);
include("./conn/connect.php");
$query = "SELECT * FROM entreprise ORDER BY id";
$result = mysql_query($query) or die("result failed: ".mysql_error());

?>
<div id="main">
<?php
echo "<ul>";
while($row = mysql_fetch_assoc($result)){
echo "<li onclick=\"toggle('hidden','hidden2','hidden3');\">".$row['name'].'<li>';
$query2 = "SELECT * FROM site WHERE eid = '".$row['id']."'";
//echo $query2;
$result2 = mysql_query($query2) or die("query2 result error".mysql_error());
}
echo "</ul>";
?>
</div>
<div id="hidden">
<?php
echo "<ul>";
while($row2 = mysql_fetch_assoc($result2)){
echo "<li onclick=\"toggle('hidden2','hidden3')\">".$row2['name'].'< >';
$query3 = "SELECT * FROM salarie WHERE siteid =".$row2['id'];
//echo $query3;
$result3 = mysql_query($query3) or die("query3 result error".mysql_error());
}
echo "</ul>";
?>
</div>
<div id="hidden2">
<?php
echo "<ul>";
while($row3 = mysql_fetch_assoc($result3)){
echo "<li onclick=\"toggle('hidden3')\">".$row3['prenom'].'< >';
$query4 = "SELECT * FROM salarie WHERE id =".$row3['id'];
$result4 = mysql_query($query4) or die("query4 result error".mysql_error());
}
echo "</ul>";
?>
</div>
<div id="hidden3">
<?php
echo "<ul>";
while($row4 = mysql_fetch_assoc($result4)){
echo "<li>".$row4['prenom'].'< >';
echo "<li>".$row4['nom'].'< >';
}
echo "</ul>";
?>
</div>

如下图所示,我点击entreprise1或者entreprise2,都显示e2site1和e2site2。也就是说,总显示当前列表中最后一个元素对应的site。
http://hiphotos.baidu.com/%D5%E6%CE%D2%CE%DE%CE%B7/pic/item/2d644b8f8f5e5eca503d922f.jpg

请问,大家有什么解决方法?分析过程中只考虑hidden, hidden2如果控制即可,hidden3和hidden4是一样的过程。谢谢。
...全文
300 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
garcon1986 2010-01-27
  • 打赏
  • 举报
回复
结贴啦。谢谢各位。
YHL27 2010-01-06
  • 打赏
  • 举报
回复
sf!
garcon1986 2010-01-06
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 default7 的回复:]
好乱的代码哟~~~~
混合得比较厉害。
[/Quote]

是的,混合的比较厉害,所以考虑用ajax了。谁能帮忙看看改一下???
  • 打赏
  • 举报
回复
好乱的代码哟~~~~
混合得比较厉害。
garcon1986 2010-01-06
  • 打赏
  • 举报
回复
有没有ajax的解决方案呢?
garcon1986 2010-01-05
  • 打赏
  • 举报
回复
请问该怎么用呢?
是不是要修改这一句: while($row = mysql_fetch_array($result)){

大侠们指点一下吧。
garcon1986 2010-01-05
  • 打赏
  • 举报
回复
如果把}放到最后,就会只显示enterprise1而在result4的结果后显示enterprise2,3等等。

用array[]得到结果,怎么用呢?
hahaqingdao 2010-01-05
  • 打赏
  • 举报
回复
学习!
jaxio 2010-01-05
  • 打赏
  • 举报
回复
补充:$result2只在这里执行了一次。。
 while($row2 = mysql_fetch_assoc($result2)){
echo "<li onclick=\"toggle('hidden2','hidden3')\">".$row2['name'].'< >';
$query3 = "SELECT * FROM salarie WHERE siteid =".$row2['id'];
//echo $query3;
$result3 = mysql_query($query3) or die("query3 result error".mysql_error());
}
jaxio 2010-01-05
  • 打赏
  • 举报
回复

  
while($row = mysql_fetch_assoc($result)){
echo "<li onclick=\"toggle('hidden','hidden2','hidden3');\">".$row['name'].'<li>';
$query2 = "SELECT * FROM site WHERE eid = '".$row['id']."'";
//echo $query2;
$result2 = mysql_query($query2) or die("query2 result error".mysql_error());
}

最后一个$result遍历记录得出来的$result2(而且只执行一次) ,同样$result3,$result4也一样。 你的代码就是这样的。。当然你可以把 }放在最后$result4会得到所有的你想要的
,但是那样你的这个页面的执行会很慢。
个人建议你用array[]得出你想要的结果然后显示。。
garcon1986 2010-01-05
  • 打赏
  • 举报
回复
有人吗
garcon1986 2009-12-23
  • 打赏
  • 举报
回复
谁能帮忙看看?
garcon1986 2009-12-23
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 jnkc 的回复:]
你的静态页面效果中每个 <ul>中不同的li所控制的层应该是不同的,但是你用php的while输出记录时每个li所控制的层都是相同的!
你从浏览器中查看php输出的源文件就能看出和你手工效果页面在toggle内参数是有区别的。
[/Quote]

区别是什么?我现在把<div id="main">改为:<div id="main" onclick=\"toggle('hidden','hidden2','hidden3');\"> 效果是一样的。

不知道如何改正能每次点击显示相对应的内容。 像enterprise1->e1_site1->e1_site1_salarie1这样。

江南昆虫 2009-12-22
  • 打赏
  • 举报
回复
你的静态页面效果中每个<ul>中不同的li所控制的层应该是不同的,但是你用php的while输出记录时每个li所控制的层都是相同的!
你从浏览器中查看php输出的源文件就能看出和你手工效果页面在toggle内参数是有区别的。
YHL27 2009-12-22
  • 打赏
  • 举报
回复
learn,hold on
garcon1986 2009-12-21
  • 打赏
  • 举报
回复
帮帮忙啊。
江南昆虫 2009-12-17
  • 打赏
  • 举报
回复
你只说出了错误的表现,没告诉大家正确的显示啊!显示隐藏层只是客户端表现,先用静态页面做出正确的效果再修改成php输出吧。
garcon1986 2009-12-17
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 jnkc 的回复:]
你只说出了错误的表现,没告诉大家正确的显示啊!显示隐藏层只是客户端表现,先用静态页面做出正确的效果再修改成php输出吧。
[/Quote]

恩,效果已经做出来了,当你把div中的php代码都注释掉以后能看到正确的效果。

如果访问我提供的图片,能看到问题所在:

我想要的结果是点击entreprise1会弹出entreprise1内的site,但是现在无论是点击entreprise1,还是entreprise2显示的都是e2_site1和e2_site2。也就是说,总是显示列表最后一项对应的站点e2site1,e2site2。
依次类推,点击站点栏的任何项都显示e2_site2_salarie1,e2_site2_salarie2,e2_site2_salarie3。

大家有什么看法?
garcon1986 2009-12-17
  • 打赏
  • 举报
回复
自己定一下吧。多谢啦。

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧