Русскоязычный форум, посвященный фреймворку Kohana

Все о фреймворке Kohana. Обсуждение уроков, документации.
Текущее время: 05 июл 2025, 15:29

Часовой пояс: UTC + 4 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 20 ]  На страницу Пред.  1, 2
Автор Сообщение
 Заголовок сообщения: Re: Голосование
СообщениеДобавлено: 20 авг 2012, 17:59 
Не в сети
Новичок

Зарегистрирован: 17 авг 2012, 16:00
Сообщения: 12
этот запрос же нужно дописать?
Получилось что то вроде....


$query = DB::query(Database::SELECT, 'SELECT COUNT(id) AS count FROM '. $this->_tableRatingIp .' WHERE id = :id AND ip = :ip AND TO_DAYS(NOW()) - TO_DAYS(`time`)<= 1')
->parameters(array(
':id' => $id,
':ip' => $ip,


))
->execute()->as_array();


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Голосование
СообщениеДобавлено: 20 авг 2012, 22:58 
Не в сети
Новичок

Зарегистрирован: 17 авг 2012, 16:00
Сообщения: 12
В итоге получился вот такой запрос...

public function set_rating($id, $ip, $time, $mark)
{
$query = DB::query(Database::SELECT, 'SELECT COUNT(id) AS count FROM '. $this->_tableRatingIp .' WHERE id = :id AND TO_DAYS(NOW()) - TO_DAYS(`time`)<= 1')
->param(':id', $id)

->execute()->as_array();

if($query[0]['count'] == 0)
{
$query = DB::query(Database::SELECT, 'SELECT mark FROM '. $this->_tableRating .' WHERE id = :id')
->param(':id', $id)
->execute()->as_array();

if($query)
{

DB::query(Database::UPDATE, 'UPDATE '. $this->_tableRating .' SET mark = mark + :mark WHERE id = :id')
->parameters(array(
':mark' => $mark,
':id' => $id,
))
->execute();
}
else
{
DB::query(Database::INSERT, 'INSERT INTO '. $this->_tableRating .' (id, mark) VALUES (:id, :mark)')
->parameters(array(
':id' => $id,
':mark' => $mark
))
->execute();
}

DB::query(Database::INSERT, 'INSERT INTO '. $this->_tableRatingIp .' (id, ip, time) VALUES (:id, :ip, :time)')
->parameters(array(
':id' => $id,
':ip' => $ip,
':time' => $time
))
->execute();
}
}

и

public function render($id)
{
$rating_mark = Arr::get($_POST, 'rating_mark');

if($rating_mark)
{
if($rating_mark == 1 || $rating_mark == -1)
{
$ip = mysql_escape_string($_SERVER['REMOTE_ADDR']);
$time = date('Y-m-d [H:i:s]');
$rating = Model::factory('Rating')->set_rating($id, $ip, $time, $rating_mark);
}
}

$rating = Model::factory('Rating')->get_rating($id);

if($rating_mark)
echo $rating;
else
{
$view = $this->config['view'];

return View::factory($view)
->set('id', $id)
->set('rating', $rating);
}
}


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Голосование
СообщениеДобавлено: 21 авг 2012, 17:50 
Не в сети
Новичок

Зарегистрирован: 17 авг 2012, 16:00
Сообщения: 12
Ну в прочем не все так гладко как казалось... В итоге получилось, что только 1 юзер какой то может проголосовать раз в день за другого... а все остальные получается мимо... поэтому я добавил еще 1 отличающийся параметр - $user_id (соответственно и столбец с таким же именем в 'rating_ip'. Ибо проверка по ip меня не устраивает... только по аку...

Обновил запрос до :

$query = DB::query(Database::SELECT, 'SELECT COUNT(id) AS count FROM '. $this->_tableRatingIp .' WHERE id = :id AND TO_DAYS(NOW()) - TO_DAYS(`time`)<= 1 AND user_id = :user_id')
->param(':id', $id)
->param(':user_id', $user_id)
->execute()->as_array();


По аналогии как и с Time добавил переменные... В классе сделал так :

$rating_mark = Arr::get($_POST, 'rating_mark');

if($rating_mark)
{
if($rating_mark == 1 || $rating_mark == -1)
{
$user_id = Auth::instance()->get_user();
$ip = mysql_escape_string($_SERVER['REMOTE_ADDR']);
$time = date('Y-m-d [H:i:s]');
$rating = Model::factory('Rating')->set_rating($id, $ip, $time, $user_id, $rating_mark);
}
}
И в общем то суть проблемы: Когда пытаюсь нажать на кулачек голосавания, ничего не происходит и тупо выкидывает из акка(log off) не подскажите почему так происходит ? Для проверки писал любую цифру в айди все норм... как то по другому айди выцепить надо...


Последний раз редактировалось impulse 22 авг 2012, 10:56, всего редактировалось 2 раз(а).

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Голосование
СообщениеДобавлено: 21 авг 2012, 17:56 
Не в сети
Бывалый

Зарегистрирован: 16 апр 2012, 19:44
Сообщения: 113
Все потому, что вы в запрос объект биндите.

надо
Код:
$user_id = Auth::instance()->get_user();
$user_id = $user_id->id; //вроде напрямую с Auth нельзя получить id

как-то так...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Голосование
СообщениеДобавлено: 22 авг 2012, 10:52 
Не в сети
Новичок

Зарегистрирован: 17 авг 2012, 16:00
Сообщения: 12
Да нет, так 100раз делал... всё работать должно и так и так... вопрос до сих пор актуален... :(


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Голосование
СообщениеДобавлено: 22 авг 2012, 11:34 
Не в сети
Бывалый

Зарегистрирован: 16 апр 2012, 19:44
Сообщения: 113
Должно? или Вы проверили?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Голосование
СообщениеДобавлено: 22 авг 2012, 11:38 
Не в сети
Новичок

Зарегистрирован: 17 авг 2012, 16:00
Сообщения: 12
проверили


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Голосование
СообщениеДобавлено: 23 авг 2012, 15:17 
Не в сети
Новичок

Зарегистрирован: 17 авг 2012, 16:00
Сообщения: 12
Автор модуля подскажите хоть примерно в чем может быть проблема?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Голосование
СообщениеДобавлено: 25 авг 2012, 18:47 
Не в сети
Администратор
Аватара пользователя

Зарегистрирован: 12 фев 2012, 01:02
Сообщения: 462
Прошу прощения, заработался.
Учитывая, что вы фактически полностью переделали всю начинку, мне трудно так сказать.
Вообще планирую похожее голосование на одном из своих сайтов внедрять, гляну, если успею за выходные...

_________________
kohanaframework.su - обучение фреймворку Kohana


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Голосование
СообщениеДобавлено: 27 авг 2012, 09:53 
Не в сети
Новичок

Зарегистрирован: 17 авг 2012, 16:00
Сообщения: 12
Ничего капитального я не переделывал, просто вместо IP хочу использовать user id ... как его тут правильнее передать...


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 20 ]  На страницу Пред.  1, 2

Часовой пояс: UTC + 4 часа [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Все о фреймворке Kohana  | 
Powered by phpBB® Forum Software © phpBB Group