我想在loop
内返回多个通知。我有2个函数,第一个从数据库中提取通知,第二个用于仪表板标题。仪表板标题是显示通知的位置。
现在,问题是,由于某种原因,只会显示一个通知。我已尝试将return
内的loop
更改为echo
,但会在dashboardTop()
开头输出通知。
出了什么问题,我该如何解决?
public function loopNotifications() {
$stmt = $this->conn->prepare("SELECT * FROM notification WHERE isto=:user_id");
$stmt->execute(array(':user_id'=>$_SESSION['user_id']));
while ($notification = $stmt->fetch(PDO::FETCH_ASSOC)) {
$from = $this->pullName($notification['isto']);
return '<li><a href="javascript:;">' . $notification['content'] . '</a></li>';
}
}
public function dashboardTop() {
echo '
<div class="collapse navbar-collapse">
<ul class="nav navbar-nav navbar-right">
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">
<i class="material-icons">notifications</i>
<span class="notification">' . $this->notificationCount() . '</span>
<p class="hidden-lg hidden-md">Notifications</p>
</a>
<ul class="dropdown-menu">
' . $this->loopNotifications() . '
</ul>
</li>
<li>
<a href="index.php?page=profile" class="dropdown-toggle" data-toggle="dropdown">
<i class="material-icons">person</i>
<p class="hidden-lg hidden-md">Profile</p>
</a>
</li>
</ul>
</div>
';
}
答案 0 :(得分:0)
public function loopNotifications() {
$stmt = $this->conn->prepare("SELECT * FROM notification WHERE isto=:user_id");
$stmt->execute(array(':user_id'=>$_SESSION['user_id']));
$out=''; //empty var tof concaternation
while ($notification = $stmt->fetch(PDO::FETCH_ASSOC)) {
$from = $this->pullName($notification['isto']);
$out.= '<li><a href="javascript:;">' . $notification['content'] . '</a></li>'; //concaternate each line in to string
}
return $out; //return whole string
}
public function dashboardTop() {
echo '
<div class="collapse navbar-collapse">
<ul class="nav navbar-nav navbar-right">
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">
<i class="material-icons">notifications</i>
<span class="notification">' . $this->notificationCount() . '</span>
<p class="hidden-lg hidden-md">Notifications</p>
</a>
<ul class="dropdown-menu">
' . $this->loopNotifications() . '
</ul>
</li>
<li>
<a href="index.php?page=profile" class="dropdown-toggle" data-toggle="dropdown">
<i class="material-icons">person</i>
<p class="hidden-lg hidden-md">Profile</p>
</a>
</li>
</ul>
</div>
';
}