我无法弄清楚如何执行以下操作:
我在我的php文件中发送JSON数据以显示,唯一的问题是这一行:
$html .= '<img class="home-comment-profile-pic" src="'.$row['img'].'">';
这是一个问题的原因是因为它只检查数据库中的个人资料图片。那么,我创建用户的系统将具有其原始默认图像或他们上载的图像。所以,这个问题是如果有一个默认图像,那么它们就没有从数据库中提取的图像。所以我试图找出检查$row['img']
的方法,如果没有,则显示默认值。
默认图像的映射方式如下:<img class="home-profile-pic" src="profile_images/default.jpg">
我能在foreach下面有一个if语句,然后为此设置一个变量吗?如果是这样,怎么样?
foreach ($rows as $row) {
$html = "";
//$html .= '<div class="comment-post-box">';
$html .= '<div class="comment-post-box" id="comment-'.$row['id'].'">';
$html .= '<img class="home-comment-profile-pic" src="'.$row['img'].'">';
$html .= '<div class="comment-post-username">'.$row['username']. '</div>';
$html .= '<div>'.$row['date']. '</div>';
$html .= '<div class="comment-post-text">'.$row['comment']. '</div>';
$html .= '</div>';
$data = array('id' => $row['id'], 'date' => $row['date'], 'html' => $html);
$comments[] = $data;
}
修改
$user = new User();
//Get the last insert id
$select_comments_sql = "
SELECT c. *, p.user_id, p.img
FROM home_comments AS c
INNER JOIN (SELECT max(id) as id, user_id
FROM profile_img
GROUP BY user_id) PI
on PI.user_id = c.user_id
INNER JOIN profile_img p
on PI.user_id = p.user_id
and PI.id = p.id
ORDER BY c.id DESC
";
if ($select_comments_stmt = $con->prepare($select_comments_sql)) {
$select_comments_stmt->execute();
$rows = $select_comments_stmt->fetchAll(PDO::FETCH_ASSOC);
$comments = array();
foreach ($rows as $row) {
$html = "";
$html .= '<div class="comment-post-box" id="comment-'.$row['id'].'">';
//$html .= '<img class="home-comment-profile-pic" src="'.$row['img'].'">';
$html .= sprintf(
'<img class="home-comment-profile-pic" src="%s">',
empty($row['img']) ? 'profile_images/default.jpg' : $row['img']
);
$html .= '<div class="comment-post-username">'.$row['username']. '</div>';
$html .= '<div>'.$row['date']. '</div>';
$html .= '<div class="comment-post-text">'.$row['comment']. '</div>';
$html .= '</div>';
$data = array('id' => $row['id'], 'date' => $row['date'], 'html' => $html);
$comments[] = $data;
}
}
echo json_encode($comments);
答案 0 :(得分:3)
&#34;三元运算符&#34;在这种情况下非常方便:
$html .= sprintf(
'<img class="home-profile-pic" src="%s">',
empty($row['img']) ? 'profile_images/default.jpg' : $row['img']
);
如果你真的需要使用两个不同的类,你当然可以扩展这种方法:
$html .= sprintf(
'<img class="%s" src="%s">',
empty($row['img']) ? 'home-profile-pic' : 'home-comment-profile-pic',
empty($row['img']) ? 'profile_images/default.jpg' : $row['img']
);
三元运算符记录在其他比较运算符php implements:http://php.net/manual/en/language.operators.comparison.php
中答案 1 :(得分:2)
当然,您只需检查$row['img']
是否有值。例如,如果它是空的:
if (trim($row['img']) == '') {
$html .= '<img class="home-profile-pic" src="profile_images/default.jpg">';
} else {
$html .= '<img class="home-comment-profile-pic" src="'.$row['img'].'">';
}