仿微博发布动态,php入门学习笔记
一直学的都是前端方面的东西,最近对php有点感兴趣,研究了一下以前项目中后台的php文件,也看了点视频,做了一个放微博发布动态的小功能,算是刚入门吧。记录一下学习过程。欢迎php的大佬指导批评^_^
代码部分
// 创建消息节点 function createEle(id, txt, time, acc, ref) { var content = '<div class="infer" data-set='+ id +'>'+ '<p>'+ txt +'</p>'+ '<div class="bottom">'+ '<small>'+ time +'</small>'+ '<span>'+ '<a class="up" href="javascript:;">'+ acc +'</a>'+ '<a class="down" href="javascript:;">'+ ref +'</a>'+ '<a class="inferDel" href="javascript:;">删除</a>'+ '</span>'+ '</div>'+ '</div>'; $('.create').prepend(content); } // 初始加载 init(); function init() { $.ajax({ type: 'POST', url: 'weibo.php', data: 'act=update', success: function (res) { var data = JSON.parse(res); $(data).each(function (index, value) { createEle(data[index].id, data[index].content, data[index].uptime, data[index].acc, data[index].ref); }) } }) } // 获取时间 function time() { var data = new Date(); function change(val) { if (val < 10) { return '0' + val; } else { return val; } } var arr = [data.getMonth() + 1 + '月', data.getDay() + '日 ', data.getHours() + ':', change(data.getMinutes()) + ':', change(data.getSeconds())]; return arr.join(''); } // 发送 创建 $('#send').click(function () { if ($('#text').val()) { var txt = $('#text').val(); $.ajax({ type: 'POST', url: 'weibo.php', data: 'act=add&content='+txt+'&time='+time(), success: function(res){ var mul = 0; var data = JSON.parse(res); createEle(data[data.length - 1].id, txt, time(), 0, 0); } }); } else { alert('输入不能为空'); } }); // 删除 $('body').on('click', '.inferDel', function () { $(this).parents('.infer').remove(); $.ajax({ type: 'POST', url: 'weibo.php', data: 'act=del&id='+$(this).parents('.infer').attr('data-set'), success: function(res){ } }); }) // 点赞 $('body').on('click', '.up', function () { $(this).html(parseInt($(this).html()) + 1); $.ajax({ type: 'POST', url: 'weibo.php', data: 'act=acc&id='+$(this).parents('.infer').attr('data-set')+'&acc='+$(this).html(), success: function(res){ } }); }) // 踩点 $('body').on('click', '.down', function () { $(this).html(parseInt($(this).html()) + 1); $.ajax({ type: 'POST', url: 'weibo.php', data: 'act=ref&id='+$(this).parents('.infer').attr('data-set')+'&ref='+$(this).html(), success: function(res){ } }); })
php
<?php // 设置页面内容是html,编码格式是utf-8 header('Content-type:text/html;charset=utf-8'); // 设置默认时区 date_default_timezone_set('Asia/Shanghai'); // 设置时间格式 define('DATETIME', date("y/m/d h:i:s")); // 显示错误信息On ini_set('display_errors', 'On'); // 连接数据库 // localhost是连接本地,root数据账号 数据库密码是空 数据库名usersql $con = new mysqli('localhost', 'root', '', 'usersql'); // 设置连接字符集 mysqli_query($con, 'set character set utf8'); // 设置客户端字符集 mysqli_query($con, 'set names utf8'); // 设置数据库报错信息 if ($con->connect_error) { die('数据库连接失败'.$con->connect_error); } else { // echo '数据库连接成功'; } // 插入数据 if ($_POST['act']=='add') { $txt = $_POST['content']; $time = $_POST['time']; // echo $time; $sql = "INSERT INTO weibo (content, uptime) VALUES ('$txt', '$time')"; $con->query($sql); $sql2 = 'SELECT * FROM weibo'; $result = $con->query($sql2); if ($result) { $test = array(); while($row = $result->fetch_assoc()) { $info = array("id" => $row['id'], "content" => $row['content'], "uptime" => $row['uptime'], "acc" => $row['acc'], "ref" => $row['ref']); array_push($test, $info); } echo json_encode($test); } else { echo "Error"; } // if ($con->query($sql)) { // echo mysqli_insert_id($con); // } else { // echo "Error"; // } } // 删除数据 if ($_POST['act']=='del') { $id = $_POST['id']; $sql = "DELETE FROM weibo WHERE id = '$id'"; $con->query($sql); } // 点赞数据 if ($_POST['act']=='acc') { $id = $_POST['id']; $acc = $_POST['acc']; $sql = "UPDATE weibo SET acc = '$acc' WHERE id = '$id'"; $con->query($sql); } // 踩点数据 if ($_POST['act']=='ref') { $id = $_POST['id']; $ref = $_POST['ref']; $sql = "UPDATE weibo SET ref = '$ref' WHERE id = '$id'"; $con->query($sql); } // 加载数据库 if ($_POST['act']=='update') { $sql = 'SELECT * FROM weibo'; $result = $con->query($sql); if ($result) { $test = array(); while($row = $result->fetch_assoc()) { $info = array("id" => $row['id'], "content" => $row['content'], "uptime" => $row['uptime'], "acc" => $row['acc'], "ref" => $row['ref']); array_push($test, $info); } echo json_encode($test); } else { echo "Error"; } } $con->close(); ?>
写完之后才知道$con->query($sql)是老版本的写法,现在的语法是mysqli_query($conn, $sql)。
最后加载数据库,对把数据处理成数组对象,转成json格式传递到前端,这里还是稍微纠结了一会儿,感觉写的可读性有点差……
// 加载数据库 if ($_POST['act']=='update') { $sql = 'SELECT * FROM weibo'; $result = mysqli_query($con, $sql); // if ($result) { $info = mysqli_fetch_all($result, MYSQLI_ASSOC); echo json_encode($info, JSON_UNESCAPED_UNICODE); // $test = array(); // while($row = $result->fetch_assoc()) { // array_push($test, $row); // } // echo json_encode($test, JSON_UNESCAPED_UNICODE); // echo json_encode($test); // } else { // echo "Error"; // } }
刚开始写的时候不知道用什么方法返回结果集,用了fetch_assoc()方法获取一行关联数组,再array_push()进一个空数组里。发现有mysqli_fetch_all()方法之后感觉自己愚蠢至极……直接用mysqli_fetch_all()处理结果集就行了,要加上MYSQLI_ASSOC使返回的是关联数组,方便AJAX遍历,否则返回的是没有索引的数组格式。
相关推荐
zyyjay 2020-11-09
xuebingnan 2020-11-05
samtrue 2020-11-22
stefan0 2020-11-22
yifangs 2020-10-13
songshijiazuaa 2020-09-24
hebiwtc 2020-09-18
天步 2020-09-17
83911535 2020-11-13
whatsyourname 2020-11-13
zhouyuqi 2020-11-10
Noneyes 2020-11-10
mathchao 2020-10-28
王志龙 2020-10-28
wwwsurfphpseocom 2020-10-28
diskingchuan 2020-10-23
savorTheFlavor 2020-10-23