用戶潘多拉的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值,從而獲得該用戶的兩個圖片。