Heim >Backend-Entwicklung >PHP-Tutorial >php条件下如何实现点击左边记录名,具体内容在页面右边显示?
我做了一个网页,左边的一列是逐条显示的记录名,是我通过循环语句从mysql中读取并每行显示出来的。而右边是每条记录的具体内容框架(就是很多空框)。希望实现的目标是:点击左边任何一条记录名称,在右边的各个空框中就具体显示出该记录具体内容(其实就是每个字段的内容给填充到每个空框中去)。
该用怎样的简单框架实现左边的记录名称可点击呢?然后又传递什么变量来控制读取记录,把具体记录信息从mysql读取出来呢(貌似有了该记录内容,显示在各个空框中不难,我可以完成这一步)?当然该每条记录的具体内容在mysql都已经存在,查询即可。
这里的大牛们请多多帮忙啊,这是我第一次问问,事关紧急啊。谢谢。
用ajax做吧
当你点击左侧的记录名时,将记录名用ajax传到后台去查询对应的全部信息 返回后填充至框框内
谢谢回复。
采用ajax,小弟是新手,那大概用到哪些重要语句或者关键点,甚至有没有链接案例啥的让我琢磨琢磨呢?
万分感激啊。
稍等我给你写个demo
万分感谢先。
demo地址 http://www.colg.biz/demo/d1.php
代码
显示页
<?php header("Content-Type:text/html;charset=utf-8"); mysql_connect('localhost','colg_demo','colg__'); mysql_select_db('colg_demo'); function getdata($sql) { $result=mysql_query($sql); if($result)$count = mysql_num_rows($result); for($i=0;$i<$count;$i++) { mysql_data_seek($result,$i); $data[$i] = mysql_fetch_assoc($result); } return $data; } $data = getdata("select * from demo"); ?><style type="text/css"> .left{float:left;width:100px;border:1px solid grey;height:300px;} .right{float:left;width:800px;border:1px solid grey;height:300px;margin-left:15px;} .left_button{margin:5px;border:1px solid #ccc;cursor:pointer;} td{margin:1px;border:1px solid #ccc;}</style><script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script><script type="text/javascript"> $(document).ready(function(){ $(".left_button").click(function(){ $(this).css("background","#EEE"); $(this).siblings().css("background","white"); var n = $(this).text(); $.ajax({ type:"get", url:"ajax.php", data:{ n:n }, success:function(msg){ msg = eval("("+msg+")") $(".show_tr").html(msg); } }); }); }); </script><div class="left"> <?php foreach($data as $each){?> <div class="left_button"><?php echo $each['col3'];?></div> <?php } ?></div><div class="right"> <table> <tr> <td>id</td> <td>col1</td> <td>col2</td> <td>col3</td> <td>col4</td> <tr> <tr class="show_tr"> <td> </td> <td> </td> <td> </td> <td> </td> <td> </td> <tr> </table></div>
<?php header("Content-Type:text/html;charset=utf-8"); mysql_connect('localhost','colg_demo','colg__'); mysql_select_db('colg_demo'); mysql_query("set names utf8"); function getdata($sql) { $result=mysql_query($sql); if($result)$count = mysql_num_rows($result); for($i=0;$i<$count;$i++) { mysql_data_seek($result,$i); $data[$i] = mysql_fetch_assoc($result); } return $data; } if($_GET){ $n = $_GET['n']; $data = getdata("select * from demo where col3 = '$n'"); if($data){ $html = ""; foreach($data[0] as $each){ $html .= "<td>".$each."</td>"; } } echo json_encode($html);exit; }?>
汗...账号密码都泄露了....
改之
非常感谢!
下个问题是:怎么把分数给你?是不是只是结贴即可?
追问:
你这里分为主程序和处理页面程序,第二个处理页面程序应该就是ajax.php吧? 似乎应该要求改ajax.php和住程序处在同一个目录下,对吧?
追问:
你这里分为主程序和处理页面程序,第二个处理页面程序应该就是ajax.php吧? 似乎应该要求改ajax.php和住程序处在同一个目录下,对吧?
完全可以不同一个目录 写路径就好了 研究下"html路径"
非常感谢,这位大牛,这正是我想要的效果。
我再琢磨一下细节,若有细节问题,还请不吝赐教。
不客气 都是新人,学习中 多多交流 共同进步 有问题直接提,可以引用我的回复这样我可以及时看到提醒
demo地址 http://www.colg.biz/demo/d1.php
代码
显示页
<?php header("Content-Type:text/html;charset=utf-8"); mysql_connect('localhost','colg_demo','colg__'); mysql_select_db('colg_demo'); function getdata($sql) { $result=mysql_query($sql); if($result)$count = mysql_num_rows($result); for($i=0;$i<$count;$i++) { mysql_data_seek($result,$i); $data[$i] = mysql_fetch_assoc($result); } return $data; } $data = getdata("select * from demo"); ?><style type="text/css"> .left{float:left;width:100px;border:1px solid grey;height:300px;} .right{float:left;width:800px;border:1px solid grey;height:300px;margin-left:15px;} .left_button{margin:5px;border:1px solid #ccc;cursor:pointer;} td{margin:1px;border:1px solid #ccc;}</style><script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script><script type="text/javascript"> $(document).ready(function(){ $(".left_button").click(function(){ $(this).css("background","#EEE"); $(this).siblings().css("background","white"); var n = $(this).text(); $.ajax({ type:"get", url:"ajax.php", data:{ n:n }, success:function(msg){ msg = eval("("+msg+")") $(".show_tr").html(msg); } }); }); }); </script><div class="left"> <?php foreach($data as $each){?> <div class="left_button"><?php echo $each['col3'];?></div> <?php } ?></div><div class="right"> <table> <tr> <td>id</td> <td>col1</td> <td>col2</td> <td>col3</td> <td>col4</td> <tr> <tr class="show_tr"> <td> </td> <td> </td> <td> </td> <td> </td> <td> </td> <tr> </table></div>
<?php header("Content-Type:text/html;charset=utf-8"); mysql_connect('localhost','colg_demo','colg__'); mysql_select_db('colg_demo'); mysql_query("set names utf8"); function getdata($sql) { $result=mysql_query($sql); if($result)$count = mysql_num_rows($result); for($i=0;$i<$count;$i++) { mysql_data_seek($result,$i); $data[$i] = mysql_fetch_assoc($result); } return $data; } if($_GET){ $n = $_GET['n']; $data = getdata("select * from demo where col3 = '$n'"); if($data){ $html = ""; foreach($data[0] as $each){ $html .= "<td>".$each."</td>"; } } echo json_encode($html);exit; }?>
你是希望点击左侧后 右边两项都未选还是已选中其中一项?
它们的差别就是后者在选中的那个input标签内有一个 checked="checked" 而已
你是希望点击左侧后 右边两项都未选还是已选中其中一项?
它们的差别就是后者在选中的那个input标签内有一个 checked="checked" 而已
现有的输入表单大致为:
form action="main/inputDriver.php" method="post">
选项一
选项二
你ajax采用"PHP返回全部HTML"还是采用"PHP返回数组用js来处理"?
如果是前者 直接输出为
form action="main/inputDriver.php" method="post">
选项一
选项二
你ajax采用"PHP返回全部HTML"还是采用"PHP返回数组用js来处理"?
如果是前者 直接输出为
form action="main/inputDriver.php" method="post">
选项一
选项二
你ajax采用"PHP返回全部HTML"还是采用"PHP返回数组用js来处理"?
如果是前者 直接输出为
form action="main/inputDriver.php" method="post">
选项一
选项二
demo地址 http://www.colg.biz/demo/d1.php
代码
显示页
<?php header("Content-Type:text/html;charset=utf-8"); mysql_connect('localhost','colg_demo','colg__'); mysql_select_db('colg_demo'); function getdata($sql) { $result=mysql_query($sql); if($result)$count = mysql_num_rows($result); for($i=0;$i<$count;$i++) { mysql_data_seek($result,$i); $data[$i] = mysql_fetch_assoc($result); } return $data; } $data = getdata("select * from demo"); ?><style type="text/css"> .left{float:left;width:100px;border:1px solid grey;height:300px;} .right{float:left;width:800px;border:1px solid grey;height:300px;margin-left:15px;} .left_button{margin:5px;border:1px solid #ccc;cursor:pointer;} td{margin:1px;border:1px solid #ccc;}</style><script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script><script type="text/javascript"> $(document).ready(function(){ $(".left_button").click(function(){ $(this).css("background","#EEE"); $(this).siblings().css("background","white"); var n = $(this).text(); $.ajax({ type:"get", url:"ajax.php", data:{ n:n }, success:function(msg){ msg = eval("("+msg+")") $(".show_tr").html(msg); } }); }); }); </script><div class="left"> <?php foreach($data as $each){?> <div class="left_button"><?php echo $each['col3'];?></div> <?php } ?></div><div class="right"> <table> <tr> <td>id</td> <td>col1</td> <td>col2</td> <td>col3</td> <td>col4</td> <tr> <tr class="show_tr"> <td> </td> <td> </td> <td> </td> <td> </td> <td> </td> <tr> </table></div>
<?php header("Content-Type:text/html;charset=utf-8"); mysql_connect('localhost','colg_demo','colg__'); mysql_select_db('colg_demo'); mysql_query("set names utf8"); function getdata($sql) { $result=mysql_query($sql); if($result)$count = mysql_num_rows($result); for($i=0;$i<$count;$i++) { mysql_data_seek($result,$i); $data[$i] = mysql_fetch_assoc($result); } return $data; } if($_GET){ $n = $_GET['n']; $data = getdata("select * from demo where col3 = '$n'"); if($data){ $html = ""; foreach($data[0] as $each){ $html .= "<td>".$each."</td>"; } } echo json_encode($html);exit; }?>
今天太晚了明天白天给你写.... 晚上的时间都给WOW了..
今天太晚了明天白天给你写.... 晚上的时间都给WOW了..
这里先谢谢了。
demo地址 http://www.colg.biz/demo/d1.php
表结构和内容
显示页面代码
<?php //PHP区域 header("Content-Type:text/html;charset=utf-8"); mysql_connect('localhost','xxxxxx','xxxxxxxxxx'); mysql_select_db('xxxxxxxx'); function getdata($sql) { $result=mysql_query($sql); if($result)$count = mysql_num_rows($result); for($i=0;$i<$count;$i++) { mysql_data_seek($result,$i); $data[$i] = mysql_fetch_assoc($result); } return $data; } $data = getdata("select * from demo");?><!--CSS区域--><style type="text/css"> .left{float:left;width:100px;border:1px solid grey;height:300px;} .right{float:left;width:800px;border:1px solid grey;height:300px;margin-left:15px;} .left_button{margin:5px;border:1px solid #ccc;cursor:pointer;} td{margin:1px;border:1px solid #ccc;}</style><!--JS区域--><script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script><script type="text/javascript"> $(document).ready(function(){ $(".left_button").click(function(){ $(this).css("background","#EEE"); $(this).siblings().css("background","white"); var n = $(this).text(); $.ajax({ type:"get", url:"ajax.php", data:{ n:n }, success:function(msg){ msg = eval("("+msg+")"); //将json字符串转化为js数组对象 $(".show_tr > td:eq(0)").text(msg.id); //将数组的每个元素写到指定位置 $(".show_tr > td:eq(1)").text(msg.col1); $(".show_tr > td:eq(2)").text(msg.col2); $(".show_tr > td:eq(3)").text(msg.col3); $(".show_tr > td:eq(4)").text(msg.col4); var gender = msg.gender; if(gender == 1){ //如果为男,第一个单选被选中 $(".show_tr > td:eq(5) > input[name='gender']:eq(0)").attr("checked","checked"); }else{ //如果为女 $(".show_tr > td:eq(5) > input[name='gender']:eq(1)").attr("checked","checked"); } } }); }); }); </script><!--html区域--><div class="left"> <?php foreach($data as $each){?> <div class="left_button"><?php echo $each['col3'];?></div> <?php } ?></div><div class="right"> <table> <tr> <td>id</td> <td>col1</td> <td>col2</td> <td>col3</td> <td>col4</td> <td>性别</td> <tr> <tr class="show_tr"> <td> </td> <td> </td> <td> </td> <td> </td> <td> </td> <td><input type="radio" name="gender">男<input type="radio" name="gender">女</td> <tr> </table></div>
<?php header("Content-Type:text/html;charset=utf-8"); mysql_connect('localhost','xxxxxxxx','xxxxxxxxx'); mysql_select_db('xxxxxxxx'); mysql_query("set names utf8"); function getdata($sql) { $result=mysql_query($sql); if($result)$count = mysql_num_rows($result); for($i=0;$i<$count;$i++) { mysql_data_seek($result,$i); $data[$i] = mysql_fetch_assoc($result); } return $data; } if($_GET){ $n = $_GET['n']; $data = getdata("select * from demo where col3 = '$n'"); echo json_encode($data[0]);exit; }?>
用ajax做吧
当你点击左侧的记录名时,将记录名用ajax传到后台去查询对应的全部信息 返回后填充至框框内
demo地址 http://www.colg.biz/demo/d1.php
表结构和内容
显示页面代码
<?php //PHP区域 header("Content-Type:text/html;charset=utf-8"); mysql_connect('localhost','xxxxxx','xxxxxxxxxx'); mysql_select_db('xxxxxxxx'); function getdata($sql) { $result=mysql_query($sql); if($result)$count = mysql_num_rows($result); for($i=0;$i<$count;$i++) { mysql_data_seek($result,$i); $data[$i] = mysql_fetch_assoc($result); } return $data; } $data = getdata("select * from demo");?><!--CSS区域--><style type="text/css"> .left{float:left;width:100px;border:1px solid grey;height:300px;} .right{float:left;width:800px;border:1px solid grey;height:300px;margin-left:15px;} .left_button{margin:5px;border:1px solid #ccc;cursor:pointer;} td{margin:1px;border:1px solid #ccc;}</style><!--JS区域--><script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script><script type="text/javascript"> $(document).ready(function(){ $(".left_button").click(function(){ $(this).css("background","#EEE"); $(this).siblings().css("background","white"); var n = $(this).text(); $.ajax({ type:"get", url:"ajax.php", data:{ n:n }, success:function(msg){ msg = eval("("+msg+")"); //将json字符串转化为js数组对象 $(".show_tr > td:eq(0)").text(msg.id); //将数组的每个元素写到指定位置 $(".show_tr > td:eq(1)").text(msg.col1); $(".show_tr > td:eq(2)").text(msg.col2); $(".show_tr > td:eq(3)").text(msg.col3); $(".show_tr > td:eq(4)").text(msg.col4); var gender = msg.gender; if(gender == 1){ //如果为男,第一个单选被选中 $(".show_tr > td:eq(5) > input[name='gender']:eq(0)").attr("checked","checked"); }else{ //如果为女 $(".show_tr > td:eq(5) > input[name='gender']:eq(1)").attr("checked","checked"); } } }); }); }); </script><!--html区域--><div class="left"> <?php foreach($data as $each){?> <div class="left_button"><?php echo $each['col3'];?></div> <?php } ?></div><div class="right"> <table> <tr> <td>id</td> <td>col1</td> <td>col2</td> <td>col3</td> <td>col4</td> <td>性别</td> <tr> <tr class="show_tr"> <td> </td> <td> </td> <td> </td> <td> </td> <td> </td> <td><input type="radio" name="gender">男<input type="radio" name="gender">女</td> <tr> </table></div>
<?php header("Content-Type:text/html;charset=utf-8"); mysql_connect('localhost','xxxxxxxx','xxxxxxxxx'); mysql_select_db('xxxxxxxx'); mysql_query("set names utf8"); function getdata($sql) { $result=mysql_query($sql); if($result)$count = mysql_num_rows($result); for($i=0;$i<$count;$i++) { mysql_data_seek($result,$i); $data[$i] = mysql_fetch_assoc($result); } return $data; } if($_GET){ $n = $_GET['n']; $data = getdata("select * from demo where col3 = '$n'"); echo json_encode($data[0]);exit; }?>
外边方框不见了? 那你仔细观察下html结构 只改需要改的数据不动其他的东西 只改数据绝对不会引起方框不见吧 除非是长度高度问题导致CSS没有约束到
2.eq(1) 找的是第二个 eq(2) 找的是第三个 你确定你没写错?
另外可以这样写
var type = msg.type;
if(type == 1)
{
$(".show_1 > input[name='type']:eq(1)").attr("checked","checked");
$(".show_1 > input[name='type']:eq(2)").removeAttr("checked");
}
else
{
$(".show_1 > input[name='type']:eq(2)").attr("checked","checked");
$(".show_1 > input[name='type']:eq(1)").removeAttr("checked");
}
另外 type之类的关键字用起来看得心惊肉跳的..... 希望这种地方不要出问题
外边方框不见了? 那你仔细观察下html结构 只改需要改的数据不动其他的东西 只改数据绝对不会引起方框不见吧 除非是长度高度问题导致CSS没有约束到
2.eq(1) 找的是第二个 eq(2) 找的是第三个 你确定你没写错?
另外可以这样写
var type = msg.type;
if(type == 1)
{
$(".show_1 > input[name='type']:eq(1)").attr("checked","checked");
$(".show_1 > input[name='type']:eq(2)").removeAttr("checked");
}
else
{
$(".show_1 > input[name='type']:eq(2)").attr("checked","checked");
$(".show_1 > input[name='type']:eq(1)").removeAttr("checked");
}
另外 type之类的关键字用起来看得心惊肉跳的..... 希望这种地方不要出问题
谢谢先。
我这个第一选项赋值为1,第二选项赋值为2。我按照你给的语句运行了,结果是:每次值为2时,两个选项为空,值为1时,第二个选项为选中(但事实上,第二个选项应该值为2)。
我想哪里的细节正好有差错1.下面是代码(我把变量type改为driverType了):
var driverType = msg.type;
if(driverType == 1)
{
$(".show_1 > input[name='type']:eq(1)").attr("checked","checked");
$(".show_1 > input[name='type']:eq(2)").removeAttr("checked");
}
lse
{
$(".show_1 > input[name='type']:eq(2)").attr("checked","checked");
$(".show_1 > input[name='type']:eq(1)").removeAttr("checked");
}
2.至于方框不见了,运行的结果为:
但实际上,原来的状态为:
html部分的代码为:
driver type: |
外边方框不见了? 那你仔细观察下html结构 只改需要改的数据不动其他的东西 只改数据绝对不会引起方框不见吧 除非是长度高度问题导致CSS没有约束到
2.eq(1) 找的是第二个 eq(2) 找的是第三个 你确定你没写错?
另外可以这样写
var type = msg.type;
if(type == 1)
{
$(".show_1 > input[name='type']:eq(1)").attr("checked","checked");
$(".show_1 > input[name='type']:eq(2)").removeAttr("checked");
}
else
{
$(".show_1 > input[name='type']:eq(2)").attr("checked","checked");
$(".show_1 > input[name='type']:eq(1)").removeAttr("checked");
}
另外 type之类的关键字用起来看得心惊肉跳的..... 希望这种地方不要出问题
晕死,第一个问题解决了。应该是eq(0)和eq(1)。针对第二个demo我以为这是指选项对应的值,晕死。改回来了。
这个eq(n) 指的是查找符合条件的第n项,从0开始, 比如你这个 就是eq(0),而第二个就是eq(1)
跟你input的value值没有任何的关系
你:eq(2) 找的就是第三项 而没有第三个input自然找不到了
第二个可能你原来所谓的方框是input? 把这段HTML代码提出来看看
你需要 jquery手册
http://pan.baidu.com/share/link?shareid=1727812312&uk=3909167861
这个eq(n) 指的是查找符合条件的第n项,从0开始, 比如你这个 就是eq(0),而第二个就是eq(1)
跟你input的value值没有任何的关系
你:eq(2) 找的就是第三项 而没有第三个input自然找不到了
第二个可能你原来所谓的方框是input? 把这段HTML代码提出来看看
事情急了,说的也乱了。现在解决了单选项的问题,但方框的问题还没有解决。我也搞不清楚哪里出了问题。
你需要 jquery手册
http://pan.baidu.com/share/link?shareid=1727812312&uk=3909167861
谢谢啊,受教。我刚入行没多久,正需要这个。
这个eq(n) 指的是查找符合条件的第n项,从0开始, 比如你这个 就是eq(0),而第二个就是eq(1)
跟你input的value值没有任何的关系
你:eq(2) 找的就是第三项 而没有第三个input自然找不到了
第二个可能你原来所谓的方框是input? 把这段HTML代码提出来看看
|
你以前是input的边框 现在input都被你替换掉了
有两个解决方案 一是直接把数值插入input的value中
二是还按现在的写 然后给td加边框让其看起来像之前的
给你写的td.html(xxx) 并不是一定要死板的这么写 你td里边有内容 就随之变化
你以前是input的边框 现在input都被你替换掉了
有两个解决方案 一是直接把数值插入input的value中
二是还按现在的写 然后给td加边框让其看起来像之前的
给你写的td.html(xxx) 并不是一定要死板的这么写 你td里边有内容 就随之变化
把数值插入input的value中,这个又应该怎么改呢?
你说“给你写的td.html(xxx) 并不是一定要死板的这么写 你td里边有内容 就随之变化”,意思其实是不仅td可以用,像
你以前是input的边框 现在input都被你替换掉了
有两个解决方案 一是直接把数值插入input的value中
二是还按现在的写 然后给td加边框让其看起来像之前的
给你写的td.html(xxx) 并不是一定要死板的这么写 你td里边有内容 就随之变化
把数值插入input的value中,这个又应该怎么改呢?
你说“给你写的td.html(xxx) 并不是一定要死板的这么写 你td里边有内容 就随之变化”,意思其实是不仅td可以用,像
可以混用 都是选择器而已对jquery来说并没有任何区别
比如 $(".show_tr > td:eq(1)").text(msg.col1);
既然你td内有input并且不能把input粗暴的替换掉
可以写成 $(".show_tr > td:eq(1) >input").val(msg.col1);
你先试试 jquery的选择器是非常灵活的 可以各种套用