小功能:下拉框里为不同的7天,复选框里为旅游点,每一天可以选择多个旅游点,每一天已选择的点其他天不能选,切换下拉框,当天选择好的点为以勾选状态
2017-05-25 23:36
447 查看
首先建表:主要有3表,1、行程点表,字段:行程点ID(id)、景点名称(title)、景点内容(content)。
2、资讯表:每条资讯对应不同的时间和景点。字段:资讯ID(id)、资讯标题(title)、资讯内容(content)。
3、行程表:字段:行程ID(id)、资讯表ID(zxid)、行程点ID(xcdid)、时间(days)。
控制器代码:public function ltinerary_setting(){
if(IS_POST){
$xcdid = $_POST['xcdid2'];//获取post过来的行程点ID
$arr = explode("/", $xcdid); //因为视图那边传过来的是由/拼接起来的行程点ID,要把它们转化成数组行程点
//因为某条资讯下的某一天的行程点可能会多次重复添加,所以每次添加之前会把之前添加的删掉
M('ltinerary_setting')->where(array('zxid'=>$_GET['zxid'],'days'=>$_POST['days']))->delete();
//因为行程点ID可能为一个或多个,所以要用foreach循环添加一次或多次
foreach($arr as $k=>$v){
$data['days'] = $_POST['days'];
$data['zxid'] = $_GET['zxid'];
$data['xcdid'] = $v;
$res=M('ltinerary_setting')->add($data);
}
if($res){
$this->success('添加成功!');
}else{
$this->error('添加失败!');
}
}else {
$zxid = $_GET['zxid'];
$news = M('System_trip')->select();
$this->assign('news',$news);
$this->assign('zxid',$zxid);
$this->display();
}
}
public function ajaxgetDate(){
$zxid=$_REQUEST["zxid"];
$d=$_REQUEST["d"];
//1获取到所有的行程点
$all = M('System_trip')->field('id,title')->select();
//2将行程点根据时间做过滤 比如选择的时间是day1 就需要将day1以外的那些已经被选中的行程点排除掉
//非当天所有已添加的行程点
$map_n['zxid']=array('eq',$zxid);
$map_n['days']=array('neq',$d);
$list_n = M('ltinerary_setting')->where($map_n)->select();
$ids=array();
foreach($list_n as $k=>$v){
$ids[]=$v['xcdid'];
}
//var_dump($ids);
//var_dump($list_n);
foreach($all as $k=>$v){
if(in_array($v['id'],$ids)){
unset($all[$k]);
}
}
//3找出day1的选中的点,设置状态
//当天所有已添加的行程点
$map_c['zxid']=array('eq',$zxid);
$map_c['days']=array('eq',$d);
$list_c = M('ltinerary_setting')->where($map_c)->select();
foreach($list_c as $k=>$v){
$idc[]=$v['xcdid'];
}
//var_dump($idc);
foreach($all as $k=>$v){
if(in_array($v['id'],$idc)){
$all[$k]['checked']="checked = 'checked'";
}else{
$all[$k]['checked']="";
}
}
foreach($all as $k=>$v){
$data[] = $v;
}
exit(json_encode(array('error_code'=>0,'error_reason'=>'获取成功','result'=>$data)));
//var_dump($all);
}
视图:<form id="myform" method="post" action="__SELF__" frame="true" refresh="true">
<table cellpadding="0" cellspacing="0" class="frame_form" width="100%">
<tr>
<th width="80">时间</th>
<td>
<select name="days" id="mySelect" >
<?php
for($i=1;$i<=7;$i++){
?><option value="<?php echo $i?>">第<?php echo $i?>天</option><?php
}
?>
</select>
</td>
</tr>
<tr>
<th width="80">行程点</th>
<td>
<input type="hidden" name="xcdid2"/>
<input type="hidden" id="zxid" value="{pigcms{$zxid}"/>
<div id="returngetData">
</div>
</td>
</tr>
</table>
<input id="settin
4000
g" type="submit" value="设定"/>
</form>
<script type="text/javascript">
function sub(d){
var zxid=$("#zxid").val();
//获取到时间
htmlObj=$.ajax({
url:"http://localhost/admin.php?g=System&c=Systemnews1&a=ajaxgetDate",
data:{"zxid":zxid,"d":d},
type: "POST",
dataType:"json",
success: function(msg){
var result = msg.result;
$('#returngetData').empty();
for(var i=0;i<result.length;i++){
$('#returngetData').append("<input type='checkbox' name='xcdid' " + result[i]['checked'] + " value='"+result[i]['id']+"' />"+" "+result[i]['title']+"<br>");
}
}
},'json');
}
$(document).ready(function(){
$('#mySelect').change(function(){
//alert($(this).children('option:selected').val());
var d = $(this).children('option:selected').val();
sub(d);
//var p1=$(this).children('option:selected').val();//这就是selected的值
});
sub(1);
$("#setting").click(function(){
var id_array=new Array();
$('input[name="xcdid"]:checked').each(function(){
id_array.push($(this).val());//向数组中添加元素
});
var idstr=id_array.join('/');//将数组元素连接起来以构建一个字符串
//alert(idstr);
$('input[name="xcdid2"]').val(idstr);
});
})
</script>
这个功能就实现了。。。。。
2、资讯表:每条资讯对应不同的时间和景点。字段:资讯ID(id)、资讯标题(title)、资讯内容(content)。
3、行程表:字段:行程ID(id)、资讯表ID(zxid)、行程点ID(xcdid)、时间(days)。
控制器代码:public function ltinerary_setting(){
if(IS_POST){
$xcdid = $_POST['xcdid2'];//获取post过来的行程点ID
$arr = explode("/", $xcdid); //因为视图那边传过来的是由/拼接起来的行程点ID,要把它们转化成数组行程点
//因为某条资讯下的某一天的行程点可能会多次重复添加,所以每次添加之前会把之前添加的删掉
M('ltinerary_setting')->where(array('zxid'=>$_GET['zxid'],'days'=>$_POST['days']))->delete();
//因为行程点ID可能为一个或多个,所以要用foreach循环添加一次或多次
foreach($arr as $k=>$v){
$data['days'] = $_POST['days'];
$data['zxid'] = $_GET['zxid'];
$data['xcdid'] = $v;
$res=M('ltinerary_setting')->add($data);
}
if($res){
$this->success('添加成功!');
}else{
$this->error('添加失败!');
}
}else {
$zxid = $_GET['zxid'];
$news = M('System_trip')->select();
$this->assign('news',$news);
$this->assign('zxid',$zxid);
$this->display();
}
}
public function ajaxgetDate(){
$zxid=$_REQUEST["zxid"];
$d=$_REQUEST["d"];
//1获取到所有的行程点
$all = M('System_trip')->field('id,title')->select();
//2将行程点根据时间做过滤 比如选择的时间是day1 就需要将day1以外的那些已经被选中的行程点排除掉
//非当天所有已添加的行程点
$map_n['zxid']=array('eq',$zxid);
$map_n['days']=array('neq',$d);
$list_n = M('ltinerary_setting')->where($map_n)->select();
$ids=array();
foreach($list_n as $k=>$v){
$ids[]=$v['xcdid'];
}
//var_dump($ids);
//var_dump($list_n);
foreach($all as $k=>$v){
if(in_array($v['id'],$ids)){
unset($all[$k]);
}
}
//3找出day1的选中的点,设置状态
//当天所有已添加的行程点
$map_c['zxid']=array('eq',$zxid);
$map_c['days']=array('eq',$d);
$list_c = M('ltinerary_setting')->where($map_c)->select();
foreach($list_c as $k=>$v){
$idc[]=$v['xcdid'];
}
//var_dump($idc);
foreach($all as $k=>$v){
if(in_array($v['id'],$idc)){
$all[$k]['checked']="checked = 'checked'";
}else{
$all[$k]['checked']="";
}
}
foreach($all as $k=>$v){
$data[] = $v;
}
exit(json_encode(array('error_code'=>0,'error_reason'=>'获取成功','result'=>$data)));
//var_dump($all);
}
视图:<form id="myform" method="post" action="__SELF__" frame="true" refresh="true">
<table cellpadding="0" cellspacing="0" class="frame_form" width="100%">
<tr>
<th width="80">时间</th>
<td>
<select name="days" id="mySelect" >
<?php
for($i=1;$i<=7;$i++){
?><option value="<?php echo $i?>">第<?php echo $i?>天</option><?php
}
?>
</select>
</td>
</tr>
<tr>
<th width="80">行程点</th>
<td>
<input type="hidden" name="xcdid2"/>
<input type="hidden" id="zxid" value="{pigcms{$zxid}"/>
<div id="returngetData">
</div>
</td>
</tr>
</table>
<input id="settin
4000
g" type="submit" value="设定"/>
</form>
<script type="text/javascript">
function sub(d){
var zxid=$("#zxid").val();
//获取到时间
htmlObj=$.ajax({
url:"http://localhost/admin.php?g=System&c=Systemnews1&a=ajaxgetDate",
data:{"zxid":zxid,"d":d},
type: "POST",
dataType:"json",
success: function(msg){
var result = msg.result;
$('#returngetData').empty();
for(var i=0;i<result.length;i++){
$('#returngetData').append("<input type='checkbox' name='xcdid' " + result[i]['checked'] + " value='"+result[i]['id']+"' />"+" "+result[i]['title']+"<br>");
}
}
},'json');
}
$(document).ready(function(){
$('#mySelect').change(function(){
//alert($(this).children('option:selected').val());
var d = $(this).children('option:selected').val();
sub(d);
//var p1=$(this).children('option:selected').val();//这就是selected的值
});
sub(1);
$("#setting").click(function(){
var id_array=new Array();
$('input[name="xcdid"]:checked').each(function(){
id_array.push($(this).val());//向数组中添加元素
});
var idstr=id_array.join('/');//将数组元素连接起来以构建一个字符串
//alert(idstr);
$('input[name="xcdid2"]').val(idstr);
});
})
</script>
这个功能就实现了。。。。。
相关文章推荐
- CotentResolver读取通讯录,通话记录,intent还可以切换到通话功能;clear注意清空本身还有等于该变量的其他变量;设定公共传入变量
- jquery如何书写一个根据下拉选择列表的选择值 控制其他标签时候显示的功能
- VR、AR或者其他模式,只是未来拟真世界的不同功能,你可以据情转换
- 点击tr实现选择checkbox功能,点击checkobx的时候阻止冒泡事件, jquery给checkbox添加checked属性或去掉checked属性不能使checkobx改变状态
- 购物车 结算功能,选中勾选状态可以显示所有选中的总价还有选中的数量,未选中不进行计算,删除功能
- easyui设置复选框 不可以选择 全选 也不能选择设置不可以选择的
- EasyUI datagrid 复选框可以多选但不能全选功能实现
- 下拉选择select和复选框checkbox的状态的各种方式
- JQuery实现Select下拉列表进行状态选择功能
- 设置下拉框不能选择并且可以传值
- jQuery实现Select下拉列表进行状态选择功能
- Button按钮实现按下不同状态切换功能
- 安卓复选框的问题------多个选项,选第一个则控制不能选择其他项目,选其他则不能选择第一项
- EasyRadius计费系统充值卡功能增强,充值卡有多种状态,可以任意选择,保证不少掉一分钱
- nc7下某个用户某个节点有多个模板,可以通过代码实现通过选择不同的业务流程来调用不同的模板吗?
- 表单中选择多个复选框的方法
- [原] combobox如何让用户不能输入只能从下拉列表里面选择
- windows mediaPlayer 图片切换(也适用其他插件的状态变化):
- 本机可以访问iis服务器,其他机器不能访问?
- 最新增加功能 - "开发商"可以设置不同数量产品授权的不同价格