Перейти к содержанию
Официальный форум поддержки Simpla

Рекомендуемые сообщения

Странно добавил поле по аналогии с Name в комментариях, в базе дописал поле "text".но не проходит ни проверка ни запись...

Ссылка на сообщение
Поделиться на другие сайты

ПРОВЕРКА И ДОБАВЛЕННОЕ ПОЛЕ

<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
Ссылка на сообщение
Поделиться на другие сайты
  • 2 месяца спустя...

У кого-нибудь есть примеры удачной реализации? Сейчас не удобно, о товарах спрашивают а ответить нельзя, ничего кроме имени комментатора не известно. Еще было бы здорово иметь возможность отвечать на конкретный коммент, т.е. древовидные комментарии чтоб были, возможно?

Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
×
×
  • Создать...