thinkphp6+layui怎么批量添加数据

thinkphp6+layui怎么批量添加数据

img


如上图
需要实现选中下面的教材,输入班级,发放数量,然后一键发放,可以把教材ID,班级号,发放数量保存到数据库中。
怎么实现?谢谢

参考 https://blog.csdn.net/weixin_41965172/article/details/124514958

最简单的方式,就是将教材ID,班级号,发放数量作为参数,传递到后端接口里面,然后后端接口使用for循环的方式,一条一条数据的insert到数据库里面。

后端来实现逻辑,前端只要将数据传给后端即可。有问题可以私信

thinkphp6+layui 实现商品多规格添加编辑
可以参考下,非常详细
https://blog.csdn.net/jianchenn/article/details/106852032
https://blog.csdn.net/weixin_41965172/article/details/124514958

大致的处理逻辑是,当选中下面的教材信息后,点击一件发放按钮后,获取到输入的班级和数量信息,如果没有获取到,提示没有输入班级或数量信息,如果已经输入了,则将选中的教材id、班级、数量这三个数据通过请求提交到后台,后台收到这个三个数据后,调用存储方法存储到数据库中。
实现代码可以参考:
thinkphp向数据表中批量添加/编辑数据:https://blog.csdn.net/weixin_41965172/article/details/124514958

$data = ['name' => 'John Doe', 'email' => 'john@example.com'];
$result = Db::table('users')->insert($data);
<form class="layui-form" action="">
  <div class="layui-form-item">
    <label class="layui-form-label">Name</label>
    <div class="layui-input-block">
      <input type="text" name="name" required lay-verify="required" placeholder="请输入名称" autocomplete="off" class="layui-input">
    </div>
  </div>
  <div class="layui-form-item">
    <label class="layui-form-label">Email</label>
    <div class="layui-input-block">
      <input type="text" name="email" required lay-verify="required|email" placeholder="请输入邮箱" autocomplete="off" class="layui-input">
    </div>
  </div>
  <button type="submit" class="layui-btn" lay-submit>提交</button>
</form>
<table id="demo"></table>
<script src="/static/layui/layui.js"></script>
<script>
  layui.use(['table'], function(){
    var table = layui.table;
   });
  $(function(){
    //模拟数据插入后渲染表格
    $.ajax({
      url: '/batchInsertData', //这里是你的控制器方法地址
      type: 'POST',
      dataType: 'json',
      contentType: 'application/json;charset=utf-8',
      success: function(res){
        //这里可以根据返回的数据渲染表格列名和数据内容等信息
        //比如:table.render({elem: '#demo', cols: [[{field: 'id', title: 'ID'}, ...]]});
        console.log(res); //打印返回的数据以便于调试查看结果是否正确插入数据库中了
      }
    });
  });
</script>

你这属于web开发领域了,可以试试通过使用js中的Ajax来实现批量添加数据的功能。在点击“一键发放”按钮时,使用Ajax将表单数据触发js的ajax发送到后端。后端使用ThinkPHP6的控制器接收Ajax请求,并验证表单数据的有效性。验证通过后,后端将教材ID、班级号和发放数量保存到数据库中。返回响应给前端,通知发放成功或失败的信息。通过以上步骤,用户可以方便地批量添加数据,并将所需信息保存到数据库中,这属于设计思路,具体代码还需要自己查阅资料有遇到难点可以咨询我哦~~

前端通过json传参,后端复制数据的插入

要实现批量添加数据,可以按照以下步骤进行操作:

  1. 在前端页面中使用Layui框架创建一个表格,用于展示教材列表和输入班级、发放数量的表单。
  2. 使用Ajax或表单提交方式将选中的教材ID、班级号和发放数量发送给后端。
  3. 在后端的控制器中接收前端发送的数据,并进行数据验证和处理。
  4. 使用ThinkPHP的模型操作数据库,将教材ID、班级号和发放数量保存到数据库中。
  5. 返回操作结果给前端,可以是成功提示或错误提示。

具体实现示例代码如下:

  1. 前端页面代码(使用Layui框架):

> ```html
<table class="layui-table">
  <colgroup>
    <col width="50">
    <col width="150">
    <col width="100">
    <col width="100">
  </colgroup>
  <thead>
    <tr>
      <th></th>
      <th>教材名称</th>
      <th>班级</th>
      <th>发放数量</th>
    </tr>
  </thead>
  <tbody>
    <!-- 循环展示教材列表 -->
    <tr>
      <td><input type="checkbox" name="book[]" value="教材ID"></td>
      <td>教材名称</td>
      <td><input type="text" name="class[]"></td>
      <td><input type="text" name="quantity[]"></td>
    </tr>
  </tbody>
</table>
<button class="layui-btn layui-btn-normal" id="submitBtn">一键发放</button>

<script>
layui.use('jquery', function(){
  var $ = layui.jquery;
  
  // 一键发放按钮点击事件
  $('#submitBtn').click(function(){
    var data = {
      books: [],
      classes: [],
      quantities: []
    };
    
    // 获取选中的教材、班级和发放数量
    $('input[name="book[]"]:checked').each(function(){
      data.books.push($(this).val());
    });
    $('input[name="class[]"]').each(function(){
      data.classes.push($(this).val());
    });
    $('input[name="quantity[]"]').each(function(){
      data.quantities.push($(this).val());
    });
    
    // 发送数据给后端
    $.ajax({
      url: 'your_backend_url',
      type: 'post',
      data: data,
      success: function(res){
        // 处理返回结果
        if(res.code == 0){
          alert('发放成功');
        }else{
          alert('发放失败');
        }
      },
      error: function(){
        alert('发放失败');
      }
    });
  });
});
</script>

2. 后端控制器代码(使用ThinkPHP框架):
```php
namespace app\controller;

