首先建表:主要有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="setting" 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>
这个功能就实现了。。。。。