小功能:下拉框里为不同的7天,复选框里为旅游点,每一天可以选择多个旅游点,每一天已选择的点其他天不能选,切换下拉框,当天选择好的点为以勾选状态

本文介绍了一个基于PHP的行程规划系统的实现方法,包括三个主要表的设计:行程点表、资讯表和行程表。此外,还提供了控制器代码示例,用于处理行程点的添加和更新操作,并通过Ajax获取和过滤行程点数据。

首先建表:主要有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']+"' />"+"&nbsp;&nbsp;"+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>



这个功能就实现了。。。。。

import javax.swing.*; import java.awt.*; public class ComponentAndLayoutDemo { // 注册窗口类 static class RegisterFrame extends JFrame { public RegisterFrame() { setTitle("注册窗口"); setSize(350, 400); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setLocationRelativeTo(null); // 使用网格布局管理器 JPanel panel = new JPanel(new GridBagLayout()); GridBagConstraints gbc = new GridBagConstraints(); gbc.insets = new Insets(5, 5, 5, 5); gbc.anchor = GridBagConstraints.WEST; // 用户名标签和输入框 gbc.gridx = 0; gbc.gridy = 0; panel.add(new JLabel("用户名:"), gbc); gbc.gridx = 1; panel.add(new JTextField(20), gbc); // 密码标签和输入框 gbc.gridx = 0; gbc.gridy = 1; panel.add(new JLabel("密码:"), gbc); gbc.gridx = 1; panel.add(new JPasswordField(20), gbc); // 性别标签和单按钮 gbc.gridx = 0; gbc.gridy = 2; panel.add(new JLabel("性别:"), gbc); gbc.gridx = 1; ButtonGroup genderGroup = new ButtonGroup(); JRadioButton maleRadio = new JRadioButton("男"); JRadioButton femaleRadio = new JRadioButton("女"); genderGroup.add(maleRadio); genderGroup.add(femaleRadio); JPanel genderPanel = new JPanel(); genderPanel.add(maleRadio); genderPanel.add(femaleRadio); panel.add(genderPanel, gbc); // 爱好标签和复选框 gbc.gridx = 0; gbc.gridy = 3; panel.add(new JLabel("爱好:"), gbc); gbc.gridx = 1; JCheckBox musicCheck = new JCheckBox("音乐"); JCheckBox travelCheck = new JCheckBox("旅游"); JCheckBox readCheck = new JCheckBox("阅读"); JPanel hobbyPanel = new JPanel(); hobbyPanel.add(musicCheck); hobbyPanel.add(travelCheck); hobbyPanel.add(readCheck); panel.add(hobbyPanel, gbc); // 职业标签和下拉框 gbc.gridx = 0; gbc.gridy = 4; panel.add(new JLabel("职业:"), gbc); gbc.gridx = 1; String[] professions = {"请选择", "学生", "教师", "工程师", "其他"}; JComboBox<String> professionCombo = new JComboBox<>(professions); panel.add(professionCombo, gbc); // 备注标签和文本域 gbc.gridx = 0; gbc.gridy = 5; panel.add(new JLabel("备注:"), gbc); gbc.gridx = 1; gbc.gridwidth = 1; gbc.fill = GridBagConstraints.HORIZONTAL; JTextArea remarkArea = new JTextArea(5, 20); remarkArea.setLineWrap(true); panel.add(new JScrollPane(remarkArea), gbc); // 注册按钮 gbc.gridx = 0; gbc.gridy = 6; gbc.gridwidth = 2; gbc.anchor = GridBagConstraints.CENTER; panel.add(new JButton("注册"), gbc); add(panel); } } // 登录窗口类 static class LoginFrame extends JFrame { public LoginFrame() { setTitle("登录窗口"); setSize(300, 250); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setLocationRelativeTo(null); JPanel panel = new JPanel(new GridBagLayout()); GridBagConstraints gbc = new GridBagConstraints(); gbc.insets = new Insets(10, 10, 10, 10); gbc.anchor = GridBagConstraints.WEST; // 用户名标签和输入框 gbc.gridx = 0; gbc.gridy = 0; panel.add(new JLabel("用户名:"), gbc); gbc.gridx = 1; panel.add(new JTextField(20), gbc); // 密码标签和输入框 gbc.gridx = 0; gbc.gridy = 1; panel.add(new JLabel("密码:"), gbc); gbc.gridx = 1; panel.add(new JPasswordField(20), gbc); // 按钮面板(登录和重置按钮) gbc.gridx = 0; gbc.gridy = 2; gbc.gridwidth = 2; gbc.anchor = GridBagConstraints.CENTER; JPanel buttonPanel = new JPanel(); buttonPanel.add(new JButton("登录")); buttonPanel.add(new JButton("重置")); panel.add(buttonPanel, gbc); add(panel); } } // 主方法,添加图形环境检查 public static void main(String[] args) { // 检查是否支持图形界面 if (GraphicsEnvironment.isHeadless()) { System.err.println("错误:当前环境不支持图形界面,请在桌面环境中运行程序。"); return; } // 在事件调度线程中创建界面 SwingUtilities.invokeLater(() -> { RegisterFrame registerFrame = new RegisterFrame(); LoginFrame loginFrame = new LoginFrame(); registerFrame.setVisible(true); loginFrame.setVisible(true); }); } }
11-23
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ougexingfuba

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值