【PHP项目实战训练】——laravel框架的实战项目中可以做模板的增删查改功能(1)

news2024/10/6 10:28:30

在这里插入图片描述


👨‍💻个人主页:@开发者-曼亿点

👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅!

👨‍💻 本文由 曼亿点 原创

👨‍💻 收录于专栏:PHP程序开发


请添加图片描述

请添加图片描述

学生考勤签到系统 的增删查改

文章目录

    • 前言
    • 🎶一、添加功能
    • 🎶二、删除功能


前言

  在现代 Web 开发中,构建具有增加、删除、查找和更新功能的应用程序是至关重要的。这些操作通常被统称为 CRUD 操作(创建、读取、更新和删除),是几乎所有 Web 应用程序的核心功能之一。在本教程中,我们将探索如何利用 Laravel 框架来实现这些功能,利用 Laravel 的强大功能和简洁的语法,快速构建一个完整的 CRUD 应用程序。

前提条件:

  了解基本的 PHP 编程知识。
  已经安装了 Composer 和 Laravel 开发环境。
  熟悉 Laravel 的基本概念,如路由、控制器、模型和视图。
  内容概述:

  创建数据库模型和迁移: 我们将定义数据库模型,并使用 Laravel 的迁移功能创建数据库表,确保数据库结构与应用程序需求一致。

  设置路由: 我们将设置路由,将 HTTP 请求映射到相应的控制器方法,建立客户端和服务器端之间的通信桥梁。

  编写控制器: 我们将编写控制器来处理业务逻辑,包括创建、读取、更新和删除操作,通过控制器将数据传递给视图或从视图接收用户输入。

  创建视图: 我们将创建视图来呈现用户界面,使用户可以执行 CRUD 操作,通过视图呈现数据、接收用户输入并显示相应的结果。


🎶一、添加功能


此方法的添加功能是laravel框架中最经典的添加方法,在其实使用Request 的方法来获取表单所提交的数据,匹配成功数据表单后,用insert插入数据库中,执行插入完成后,进行if判断,如果插入成功刷出进入展示部分。

  (1)在头部引用Reques

use Illuminate\Http\Request;

  (2)master.blade.php界面展示代码:

<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <link rel="stylesheet" href={{asset('/css/bootstrap.min.css')}}>
    <script src={{asset('/js/jquery-3.6.1.min.js')}}></script>
    <title>学生考勤签到系统</title>
    <style>
        body {
            cursor: pointer;
        }
    </style>
</head>
<body>
    {{csrf_field()}}
<div class="container">
    <h1 style="text-align: center;margin: 30px 0">学生考勤签到系统</h1>
    <form action="{{asset('select')}}" method="get" id="formInfo">
        <div>           
            <input type="text" name="classType" id="classType">
            <input  name="reset"  type="submit" value="查询">
        </div>
    </form>
    <form action="delectall.php" method="get">

        <div style="float: right">
            <input  onclick="return alert('确定重置?')" name="reset"  type="submit" value="重置">
        </div>
    </form>
    <table class="table table-hover" id="info">
        <thead>
        <tr>         
            <th>班级</th>
            <th>姓名</th>
            <th>电话</th>
            <th>状态</th>
            <th>签到</th>
            <th>操作</th>
        </tr>
        </thead>
        <tbody>
            @foreach($data as $v)
        <tr>      
            <td>{{$v->class}}</td>
            <td>{{$v->name}}</td>
            <td>{{$v->tel}}</td>
            <td>{{$v->zt}}</td>
            <td>
                    <a type="submit" onclick="return confirm('是否已到场?')" href="{{asset('updata')}}?id={{$v->Id}}"><button>签到</button></a>
            </td>
            <td>
                <button>
                    <a onclick="return confirm(' 确定要删除吗?')" href="{{asset('dela')}}?id={{$v->Id}}">删除</a>
                </button>
            </td>
        </tr> 
        @endforeach
        </tbody>
    </table>
    <div class="text-center">
        <button>
            <a href="{{asset('addym')}}">添加学生</a>
        </button>
    </div>
</div>
<script>     
    </script>
</body>
</html>

点击添加功能将进行跳转到addym.php,其中进行跳转的路径相对于其他的不同,laravel的跳转需要asset(‘跳转的路径’),例如:{{asset(‘addym’)}}。
添加输入的表单addym.php代码展示


<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/css/bootstrap.min.css">
    <title>添加学生页面</title>
</head>
<body>
<div class="container contentCenter col-md-6  col-xs-12 col-lg-12" style="justify-content: center;">
    <h1 style="margin: 50px auto; text-align: center">活动参与成员登记表</h1>
    <form action="{{asset('add1')}}" method="post">
        <div class="form-group">
            <label for="exampleInputEmail1">班级:</label>
            <input type="text"  name="class" class="form-control" id="exampleInputEmail1" placeholder="请输入你所在的班级">
        </div>
        <div class="form-group ">
            <label for="exampleInputPassword1">姓名:</label>
            <input type="text"  name="name" class="form-control" id="exampleInputPassword1" placeholder="请输入姓名">
        </div>
        <div class="form-group ">
            <label for="exampleInputPassword2">电话:</label>
            <input type="tel"  name="tel" class="form-control" id="exampleInputPassword2" placeholder="请输入电话号码">
        </div>

        <div>
            <input  type="hidden" name="zt" value="未签">
        </div>
            <button type="submit" class="btn btn-default" onclick="return confirm('信息确定无误吗?')">确定参加</button>
            {{csrf_field()}}
    </form>
