数据库思想——一个人有两个图片,在数据库中以逗号分隔,前台循环出来

在这里插入图片描述
用户潘多拉的newname字段有两张图片,其中以逗号分隔,怎么能够在显示全部用户的情况下让潘多拉的这两张图片都显示出来呢?

<!Doctype html>
<head>
<title>撸起袖子加油干</title>
<meta charset='utf-8'>
<script src="__STATIC__/js/jquery-3.3.1.min.js"></script>
<script src="__STATIC__/js/layer/layer.js"></script>
</head>
<body>
<form method="post" action="{:url('index/index')}" enctype="multipart/form-data">
<table border="1" width="600" height="400">
    <tr>
        <td>姓名</td>
        <td>密码</td>
        <td>头像</td>
    </tr>
    {foreach $data as $data}
    <tr>
        <td>{$data.uname}</td>
        <td>{$data.upwd}</td>
        <td>
            {foreach $data.newname as $val}
                <img src="__ROOT__/uploads/{$val}" width="40" height="40">
            {/foreach}
        </td>
    </tr>
    {/foreach}
</table>
<!-- <input type="file" name="image[]" /><br />
<input type="file" name="image[]" /><br />
<input type="submit" name="sub" id='sub' value='点我'> -->
</form>
</body>
</html>
<?php
namespace app\index\controller;
use think\Controller;
use think\Request;
use think\Db;
use think\db\Query;
 
 
class Index extends Controller
{
    public function index()
    {  
        if(isset($_POST['sub']))
        {
            $files = request()->file('image');
            foreach($files as $file)
            {
                $info = $file->move(ROOT_PATH . 'public' . DS . 'uploads');
                if($info)
                {
                    $img[]=$info->getSaveName(); 
                }
                else{
                    echo '上传失败';die;
                }   
            }
            $img=implode(',',$img);
            $result=Db::name('users')
                ->insert(['newname'=>$img,'uname'=>'王志涛','upwd'=>12345,'rtime'=>'2018-08-10','rid'=>1]);
            if($result)
            {
                echo '添加成功';
            }
            else
            {
                echo '添加失败';
            }
        }
        else
        {
            $sql=Db::name('users')
                ->select();

            for($i=0;$i<count($sql);$i++)
            {
                $sql[$i]['newname']=explode(',',$sql[$i]['newname']);
            }
            $this->assign('data',$sql);
            return $this->fetch('index');  
        }
    }
}

在视图中打印一下传过来的data数据:
在这里插入图片描述
发现newname字段变成了数组,一共是三维数组,图片在数据库中存的是以逗号分隔的字符串,要想两个都循环显示出来,就要想办法把它变成数组,这就能取$data.newname的value值,从而获得该用户的两个图片。
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_42249896/article/details/85164305