php - 當循環印出數據後,一次性的update MYSQL

查看:117
本文介绍了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数据转化成对象或数组进行处理即可。

上面说完了几种向后端批量提交数据的方式,那么后端接收到这些数据该如何处理呢?

很显然,最常见的就是一条一条遍历去插入。

其他的方式看看下面的文章吧~

批量Update的几种方式

这篇关于php - 當循環印出數據後,一次性的update MYSQL的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