use think\Controller;
use app\model\Book;

class BookController extends Controller
{
  public function batchAdd()
  {
    $books = input('post.books/a');
    $classes = input('post.classes/a');
    $quantities = input('post.quantities/a');
    
    // 验证数据合法性
    
    $data = [];
    foreach($books as $key => $book){
      $data[] = [
        'book_id' => $book,
        'class' => $classes[$key],
        'quantity' => $quantities[$key]
      ];
    }
    
    // 批量插入数据库
    $result = Book::saveAll($data);
    
    if($result){
      return ['code' => 0, 'msg' => '发放成功'];
    }else{
      return ['code' => 1, 'msg' => '发放失败'];
    }
  }
}

注意:上述代码中的"your_backend_url"需要替换为实际的后端接口地址。另外,还需要根据实际情况进行数据验证和处理。



以下答案参考newbing,回答由博主波罗歌编写:
想要实现批量添加数据,你可以按照以下步骤进行操作:

  1. 创建一个表单,包含需要的输入字段,如教材选择(可以使用下拉列表或复选框)、班级号和发放数量。可以使用Layui的表单组件来创建表单。

  2. 在处理表单提交的控制器方法中,获取表单提交的数据。

  3. 遍历获取到的数据,将每一条数据保存到数据库中。可以使用ThinkPHP的模型操作来执行插入操作。

下面是一个简单的示例代码,帮助你实现上述功能的思路:

控制器方法(app\controller\MaterialController.php):

namespace app\controller;

use app\model\Material;
use think\Request;

class MaterialController
{
    public function save(Request $request, Material $materialModel)
    {
        $data = $request->post();
        $materials = $data['materials'];
        
        foreach ($materials as $material) {
            $materialModel->save([
                'material_id' => $material['material_id'],
                'class_number' => $material['class_number'],
                'quantity' => $material['quantity'],
            ]);
        }
        
        // 可以根据情况返回结果或重定向到其他页面
        return '保存成功';
    }
}

模型(app\model\Material.php):

namespace app\model;

use think\Model;

class Material extends Model
{
    // 模型对应的数据表名
    protected $table = 'materials';
    
    // 模型的字段列表
    protected $schema = [
        'id' => 'int',
        'material_id' => 'int',
        'class_number' => 'string',
        'quantity' => 'int',
    ];
}

视图文件(add.html):

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>批量添加数据</title>
    
    <!-- 引入Layui的样式文件 -->
    <link rel="stylesheet" href="/layui/css/layui.css">
</head>
<body>
    
    <form class="layui-form" action="/material/save" method="post">
        
        <div class="layui-form-item">
            <label class="layui-form-label">教材选择</label>
            <div class="layui-input-block">
                <!-- 你的教材下拉列表或复选框 -->
            </div>
        </div>
        
        <div class="layui-form-item">
            <label class="layui-form-label">班级号</label>
            <div class="layui-input-block">
                <input type="text" name="class_number[]" placeholder="请输入班级号" class="layui-input">
            </div>
        </div>
        
        <div class="layui-form-item">
            <label class="layui-form-label">发放数量</label>
            <div class="layui-input-block">
                <input type="text" name="quantity[]" placeholder="请输入发放数量" class="layui-input">
            </div>
        </div>
        
        <!-- 可以使用JS动态添加更多的班级号和发放数量输入框 -->
        
        <div class="layui-form-item">
            <div class="layui-input-block">
                <button class="layui-btn" lay-submit lay-filter="submit">一键发放</button>
            </div>
        </div>
        
    </form>
    
    <!-- 引入Layui的JS文件 -->
    <script src="/layui/layui.js"></script>
    <script>
        // 初始化Layui表单组件
        layui.use('form', function(){
            var form = layui.form;
            // 触发提交按钮的事件
            form.on('submit(submit)', function(data){
                form.render();
            });
        });
    </script>
    
</body>
</html>

请注意,在创建数据库表时,要与模型中的字段保持一致。

这是一个基本的示例,你可以根据实际需求进行适当的修改和扩展。希望可以帮助到你!
如果我的回答解决了您的问题,请采纳!