前面讲了的思路我就不重复了2333,然后就直接开始好友表啦
这张表就是拿来记录好友关系,实现也很简单,就是前端给数据后台存就行了
代码实现
public function addFriend()
{
//获取json数据
$res = input('post.');
$username = $res["username"];
$friend = $res["friend"];
//判断数据是否接收到
if (!$username || !$friend)
{
echo "数据未能接收";
exit;
}
else
{
//添加数据进数据库
$data = ['user' => $username, 'friend' => $friend];
$res = Db::table("friend")
->insert($data);
//这里用户名和好友调转来存多一次是为了操作方便,其实存一个就够了的,只是后面用到他们的关系时没有那么简单实现完查找
$data2 = ['user' => $friend, 'friend' => $username];
$res2 = Db::table("friend")
->insert($data2);
if (!!$res||!!$res2)
{
echo "插入数据成功";
exit;
}
else
{
echo "插入数据失败";
exit;
}
}
}
前面都是铺垫,不过其实还是挺重要的,接下来就是写动态了,这个其实还是挺简单的,只需要把数据接受过来,图片在服务器上保存好,然后再将数据存储好就行了
贴下代码
public function write()
{
//接收json数据
$res = input('post.');
//用户名,动态内容,图片,图片类型,点赞数,时间
$user = $res["user"];
$dt = $res["dt"];
$pic = $res["pic"]; //这里pic如果没有图片前端传值传个false
$type = $res["type"]; //这个是图片类型,只接受jpg,jpeg,png格式的图片
$zan = 0; //一开始写动态的时候肯定没有人点赞,所以可以直接将它赋值为0
$time = $res["time"];
//这里是为了确定新加进数据库的动态的编号
$want = Db::table("comment")
->order('num', 'desc')
->limit(1)
->select();
if (!$want)
$num = 0; //如果数据库没有动态,那就直接编号为空
else
{
//select出来的数据是一个数组对象,所以要找回数据表对应的字段的值
$num = $want[0]["num"];
$num++;
}
//分开有没有图片进行处理
if (!!$pic) { //有图片
//储存图片
$locate = "pq";
$pic = bsTopic($user,$type,$pic,$locate);
$data = ['user' => $user, 'num' => $num, 'dt' => $dt, 'pic' => $pic, 'zan' => $zan, 'time' => $time];
$res = Db::table("comment")
->insert($data);
if (!!$res) {
echo "发布动态成功";
exit;
}
else {
echo "发布动态失败";
exit;
}
}
else { //无图片
$data = ['user' => $user, 'num' => $num, 'dt' => $dt, 'pic' => $pic, 'zan' => $zan, 'time' => $time];
$res = Db::table("comment")
->insert($data);
if (!!$res) {
echo "发布动态成功";
exit;
}
else {
echo "发布动态失败";
exit;
}
}
}
前面的代码用到了一个自己写的bsTopic函数,这里顺便贴一下解释一波
function bsTopic($name,$type,$code,$locate)
{
//标记当前时间,主要是为了构造一个不会重复的图片名
$time = time();
//name变量前面的都是路径,这里我放在了static文件下的img文件的py这个文件下面,后面加上{}的type是为了说明他是什么图片类型
$new_path = "static/img/"."$locate"."/"."$name.$time.{$type}";
//file_get_contents()是php自带函数,因为我让前端直接传base64编码,所以这里保存图片的时候还要进行解码
if (file_put_contents($new_path,base64_decode($code)))
{
//成功范湖新的路径
return $new_path;
}
else
{
//失败返回null
return null;
}
这里如果想对文件上传有更多了解的话可以看我写的另一篇博客,就不在这里重点讲了2333