Johnny Dillinger Опубликовано 23 мая, 2011 Жалоба Поделиться Опубликовано 23 мая, 2011 не как не могу в статью комментарий вкинуть...читал тут все дискуссии но толком никто ничего не предложил и ответа не нашел...я создал по аналогу таблицу в бд для отзывов по примеру отзывов к товару,вот мой код, что не так?Articles.class.php********************************************************************************************************************** require_once('Widget.class.php');class Articles extends Widget{ /** * * Конструктор * */ function Articles(&$parent) { Widget::Widget($parent); } /** * * Отображение * */ function fetch() { // Какую статью нужно вывести? $article_url = $this->url_filtered_param('article_url'); if (!empty($article_url)) { // Если передан id статьи, выводим ее return $this->fetch_item($article_url); } else { // Если нет, выводим список всех новостей return $this->fetch_list(); } } /** * * Отображение списка статей * */ function fetch_list() { // Выбираем статьи из базы $this->db->query('SELECT * FROM articles WHERE enabled=1 ORDER BY order_num DESC'); $articles = $this->db->results(); // Передаем в шаблон $this->smarty->assign('articles', $articles); $this->body = $this->smarty->fetch('articles.tpl'); // Устанавливаем метатеги для списка (если он вызван как голый модуль) $this->title = 'Статьи'; return $this->body; } /** * * Отображение отдельной статьи * */ function fetch_item($url) { // Выбираем статью из базы $query = sql_placeholder('SELECT * FROM articles WHERE url = ? AND enabled=1 LIMIT 1', $url); $this->db->query($query); // Если не существует такая статья - ошибка 404 if ($this->db->num_rows() == 0) { return false; } $item = $this->db->result(); // Устанавливаем метатеги для страницы с этой новостью $this->title = $item->meta_title; $this->keywords = $item->meta_keywords; $this->description = $item->meta_description; // Передаем в шаблон $this->smarty->assign('article', $item); $this->body = $this->smarty->fetch('article.tpl'); return $this->body; ### Принимает отзыв if (isset($_POST['comment'])) { $name = trim(strip_tags($_POST['name'])); $comment = trim(strip_tags($_POST['comment'])); if ($this->gd_loaded && ($_SESSION['captcha_code'] != $_POST['captcha_code'] || empty($_POST['captcha_code']))) { $this->error = 'Неверно введено число с картинки'; } elseif (empty($name)) { $this->error = 'Введите имя'; } elseif (empty($comment)) { $this->error = 'Пустой комментарий'; } else { $query = sql_placeholder("INSERT INTO articles_comments (date, article_id, ip, name, comment) VALUES(NOW(), ?, ?, ?, ?)", $article->article_id, $_SERVER['REMOTE_ADDR'], $name, $comment); $this->db->query($query); } // Приберем сохраненную капчу, иначе можно отключить загрузку рисунков и постить старую unset($_SESSION['captcha_code']); if($this->error) { $this->smarty->assign('name', $name); $this->smarty->assign('comment', $comment); } } ### $this->title = $article->meta_title; $this->keywords = $article->meta_keywords; $this->description = $article->meta_description; // Отзывы о товаре $query = sql_placeholder("SELECT *, DATE_FORMAT(date, '%d.%m.%Y') as date FROM articles_comments WHERE article_id=? ORDER BY comment_id DESC", $article->article_id); $this->db->query($query); $comments = $this->db->results(); $this->smarty->assign('comments', $comments); $this->smarty->assign('error', $this->error); $this->body = $this->smarty->fetch('article.tpl'); return $this->body; }}********************************************************************************************************************* Цитата Ссылка на сообщение Поделиться на другие сайты
Johnny Dillinger Опубликовано 23 мая, 2011 Автор Жалоба Поделиться Опубликовано 23 мая, 2011 и вот код статьи и отзыва к ней...точнее ее часть*********************************************************************************************************************<!-- Комментарии к статье /--> <div id="comments"> <a name=comments></a> <!-- Список каментов /--> <h2>Отзывы об этой статье</h2> {if $comments} {foreach from=$comments item=c} <!-- Отдельный камент /--> <div class="comment_pack"> <p><span class="comment_name">{$c->name|escape}</span> <span class="comment_date">{$c->date|escape}</span></p> <p class="comment_text" tooltip=comment comment_id={$c->comment_id}>{$c->comment|escape|nl2br}</p> </div> <!-- Отдельный камент #End /--> {/foreach} {else} Пока нет ни одного отзыва {/if} <!-- Список каментов #End /--> <h2>Оставить свой отзыв</h2> {if $error} <div id="error_block"><p>{$error}</p></div> {/if} <!-- Форма отзыва /--> <form action='{$smarty.server.REQUEST_URI}#comments' method=post> <!-- Текст камента /--> <p><textarea class="comment_textarea" format='.+' notice='Введите комментарий' name=comment>{$comment|escape}</textarea></p> <!-- Имя комментатора /--> <p class="comment_username">Ваше имя <input type="text" class="comment_username" name=name value="{$name|escape}" format='.+' notice='Введите имя' /> </p> <!-- Капча /--> {if $gd_loaded} <div class="captcha"> <img src="captcha/image.php?t={math equation='rand(10,10000)'}" alt=""/> <p>Число:</p> <p><input type="text" name=captcha_code format='.+' notice='Введите число с картинки' /></p> </div> {/if} <p><input type="submit" value="Отправить" class="comment_submit"/></p> </form> <!-- Форма отзыва #End /--> </div><!-- Комментарии к статье #End /-->**********************************************************************************************************************где я протупил или что не так сделал? П.С. за ранее спасибо... Цитата Ссылка на сообщение Поделиться на другие сайты
alaster Опубликовано 24 мая, 2011 Жалоба Поделиться Опубликовано 24 мая, 2011 fetch_item - корявенько написано, разбираться далее > return $this->body;не стал, ибо функция в этот момент закончила работу, и все дальнейшие потуги с обработкой пост запросов и коментами банально не выполнились. Цитата Ссылка на сообщение Поделиться на другие сайты
Johnny Dillinger Опубликовано 24 мая, 2011 Автор Жалоба Поделиться Опубликовано 24 мая, 2011 чет не понял... дело в том, что я даже вывести не могу даже вывести статьи.В базу ручками занес тестовую статью, но она не выводиться. есть какие нибудь идеи? может кто нить реализовал подобное.Я просто в смарти слаб(даже очень слаб), но есть стремление решить вопрос. Цитата Ссылка на сообщение Поделиться на другие сайты
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.