AngryPirate Опубликовано 3 сентября, 2012 Жалоба Поделиться Опубликовано 3 сентября, 2012 Странно добавил поле по аналогии с Name в комментариях, в базе дописал поле "text".но не проходит ни проверка ни запись... Цитата Ссылка на сообщение Поделиться на другие сайты
AngryPirate Опубликовано 3 сентября, 2012 Автор Жалоба Поделиться Опубликовано 3 сентября, 2012 ПРОВЕРКА И ДОБАВЛЕННОЕ ПОЛЕ <form class="comment_form" method="post"> <h2>Написать комментарий</h2> {if $error} <div class="message_error"> {if $error=='captcha'} Неверно введена капча {elseif $error=='empty_name'} Введите имя {elseif $error=='empty_mail'} Введите E-mail {elseif $error=='empty_comment'} Введите комментарий {/if} </div> {/if} <textarea class="comment_textarea" id="comment_text" name="text" data-format=".+" data-notice="Введите комментарий">{$comment_text}</textarea><br /> <div> <div style="float:left;"> <label for="comment_name">Имя</label> <input class="input_name" type="text" id="comment_name" name="name" value="{$comment_name}" data-format=".+" data-notice="Введите имя"/><br /> <label for="comment_mail">E-mail</label> <input class="input_mail" type="text" id="comment_mail" name="mail" value="{$comment_mail}" data-format=".+" data-notice="Введите E-mail"/><br /> <label for="comment_captcha">Число</label> <div class="captcha"><img src="captcha/image.php?{math equation='rand(10,10000)'}" alt='captcha'/></div> <input class="input_captcha" id="comment_captcha" type="text" name="captcha_code" value="" data-format="\d\d\d\d" data-notice="Введите капчу"/> </div> <?phprequire_once('Simpla.php');class Comments extends Simpla{ // Возвращает комментарий по id public function get_comment($id) { $query = $this->db->placehold("SELECT c.id, c.object_id, c.email, c.name, c.ip, c.type, c.text, c.date, c.approved FROM __comments c WHERE id=? LIMIT 1", intval($id)); if($this->db->query($query)) return $this->db->result(); else return false; } // Возвращает комментарии, удовлетворяющие фильтру public function get_comments($filter = array()) { // По умолчанию $limit = 0; $page = 1; $object_id_filter = ''; $type_filter = ''; $keyword_filter = ''; $approved_filter = ''; if(isset($filter['limit'])) $limit = max(1, intval($filter['limit'])); if(isset($filter['page'])) $page = max(1, intval($filter['page'])); if(isset($filter['ip'])) $ip = $this->db->placehold("OR c.ip=?", $filter['ip']); if(isset($filter['approved'])) $approved_filter = $this->db->placehold("AND (c.approved=? $ip)", intval($filter['approved'])); if($limit) $sql_limit = $this->db->placehold(' LIMIT ?, ? ', ($page-1)*$limit, $limit); else $sql_limit = ''; if(!empty($filter['object_id'])) $object_id_filter = $this->db->placehold('AND c.object_id in(?@)', (array)$filter['object_id']); if(!empty($filter['type'])) $type_filter = $this->db->placehold('AND c.type=?', $filter['type']); if(!empty($filter['keyword'])) { $keywords = explode(' ', $filter['keyword']); foreach($keywords as $keyword) $keyword_filter .= $this->db->placehold('AND c.name LIKE "%'.mysql_real_escape_string(trim($keyword)).'%" OR c.text LIKE "%'.mysql_real_escape_string(trim($keyword)).'%" '); } $sort='DESC'; $query = $this->db->placehold("SELECT c.id, c.object_id, c.ip, c.email, c.name, c.text, c.type, c.date, c.text, c.approved FROM __comments c WHERE 1 $object_id_filter $type_filter $keyword_filter $approved_filter ORDER BY id $sort $sql_limit"); $this->db->query($query); return $this->db->results(); } // Количество комментариев, удовлетворяющих фильтру public function count_comments($filter = array()) { $object_id_filter = ''; $type_filter = ''; $approved_filter = ''; $keyword_filter = ''; if(!empty($filter['object_id'])) $object_id_filter = $this->db->placehold('AND c.object_id in(?@)', (array)$filter['object_id']); if(!empty($filter['type'])) $type_filter = $this->db->placehold('AND c.type=?', $filter['type']); if(isset($filter['approved'])) $approved_filter = $this->db->placehold('AND c.approved=?', intval($filter['approved'])); if(!empty($filter['keyword'])) { $keywords = explode(' ', $filter['keyword']); foreach($keywords as $keyword) $keyword_filter .= $this->db->placehold('AND c.name LIKE "%'.mysql_real_escape_string(trim($keyword)).'%" OR c.text LIKE "%'.mysql_real_escape_string(trim($keyword)).'%" '); } $query = $this->db->placehold("SELECT count(distinct c.id) as count FROM __comments c WHERE 1 $object_id_filter $type_filter $keyword_filter $approved_filter", $this->settings->date_format); $this->db->query($query); return $this->db->result('count'); } // Добавление комментария public function add_comment($comment) { $query = $this->db->placehold('INSERT INTO __comments SET ?%, date = NOW()', $comment); if(!$this->db->query($query)) return false; $id = $this->db->insert_id(); return $id; } // Изменение комментария public function update_comment($id, $comment) { $date_query = ''; if(isset($comment->date)) { $date = $comment->date; unset($comment->date); $date_query = $this->db->placehold(', date=STR_TO_DATE(?, ?)', $date, $this->settings->date_format); } $query = $this->db->placehold("UPDATE __comments SET ?% $date_query WHERE id in(?@) LIMIT 1", $comment, (array)$id); $this->db->query($query); return $id; } // Удаление комментария public function delete_comment($id) { if(!empty($id)) { $query = $this->db->placehold("DELETE FROM __comments WHERE id=? LIMIT 1", intval($id)); $this->db->query($query); } } }ЧТО НЕ ТАК?????ФАЙЛ COMMENTS.PHP Цитата Ссылка на сообщение Поделиться на другие сайты
AngryPirate Опубликовано 3 сентября, 2012 Автор Жалоба Поделиться Опубликовано 3 сентября, 2012 подскажите что и где мне сделать и как? Цитата Ссылка на сообщение Поделиться на другие сайты
artve Опубликовано 26 ноября, 2012 Жалоба Поделиться Опубликовано 26 ноября, 2012 У кого-нибудь есть примеры удачной реализации? Сейчас не удобно, о товарах спрашивают а ответить нельзя, ничего кроме имени комментатора не известно. Еще было бы здорово иметь возможность отвечать на конкретный коммент, т.е. древовидные комментарии чтоб были, возможно? Цитата Ссылка на сообщение Поделиться на другие сайты
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.