Пытаюсь написать что то вроде форума стараясь юзать mvc && oop, и тут проблема.
Есть 2 таблицы: post(title(pk),content), comment(id(pk), text,date,title(fk)).
И суть проблемы: при попытке добавить комментарий к посту,не понимаю как это правильно реализовать.
Контроллер страницы с постом:
Спойлер (Отобразить)PHP:
скопировать код в буфер обмена
class Controller_Post extends Controller { function __construct() { $this->model = new Model_Post(); $this->view = new View(); } function action_index() { $comment = $this->model->get_comment(); $data = $this->model->get_data(); $this->view->generate('post_view.php', 'template_view.php', $data, $comment); } }
Модель:
Спойлер (Отобразить)PHP:
скопировать код в буфер обмена
class Model_Post extends Model { public function get_data(){ $mysqli = Model::openConn(); $query = "SELECT * FROM post"; $result = $mysqli->query($query); $mysqli->close(); $result->data_seek(0); return $result; } public function get_comment(){ $mysqli = Model::openConn(); $query = "SELECT * FROM coment"; $result = $mysqli->query($query); $mysqli->close(); $result->data_seek(0); return $result; } public static function setComment($text,$title){ $mysqli = Model::openConn(); $query = "INSERT INTO coment (`text`, `date`, `title`) VALUES ('".$text."', '" .$date. "', '".$title."')"; $mysqli->query($query); $mysqli->close(); } }
ну и view
Спойлер (Отобразить)
PHP:
скопировать код в буфер обмена
<? $title = $_POST['title']; echo "<h5>" . $title . "</h5>"; echo "<hr>"; while($row = $data->fetch_assoc()){ if($title === $row['title']) echo $row['content']; } echo "<h5>Комментарии:</h5><hr>"; while($row = $comment->fetch_assoc()){ if($title === $row['title']) echo "Text: ". $row['text'] .";<br>Date:".$row['date']. "<br>"; } if(!empty($_POST['text'])){ Model_Post::setComment($_POST['text'], $title); echo "<script> window.location = '/post'; </script>"; } ?> <hr> <h6>Оставить комментарий:</h6> <form name="myform" action="/post" method="post"> <input type="text" hidden name = "title" value=<?=$title?>> <textarea rows="5" cols="45" name = "text"></textarea><br> <input type="submit" name="sub" value="Ответ"> </form>
Всё работает , но есть косяки: при написании коментария он сразу же не отобразится. Если обновить после этого страницу, пошлётся второй пост запрос и отправится 2 коммента.
|