我正在尝试使用php和mysql编写一个简单的mvc应用程序。我是非常新的mvc和相对新的PHP也是如此。我让用户从不同的电影中选择,然后将他们想要的电影添加到他们自己的列表中。但我无法弄清楚如何获得正确的表单操作将选择的电影插入到数据库中。
这是我的两个模型类方法的样子:
public function checkMovie() {
// Check if movie exist in db.
$stmt = $this->dbh->prepare("SELECT * FROM watchlist WHERE my_title='{$_POST['my_title']}'");
$stmt->bindParam(':my_title', $_POST['my_title']);
$stmt->execute();
$rows = $stmt->fetchALL();
$this->n = count($rows);
}
public function addMovie() {
// Add choosen movie to db.
$sql = $this->dbh->prepare("INSERT INTO watchlist(my_title, my_des, my_link)
VALUES ('{$_POST['my_title']}', '{$_POST['my_des']}', '{$_POST['my_link']}')");
$sql->bindParam(':my_title', $_POST['my_title'], PDO::PARAM_STR);
$sql->bindParam(':my_des', $_POST['my_des'], PDO::PARAM_STR);
$sql->bindParam(':my_link', $_POST['my_link'], PDO::PARAM_STR);
$sql->execute(array(':my_title' => $_POST['my_title'],':my_des' => $_POST['my_des'],':my_link' => $_POST['my_link']));
}
正如您所看到的,我在这里有基本的sql代码,然后从控制器中的方法调用方法:
public function getAddMovie() {
$this->addModel = new AddMovieModel();
if (isset($_POST['submit'])) {
// Call checkmovie from addmoviemodel and check if movie allready is taken.
$checkmovie = $this->addModel->checkMovie();
if($this->n > 0) { // Should this logic perhaps be in my model?
// Shows javascript-popup eg. 'movie allready added'.
include 'view/viewscripterror.php';
}
else { // Call addMovie from addmoviemodel to insert movie to db.
$addmovie = $this->addModel->addMovie();
// Shows javascript-popup eg. 'movie is now added'.
include 'view/viewscriptsuccess.php';
}
}
}
我不确定if($this->n > 0)
是否也应该出现在我的模型中?
这是表格,我无法弄清楚作为表格动作传递什么?这个问题让我疯狂了一段时间,这就是为什么我要转向这里希望得到一些帮助。
echo '<form action="??" method="post">',
'<input type="hidden" name="my_title" value="'.$title.'">',
'<input type="hidden" name="my_des" value="'.$description.'">',
'<input type="hidden" name="my_link" value="'.$link.'">',
'<input type="submit" name="submit" value="Peppa!">',
'</form></div>';
答案 0 :(得分:1)
尝试
echo '<form action="http://site_url/getAddMovie" method="post">',
你需要将函数getAddMovie
的url传递给动作,然后在提交之后,它会将参数传递给该函数。
尝试加载模型
$this->load->model('AddMovieModel');
尝试将其称为
$checkmovie = $this->AddMovieModel->checkMovie();
甚至你可以试试
$addModel = new AddMovieModel();
并将其称为
$checkmovie = $addModel->checkMovie();