數據庫思想——一個人有兩個圖片,在數據庫中以逗號分隔,前臺循環出來

在這裏插入圖片描述
用戶潘多拉的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值,從而獲得該用戶的兩個圖片。
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章