如何从checkbox和下拉list中读取信息,并用于查询数据库呢?
我是新手,可能会问到对这里大牛来说简单的基础问题,请多多赐教。
问题是:如下图一个简单页面,
该页面第一行是一个可选择过去时间的日期选择表(计划用datepicker),下面是我从数据库读取的各个记录并用表格的形式列出。每条记录后面都有一个<input type="checkbox">这样的一个checkbox。在该表的下方,我预计设定一个按钮(按钮没有画出,预计采用<input type="button" value="change">的形式,针对下面实现的功能是不是有更好的button实现代码?)。
我想实现的功能是:点击两个checkbox,并且限定只能点击两个checkbox(否则跳出一个alert的警告窗),再点击按钮,改变这两个记录的位置(序号不变)。预想的功能过程是:点击按钮后,此时把该记录的No.的数值和date下拉表中的日期变量传递出来,据此查询数据库,并对调这两个记录的序号,再在前台列表展现出。
我的主要困难是:在一个完整的页面上肯定有多个类似Car 1的列表,这意味着有很多checkbox。如何从被点击checkbox的这条记录中读取No.数值,并且获取下拉表中的日期数值,并用于查询数据库?查询数据库的后台程序我应该能做到,其实也很简单。但前台如何从页面抓取这两个数据,对我是个问题。
请大牛们多多帮忙。因为小弟刚接触js\ajax\jquery,一直很头疼,所以小弟在这里恳求:如果可以的话,能否给出核心问题的关键代码片段或者指出类似网上案例,这样方便小弟临摹。
万分感谢啊!
[解决办法]
<input type="checkbox" name=??? value=???>
name 用于服务器端识别对象
value 应为数据库中的唯一识别标识
[解决办法]
我最近正好做一个东西 跟你上次跟我提到的需求还有这次的问题有点接近...
不过显示效果还没做好,操作也略复杂.......就不给你看demo了
你说的这个 我大致看了下 是不是说 有不定数量的值要传给后台,而且name啊什么的可能都不同
我是这样做的(直接拿我的代码给你看吧,,,
//向数据库提交添加完的数据
function queding_item(item_id,obj){
var shuxing_str = "";
$.each($("input.shuxing_col"),function(i ,n ){
var shuxing_col = $(n).attr("shuxing_col");
var num = $(n).val();
if(i == 0){
shuxing_str += '{';
}
shuxing_str += '"'+shuxing_col+'":"'+num+'"';
if(i < $("input.shuxing_col").length -1){
shuxing_str += ',';
}else{
shuxing_str += '}';
}
});
$.ajax({
type:"post",
url:"select.php",
data:{
shuxing_str:shuxing_str,
item_id:item_id,
action:"queding_item"
},
success:function(msg){
if(msg > 0){
xuanding(msg);
}
}
});
}
我获得所有符合要求的元素,即input并且class为shuxing_col
然后用$.each()来循环这个符合要求的元素的集合
然后将需要的值拼成一个json字符串(可以转化成数组的那种json字符串
比如你可以用name做键名,value做键值
传递给PHP
PHP拿到后,用json_decode转化成数组
循环这个数组然后进行查询..
extract($_POST);
//用户自己添加属性提交
if($_POST && $_POST['action']=="queding_item"){
$shuxingArr = json_decode($shuxing_str,true);//将字符串转化为数组
$ziduan_str = "item_id";//要插入的字段
$ziduanzhi_str = "'".$item_id."'";//要插入的字段的值
if($shuxingArr){
$i = 1;
$ziduan_str .= ",";//要插入的字段
$ziduanzhi_str .= ",";//要插入的字段的值
foreach($shuxingArr as $key=>$each){
$ziduan_str .= $key;
$ziduanzhi_str .= "'".$each."'";
if($i < count($shuxingArr)){
$ziduan_str .= ",";
$ziduanzhi_str .= ",";
}
$i ++;
}
}
$sql = "insert into bigitem ($ziduan_str) values($ziduanzhi_str)";
if(mysql_query($sql)){
echo mysql_insert_id();
}else{
echo 0;
}
}
恩可能有一些无用代码 不过这个思路我觉得你可以试试(用$.each()来循环未知个数的符合条件的元素,拼成字符串传递给PHP,PHP转化为数组来处理)
[解决办法]
<?php
$news=array(
array('id'=>1,'title'=>'abc'),
array('id'=>2,'title'=>'def'),
array('id'=>3,'title'=>'ghi'),
array('id'=>4,'title'=>'jkl'),
);
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script>
<title>无标题文档</title>
</head>
<body>
<?php foreach (!empty($news)?$news:array() as $n):?>
<dl class="list_item">
<dd>
<input type="hidden" name="id" value="<?php echo $n['id'];?>" />
<a class="item_title" href="javascript:;"><?php echo $n['title'];?></a>
</dd>
</dl>
<?php endforeach;?>
<script type="text/javascript">
jQuery(function($){
$('.item_title').click(function(e){
e.preventDefault();
alert($(this).parent().find('input').val());
});
});
</script>
</body>
</html>
------解决方案--------------------
<input type="checkbox" name=??? value=??? a1='' a2='' a3=.....>
设置多个属性值。就可以只遍历 checkbox 就可以获取到需要的数据。
[解决办法]
<div style="display:none">....</div>