php - 當循環印出數據後,一次性的update MYSQL
本文介绍了php - 當循環印出數據後,一次性的update MYSQL的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
前端PHP
<? while ($row = mysql_fetch_array($SQLadmin)){?>
<select name="permissions" class="p100">
<option value="0">0</option>
<option value="10">10</option>
<option value="20">20</option>
<option value="30">30</option>
</select>
<? }?>
我用php while 撈出了某數據表的數據後
<form action="admin_update?type=permissions" method="post" id="saveform">
// 這邊放前端PHP
</form>
因此當提交到 admin_update 時
$permissions = $_POST['permissions'];
$SQL = mysql_query("UPDATE `admin` SET
`permissions` = '".$value."'
...
");
但問題來了
要如何讓這個情形能夠順利運行?
admin_update 這邊應該怎麼做才對呢?!
才能夠接到前端的每個人的id與permissions值
解决方案
谢邀。
首先说几个比较常见的批量传递数据到后端的思路
方式一、利用表单属性
name='item[]'
的特性。方式二、利用javascript将需要传递的数据组成特定格式的字符串
方式三、利用javascript处理成json再提交数据,和方式2类似
接着我们一点一点的说
方式一、利用表单属性
例子:
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method='post'>
<?php
//假设这是一个从数据库获取的用户ID集合
$user_list = [
['id'=>1],
['id'=>2],
['id'=>3],
['id'=>4],
];
//将表单循环显示出来
foreach($user_list as $key => $val){
$id = $val['id'];
?>
<!-- 注意这里的name属性 -->
<input name='user[]' type='text' value='<?php echo $id; ?>' />
<?php
}
?>
<!-- 提交按钮 -->
<input name='submit' type='submit' value='提交'>
<?php
//这里是接收到post请求是处理的过程
if (isset($_POST['submit'])) {
$user_list = $_POST['user']; //这里的表单名,但是不需要中括号'[]'
var_dump($user_list);
}
?>
</form>
是不是接收到了
array (size=4)
0 => string '1' (length=1)
1 => string '2' (length=1)
2 => string '3' (length=1)
3 => string '4' (length=1)
方式二、利用javascript将需要传递的数据组成特定格式的字符串
ok,同样的,我们先生成表单
<!-- 注意这里,我们增加了一个onSubmit事件 -->
<form onsubmit='return convert_data();' action="<?php echo $_SERVER['PHP_SELF']; ?>" method='post'>
<?php
//假设这是一个从数据库获取的用户ID集合
$user_list = [
['id'=>1],
['id'=>2],
['id'=>3],
['id'=>4],
];
//将表单循环显示出来
foreach($user_list as $key => $val){
$id = $val['id'];
?>
<!-- 这里的name属性就是user -->
<input name='user' type='text' value='<?php echo $id; ?>' />
<?php
}
?>
<!-- 增加一个隐藏的表单 -->
<input name='user_string' type='hidden' value='' />
<!-- 提交按钮 -->
<input name='submit' type='submit' value='提交'>
<?php
//这里是接收到post请求是处理的过程
if (isset($_POST['submit'])) {
$user_string = $_POST['user_string']; //我们接收到隐藏表单的信息
//当然我们知道表单是有着特定格式的,我们将其进行分割为数组
$user_list = explode("|", $user_string);
var_dump($user_list);
}
?>
</form>
<script>
function convert_data() {
//这个函数我们通过javascript把数据组成类似x1|x2|x3,以|分割的数据
var elements = document.getElementsByName('user');
var data_string = '';
for(var i = 0; i < elements.length; i++) {
var element = elements[i];
console.log(element);
var id = element.value;
data_string += id + '|';
}
data_string = data_string.substring(0, data_string.lastIndexOf('|'));
//将组成好特定格式的字符串放到隐藏的表单中
var hidden_input = document.getElementsByName('user_string')[0];
hidden_input.value = data_string
return true;
}
</script>
是不是发现结果和上面一样?我们继续往下看
方式三、利用javascript处理成json数据
其实处理成json和上述组成特定格式数据本质上是一样的。
这里就不赘述,简单的说一下
在javascript中,我们可以使用下面的方式将数据转换成json格式
var data = [{
id:1,
id:2,
id:3
}];
var json = JSON.stringify(obj); //转化成json
var obj = JSON.parse(json); //转换成对象
数据提交后端后,在php通过json_decode
将json数据转化成对象或数组进行处理即可。
上面说完了几种向后端批量提交数据的方式,那么后端接收到这些数据该如何处理呢?
很显然,最常见的就是一条一条遍历去插入。
其他的方式看看下面的文章吧~
这篇关于php - 當循環印出數據後,一次性的update MYSQL的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文