</div>
</body>
<script>
</script>
</html>

  在路由下的web.php中添加add的Route路由:

Route::post(‘add1’,[UserController::class,‘add1’]);

在这里插入图片描述

在UserController.php中的控制器中获取表单插入数据库的代码:

//add添加
public function add1(Request $request){
    // 接收表单传过来的数据  
    $data['class'] = $request['class'];
    $data['name'] = $request['name'];
    $data['tel'] = $request['tel'];
    $data['zt'] = $request['zt'];
    // 执行添加操作
    $res = DB::table('student')->insert($data);
    // dd($res);返回true 表示添加成功 false表示失败
    if($res){
        // 添加成功跳转至列表页面
        return redirect('show');
    }else{
        // 添加失败跳转至添加页面
        return redirect('zc');
    }
}

🎶二、删除功能


  删功能的逻辑相对于其他的三个功能较简单,此功能是通过获取每一行的id所实现的,点击删除按钮后他将会将相关的id传入到控制器中,对数据库中的向相匹配id的行进行删除。

删除的路由如下:

Route::get(‘dela’,[UserController::class,‘dela’]);

在UserController.php中的控制器中获取id后删除数据库行的代码:

//对数据进行删除
public function dela(Request $request)
{
    //接收id
    $where['id'] =$request['id'];
    $res = DB::table('student')->where($where)->delete();
    //dd($res);返回1 表示删除成功 0表示未做删除
    if($res){
        // 删除成功跳转至列表展示
        return redirect('show');
    }else{
        return redirect('show');
    }
}

以上就是PHP程序设计
持续更新PHP程序设计教程,欢迎大家订阅系列专栏🔥PHP程序开发你们的支持就是曼亿点创作的动力💖💖💖
请添加图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1717170.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【银河麒麟V10服务器OS-系统根分区扩容】指导教程手册

【银河麒麟V10服务器OS-系统根分区扩容】指导教程手册 环境信息&#xff1a;VMware虚拟软件16.0 首先查看KylinOS服务器版本&#xff1a;nkvers 备注&#xff1a; (Tercel) 版本是 V10 SP1 版本&#xff0c; (Sword) 版本是 V10 SP2 版本&#xff0c; (Lance) 版本是 V10 …

开源与闭源 AI 模型:发展路径的比较与前瞻

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

super().__init__() 来自于哪个PEP

super() 的简化用法&#xff08;即不带参数的 super()&#xff09;是在 Python 3 中引入的。这个改进是由 PEP 3135 规范化的。 PEP 3135: New Super PEP 3135 标题为 “New Super”。它介绍了一种新的方式来调用超类的方法&#xff0c;即不再需要显式地传递当前类和实例&…

前端Vue小兔鲜儿电商项目实战Day04

一、二级分类 - 整体认识和路由配置 1. 配置二级路由 ①准备组件模板 - src/views/SubCategory/index.vue <script setup></script><template><div class"container"><!-- 面包屑 --><div class"bread-container">…

软件需求规格说明书(Word原件@配套软件全资料)

软件需求规格说明书编写规范编写规范 1.项目背景 2.项目目标 3.系统架构 4.总体流程 5.名称解释 6.功能模块 软件项目相关全套精华资料包获取方式①&#xff1a;点我获取 获取方式②&#xff1a;本文末个人名片直接获取。 软件资料清单列表部分文档清单&#xff1a;工作安排任…

python操作mongodb底层封装并验证pymongo是否应该关闭连接

一、pymongo简介 https://pymongo.readthedocs.io/en/stable/github地址&#xff1a;https://github.com/mongodb/mongo-python-driver mymongo安装命令&#xff1a;pip install pymongo4.7.2 mymongo接口文档&#xff1a;PyMongo 4.7.2 Documentation PyMongo发行版包含Py…

AI绘画Stable Diffusion【实战】一下给我整破防了!!SD制作商业海报——香水海报

大家好&#xff0c;我是画画的小强 今天给大家分享关于SD制作商业海报案例——香水海报。内容很干&#xff0c;但很实用&#xff0c;后续也会持续分享一些其他商业海报的制作案例&#xff0c;喜欢的朋友请持续关注 人“狠”话不多&#xff0c;大家请上车&#xff01;&#xff…

VB.net 进行CAD二次开发(二)

利用参考文献2&#xff0c;添加面板 执行treeControl New UCTreeView()时报一个错误&#xff1a; 用户代码未处理 System.ArgumentException HResult-2147024809 Message控件不支持透明的背景色。 SourceSystem.Windows.Forms StackTrace: 在 System.Windows…

Java流与链表:探索java.util.stream与LinkedList的交汇点

