学会使用 VScode 编写 php 代码 实现留言板功能。
先讲一下思路:
1、写 html 代码,电商商城定制开发为后面做准备
2、需求一,电商商城定制开发进入页面后会自动刷新电商商城定制开发出数据库的数据,显示出来;电商商城定制开发因此得写一个方法,function getInfo(){ } 电商商城定制开发在函数里写 请求,调用该函数,成功接受数据后,输出到页面。从后台得到的数据是 json 数组,通过遍历将所有的数据信息显示出来。如图所示。
注:其中得到的 res 的类型是一个,将数据库中的数据放在了一个数组中,这样就可以实现多条数据的存储了,里面还输出了时间。用到了 php 中的 time() (时间戳)的方法。代码放在了最后!
3、需求二,点击提交按钮后可以将输入的用户名和内容,添加到数据库中,同时要在页面中实时更新。需要给 button 绑定点击事件 发送 ajax 请求 传入用户输入的值(传参)接受数据成功后通过判断状态码的值,给予用户反馈,然后再刷新页面,将输入的值显示在留言板上。
注:提交过内容以后需要把原来的输入框全部清空,所以用到了 $('.content').html(''); $("#user").val(""); $("#content").val(""),同时需要刷新页面,将添加的数据显示出来,因此得重新获取数据 调用一下函数 getInfo() 函数即可(真心方便!)。还有就是,得获取一下输入的内容,赋值给变量username content 你们可以随意定义。(记得将数据传入到后台)
4、编写 php 代码:①连接数据库 ②编写查询数据库的函数 ③编写添加留言的函数。
如下图所示:①连接数据库
这是 mysqli_connect() 方法连接数据库 也可以使用 PDO 方法连接这里 如下:
- <?php
- $dbtype = "mysql";
- $host = "localhost";
- $dbuser = "root";
- $dbname = "classroom";
- $dbpwd = "root";
- $dsn = "$dbtype:host=$host;dbname=$dbname"; //固定搭配
- $con = new PDO($dsn,$dbuser,$dbpwd);
-
- if(!$con){
- die('连接失败!');
- };
- //操作数据库
- $sql = "select * from `2204`";
- var_dump($con->query($sql));
- foreach($con->query($sql) as $k=>$value){
- var_dump($value);
- }
- ?>
②编写查询数据库的函数
- <?php
- function select(){
- global $con;
- $sql = "select * from `liuyan`";
- $res = mysqli_query($con,$sql);
- $arr = [];
- if($res){
- foreach($res as $v){
- $arr[] = $v;
- }
- return $arr;
- }
- }
- ?>
注: foreach($res as $v){} 这个方法是遍历 $v 是每一个值 也可以写成foreach($res as $k=> $v){} $k 是下标 这是数据库的查询方法:$sql = "select * from `liuyan`";(sql语句)
③编写添加留言的函数
- <?php
- function add($username,$content){
- global $con;
- $time = time();
- $time = date('Y-m-d h:i:s',$time);
- $sql="insert into `liuyan`(username,content,time) values('$username','$content','$time')";
- $res = mysqli_query($con,$sql);
- if($res){
- return ['code'=>200,'msg'=>'添加成功'];
- }
- }
- ?>
$sql="insert into `liuyan`(username,content,time) values('$username','$content','$time')";是向数据库中插入一条数据的 $sql 语句 $time = time();是上文提到的 时间戳 $time = date('Y-m-d h:i:s',$time);参数分别是 年 月 日 小时 分钟 秒。
最后需要添加一个判断,如果前台传入的参数正确的话就执行对应的函数,否就不执行,代码如下:
- $q = $_POST['query'];
- if($q =='select'){
- echo json_encode(select());
- }elseif($q == 'add'){
- $username = $_POST['username'];
- $content = $_POST['content'];
- $as = add($username,$content);
- echo json_encode($as);
- };
注:$q 是ajax传入的判断数据。这里返回的数据类型是 json 字符串;整体代码如下:
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <meta http-equiv="X-UA-Compatible" content="IE=edge">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <title>Document</title>
- <style>
- .wrapper{
- text-align:center;
- }
- .content{
- width:500px;
- height:300px;
- border:1px solid ;
- border-radius:10px;
- text-align:left;
- margin:0 auto;
- padding-left:10px;
- }
- .content>span{
- margin-left:10px;
- margin-top:5px;
- }
- .user{
- font-weight:600;
- }
- input{
- margin-top: 10px;
- }
- </style>
- </head>
- <body>
-
- <div class="wrapper">
- <div class="content">
- <h2>留言展示:</h2>
- </div>
- <!-- <h2>留言板</h2> -->
- <input type="text" id="user" placeholder="用户名" >
- <input type="text" id="content" placeholder="留言内容" >
- <button id="btn"> 提交</button>
- </div>
- <!-- 首先获取数据库的内容 -->
- <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.js"></script>
- <script>
- $("#btn").click(function(){
- var username = $("#user").val();
- var content = $("#content").val();
- // console.log("==");
- $.ajax({
- url:'./liuyanjieshou.php',
- data:{query:'add',username:username,content:content},
- dataType:'json',
- method:'post',
- success(res){
- console.log(res);
- if(res.code == 200){
- alert("数据添加成功!");
- $('.content').html('');
- $("#user").val("");
- $("#content").val("");
- getInfo();
-
- }
- }
- })
- });
- </script>
- <script>
- getInfo();
- function getInfo(){
- $.ajax({
- url:'./liuyanjieshou.php',
- data:{query:'select'},
- dataType:'json',
- method:'post',
- success(res){
- // console.log(res);
- if(res){
- var str = "";
- for(var i=0;i<res.length;i++){
- str += `<span class="user">${res[i].username}</span>:<span>${res[i].content}</span> 
- <span>${res[i].time}</span>
- <br>`
-
- }
- $(".content").append(str);
- }
- }
- })
- }
-
-
-
- </script>
- </body>
- </html>
- <?php
- $host = "localhost";
- $dbuser = "root";
- $dbpwd = "root";
- $dbname = "classroom";
-
- $con = mysqli_connect($host,$dbuser,$dbpwd,$dbname);
- $q = $_POST['query'];
- if(!$con){
- echo "数据失败!";
- };
-
- if($q =='select'){
- echo json_encode(select());
- }elseif($q == 'add'){
- $username = $_POST['username'];
- $content = $_POST['content'];
- $as = add($username,$content);
- echo json_encode($as);
- };
- // 查询所有的数据库信息,函数
- function select(){
- global $con;
- $sql = "select * from `liuyan`";
- $res = mysqli_query($con,$sql);
- $arr = [];
- if($res){
- foreach($res as $v){
- $arr[] = $v;
- }
- return $arr;
- }
- }
- // 增加留言的函数
- function add($username,$content){
- global $con;
- $time = time();
- $time = date('Y-m-d h:i:s',$time);
- $sql = "insert into `liuyan`(username,content,time) values('$username','$content','$time')";
- $res = mysqli_query($con,$sql);
- if($res){
- return ['code'=>200,'msg'=>'添加成功'];
- }
- }
- ?>
注意:这是两个文件,第一个是html 发送请求的文件 第二个是返回的数据的文件。
效果图如下: