【问题标题】:Display number of user favourites / notifications显示用户收藏/通知的数量
【发布时间】:2015-03-06 20:14:48
【问题描述】:

我是 php 和 mvc 结构的新手,但是我正在开发一个用于个人开发的库应用程序。一切都按预期工作,但是我想再实现一项功能-“收藏夹”。

<div> 中包含的通知样式栏。

我目前有一个 favourites 表,其中包含以下内容;

id    book_id    user_id
1     2422       22
2     6551       71
3     7716       22

我想要做的只是显示给登录用户(例如上面的用户 22)“你好,你的收藏中有 2 个项目”。我知道这应该相对简单,通常是这样,但是 mvc 格式让我有点困惑。

我认为我已经完成了大部分工作,我只需要一些关于我哪里出错的方向和建议。还有什么我应该加载或包括的吗?我应该如何显示<div> 中的收藏数量?

我在下面包含了我的代码以供参考。

books_controller.php

function checkFav()
    {
        $checkFav_model = $this->loadModel('Books');
        $checkFav_model->wishList();
    }

function itemView()
    {
        $itemView_model = $this->loadModel('Books');
        $this->view->books = $itemView_model->itemView();
        $this->view->render('books/itemView');
    }

books_model.php

public function wishList()
 {
    $userid=$_SESSION['user_id'];

    $sql = "SELECT COUNT(*) FROM favourite WHERE user_id = :user_id";
    $query = $this->db->prepare($sql);
    $query->bindParam(':user_id', $userid);
    $query->execute();
    $rows_found = $query->fetchColumn();//numRows doesnt work

     if(empty($rows_found)) {
        echo $rows_found;
    } else { 
        echo $rows_found;
    }
 }

header.php

<div class="notifications">
**DISPLAY NUMBER OF FAVS HERE**
</div>

【问题讨论】:

  • 按用户ID计算图书作为关键字。只有一个 id 为 22 的用户,并且有很多书。所以你算了这本书。
  • 那么主要的问题是什么?首先,使用上面的 ori 代码,您得到了正确的计数结果吗?二、如何在某个元素上显示结果的问题?

标签: php mysql ajax pdo


【解决方案1】:

试试这个查询:

$sql = "SELECT COUNT(book_id) AS book FROM favourite WHERE user_id = :user_id";

原因:用户有很多喜欢的书。还有你的报价

“您好,您收藏了 2 件商品”

所以我想你想展示他喜欢多少书。不是他喜欢这本书多少次。但是可以通过SUM 上的user_id 来完成。

【讨论】:

  • 谢谢,我的 header.php 中的
    里面有什么?
  • user_id 拥有的图书总数。如果你问如何实现结果,这取决于你。在您的 PHP 上通过 json_encode 使用纯 PHP 或 JSON 字符串。
【解决方案2】:

嗯,也许是这样:

$sql = "SELECT COUNT(id) as count FROM favourite WHERE user_id = :user_id";
$query = $this->db->prepare($sql);
$query->bindParam(':user_id', $userid);
$query->execute();
$rows_found = $query->fetchAll();
$rows_found = $rows_found[0][count];

【讨论】:

  • &lt;?php echo $rows_found; ?&gt;
  • 将结果存储在局部变量中并将其传递给您的视图。因为这是我认为的自定义代码,所以我不知道你用来从你的模型或控制器等传递 var 的方法。
  • 那么传递数据查看的方法是什么。在 CI 中它使用 $this-&gt;load-&gt;view('my_view', $data) 在 laravel return View::make('my_view')-&gt;with('data', $data) 所以通过这种方法我们知道在我们的视图中我们正在寻找变量 data 来接收控制器发送的数据。
  • 太好了,你发现了吗?也许您可以从两个答案中选择一个?你更喜欢哪一个。
猜你喜欢
相关资源
最近更新 更多
热门标签