检查和/或设置按钮状态mvc php

时间:2015-03-13 14:54:17

标签: php html mysql

我是php / mvc的新手并尝试使用小型网站。

我想根据选择的查询更改为按钮的状态。这是一个简单的'收藏'切换按钮。查询将查看我的数据库的“favourite”表,其中包含“isFav”字段(0或1)。

如果查询找到结果(1),并且颜色默认(btn-),我希望按钮颜色为绿色(btn-success)默认)如果不是(0)。

应该简单但我似乎无法得到它。我认为我在视图和模型之间传递变量时感到困惑。

我的 books_model.php 代码如下

class BooksModel
{

    public function isFav()
        {
            $book_id = $_GET['id']; // from url
            $user_id=$_SESSION['user_id'];
            $sql = "SELECT isFav FROM favourite WHERE book_id = :book_id AND user_id = :user_id AND isFav = 1";
            $query = $this->db->prepare($sql);
            $query->bindParam(':book_id', $book_id);
            $query->bindParam(':user_id', $user_id);
            $query->execute();

            if ($query->rowCount() == 1) {
                    $css = 'btn-success';
                    echo $css; //for testing
                } else {
                    $css = 'btn-default';
                    echo $css; // for testing
                }
        }
}

我的 books.php 控制器如下;

class Books extends Controller
{

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

我的 itemView.php html按钮代码如下;

echo '<button class="btn '.$css.'"></button>';

页面上打印的唯一内容是btn-success或btn-default(左上角)。只要我点击按钮,这就会切换。因此,我认为我的查询正在运行。

代码道歉我是新手,我非常感谢所提供的任何帮助,甚至是正确方向的一点。

1 个答案:

答案 0 :(得分:1)

试试这个:

public function isFav() {
    (...)
    if ($query->rowCount() == 1) {
        $css = 'btn-success';
        echo $css; //for testing
    } else {
        $css = 'btn-default';
        echo $css; // for testing
    }
    return $css;
}

在你的观点中:

echo "<button class=\"btn ".$itemView_model->isFav()."\"></button>";

原因:您的$css方法中的变量isFav()在您的视图中未知(变量的范围是isFav()方法)。
这一行:
    $ itemView_model-&GT; isFav(); 请求此函数的返回值,因此,显然返回值bust以便可用。
您看到看似正确答案的原因是echo调用与$css变量的范围相同。