表单checkbox多项提交到php处理多次循环和多次跳转产生的问题

kingkongc 2018-02-12 12:15:16
表单
form.html

<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>表单</title>
<style>
table{width:400px;border:1px solid #ddd;margin:0 auto;}
</style>
<script type="text/javascript">
function SelectOne(){
obj = document.getElementsByName("area");
check_val = [];
for(k in obj){
if(obj[k].checked)
check_val.push(obj[k].value);
}
document.getElementById("areas").value = check_val;
}
</script>
</head>
<body>
<table border="0" cellpadding="3" cellspacing="1">
<form name="form" action="server.php" method="get" target="result">
<tr bgcolor="#ddd">
<td colspan="2">多项选择</td>
</tr>
<tr>
<td height="20">地区</td>
<td height="20">
<input name="areas" id="areas" type="hidden">
<input name="area" value="1" type="checkbox" onclick="SelectOne()">北京
<input name="area" value="2" type="checkbox" onclick="SelectOne()">上海
<input name="area" value="3" type="checkbox" onclick="SelectOne()">广州
</td>
</tr>
<tr>
<td height="20"> </td>
<td height="20">
<input type="submit" value="提交">
</td>
</tr>
</form>

<tr bgcolor="#ddd">
<td colspan="2">显示结果</td>
</tr>
<tr>
<td colspan="2">
<iframe name="result" frameborder="0" id="result" width="100%" height="100%"></iframe>
</td>
</tr>
</table>
</body>
</html>


server.php

<?php
header("Content-type: text/html; charset=utf-8");

//这里数据很多的,为了演示所以才写了几个
$arr = array(
array(
'title' => 'A1',
'body' => 'B1',
),
array(
'title' => 'A2',
'body' => 'B2',
),
array(
'title' => 'A3',
'body' => 'B3',
)
);

//选中的地区1,2,3切割成数组
$areas = isset($_GET['areas']) ? $_GET['areas'] : 0;
$area = explode(",",$areas);

$start = isset($_GET['start']) ? $_GET['start'] : 0;
$page = isset($_GET['page']) ? $_GET['page'] : 1;
$totalnum = count($arr);

if($start < $totalnum ) {
for($i=0;$i<$page; $i++){
$v = $arr[$start++];
echo $area[$start].'+'.$v['title'].'+'.$v['body'].'<br />';//这里其实是写入数据库 (地区+title+body)
}
header("Refresh:3;url=server.php?start=$start&page=$page&areas=$areas");
}
else
{
echo "所有地区已完成";
}



想要实现前端勾选地区,PHP能根据勾选的地区和里面的数组1条条写入到数据库去;
由于数据过多,所以里面我用了偏移的方式3秒跳转插入一条数据,这里就有个问题了,跳转的时候会把选中的地区搞没了,而且循环的次数也不对了。
能不能做到按勾选的地区,第一次循环第一个勾选的地区+数据,第二次循环又把第二个地区+数据。。。一直循环完勾选的地区。
...全文
625 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
xuzuning 2018-02-14
  • 打赏
  • 举报
回复
你把问题都简化了,自然我的回复也是简化的
kingkongc 2018-02-12
  • 打赏
  • 举报
回复
引用 4 楼 xuzuning 的回复:
遍历传入的数据,行数据库里送就是了,不要怕数据库累着。你累了,他都不会累!
有办法吗,我试了无数种方法都不行,没解决浑身难受睡不着。
kingkongc 2018-02-12
  • 打赏
  • 举报
回复
引用 4 楼 xuzuning 的回复:
遍历传入的数据,行数据库里送就是了,不要怕数据库累着。你累了,他都不会累!
因为还有一个是生成静态html的处理,所以用了跳转的方式,不然服务器会卡死。
xuzuning 2018-02-12
  • 打赏
  • 举报
回复
遍历传入的数据,行数据库里送就是了,不要怕数据库累着。你累了,他都不会累!
kingkongc 2018-02-12
  • 打赏
  • 举报
回复
引用 1 楼 xuzuning 的回复:
为什么要 3秒跳转插入一条数据 ? 是你怕数据库累死了,还是你自己闲的无聊? 如果确实是并发用户太多,那么 insert 命令有一个 DELAYED 关键字,他可以将指令缓存起来,等到数据库空闲的时候再执行。并且你的程序也不需要等待插入的完成
框架跳转方式不能改,还有办法实现吗?
kingkongc 2018-02-12
  • 打赏
  • 举报
回复
引用 1 楼 xuzuning 的回复:
为什么要 3秒跳转插入一条数据 ? 是你怕数据库累死了,还是你自己闲的无聊? 如果确实是并发用户太多,那么 insert 命令有一个 DELAYED 关键字,他可以将指令缓存起来,等到数据库空闲的时候再执行。并且你的程序也不需要等待插入的完成
不是3秒跳转插入一条数据,上面只是示范,每次插入1000到2000条数据的,框架固定了这种跳转方式插入了,上面的代码还有办法循环吗?
xuzuning 2018-02-12
  • 打赏
  • 举报
回复
为什么要 3秒跳转插入一条数据 ? 是你怕数据库累死了,还是你自己闲的无聊? 如果确实是并发用户太多,那么 insert 命令有一个 DELAYED 关键字,他可以将指令缓存起来,等到数据库空闲的时候再执行。并且你的程序也不需要等待插入的完成

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