在现代Java开发中&#xff0c;流&#xff08;Streams&#xff09;和链表&#xff08;LinkedList&#xff09;都是强大且常用的数据处理工具。java.util.stream提供了高效的方式来处理数据流&#xff0c;而LinkedList则是java.util包中的经典集合实现。本文将探索它们的交汇点&a…

手拉手springboot整合kafka发送消息

环境介绍技术栈springbootmybatis-plusmysqlrocketmq软件版本mysql8IDEAIntelliJ IDEA 2022.2.1JDK17Spring Boot3.1.7kafka2.13-3.7.0 创建topic时&#xff0c;若不指定topic的分区(Partition主题分区数)数量使&#xff0c;则默认为1个分区(partition) springboot加入依赖kafk…

MySQL排序字段无法唯一标识一条数据,导致分页查询结果出现重复或遗漏问题

问题描述 MySQL排序字段无法唯一标识一条数据&#xff0c;且排序字段可能有多个&#xff0c;多个排序字段无法唯一标识一条数据&#xff0c;即排序字段标识的相同数据过多&#xff0c;可能导致分页查询出现重复或遗漏的情况。 具体说明&#xff1a;      如果在排序条件中…

Stable Diffusion AI绘画:从创意词汇到艺术图画的魔法之旅

文章目录 一、Stable Diffusion的工作原理二、从提示词到模型出图的过程三、Stable Diffusion在艺术创作中的应用《Stable Diffusion AI绘画从提示词到模型出图》内容简介作者简介楚天 目录前言/序言本书特色特别提示 获取方式 在科技的飞速发展中&#xff0c;Stable Diffusion…

江协科技STM32学习-1 购买24Mhz采样逻辑分析仪

前言&#xff1a; 本文是根据哔哩哔哩网站上“江协科技STM32”视频的学习笔记&#xff0c;在这里会记录下江协科技STM32开发板的配套视频教程所作的实验和学习笔记内容。本文大量引用了江协科技STM32教学视频和链接中的内容。 引用&#xff1a; STM32入门教程-2023版 细致讲…

机器人系统ros2-开发学习实践16-RViz 用户指南

RViz 是 ROS&#xff08;Robot Operating System&#xff09;中的一个强大的 3D 可视化工具&#xff0c;用于可视化机器人模型、传感器数据、路径规划等。以下是RViz用户指南&#xff0c;帮助你了解如何使用RViz来进行机器人开发和调试。 启动可视化工具 ros2 run rviz2 rviz2…

【React篇】组件错误边界处理(组件错误引起的页面白屏)

我们知道在生产环境react错误会导致整个页面崩溃&#xff0c;显示为空白页面。 比如下图的错误&#xff0c;导致了左侧页面直接白屏&#xff1a; 由于某一个组件报错导致整个页面崩溃是很严重的问题&#xff0c;那么我们应该如何去降低代码报错带来的影响呢&#xff1f; 我们…

Rockchip芯片 写SN,IMEI,Mac等 写attenstation key 写Remote Key Provisioning

下载AP 写SN等 关机下 按住“音量” 插入USB线 进入loader 方式&#xff0c;在该模式下面写号&#xff0c;设备必须是已经有烧写过固件。 输入sn&#xff0c;点写入&#xff0c;成功。 点读取&#xff0c;成功。 两种设备模式&#xff1a;maskrom 和 loader 模式 maskrom 进…

灶新趋势,跌下神坛的电磁炉,为何被人嫌弃

在厨电市场的广阔天地中&#xff0c;电燃灶与电磁炉作为两种截然不同的烹饪工具&#xff0c;其间的竞争与演变始终牵动着消费者的心弦。近年来&#xff0c;电燃灶以其独特的优势崭露头角&#xff0c;而电磁炉则似乎从昔日的辉煌中跌下神坛&#xff0c;遭到越来越多人的嫌弃。这…

[排序算法]插入排序+希尔排序全梳理!

目录 1.排序是什么&#xff1f;1.1排序的概念1.2排序运用1.3常见的排序算法 2.插入排序分类3.直接插入排序基本思想具体步骤&#xff1a;动图演示代码实现直接插入排序的特性总结&#xff1a; 4. 希尔排序基本思想具体步骤动图演示代码实现希尔排序的特性总结&#xff1a; 5.总…

一种改进的经验小波变换方法(Python环境)

经验小波变换EWT是Gilles基于小波分析理论提出的一种新的自适应信号分解方法&#xff0c;该方法主要分为三个步骤&#xff1a;1.根据傅里叶谱的特性自适应划分频谱&#xff0c;获得一组边界&#xff1b;2.根据边界序列和Meyer小波构造滤波器组&#xff1b;3.滤波重构&#xff0…

Django——Admin站点(Python)

#前言&#xff1a; 该博客为小编Django基础知识操作博客的最后一篇&#xff0c;主要讲解了关于Admin站点的一些基本操作&#xff0c;小编会继续尽力更新一些优质文章&#xff0c;同时欢迎大家点赞和收藏&#xff0c;也欢迎大家关注等待后续文章。 一、简介&#xff1a; Djan…