Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> рейтинг 
:(
    Опции темы
Cens
Дата 8.9.2007, 17:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 29.12.2006

Репутация: нет
Всего: нет



Вопрос в следующем. Как мне создать рейтинг такого вида .. есть ссылки допустим + и - .. кликаем по плюсу .. добавляется один голос .. кликаем по минусу .. отнимается голос .. и все это выводится сразу .. т.е. нажали минус .. обновили страницу .. голоса одного нет.. Помогите пожалуйста
PM MAIL   Вверх
Acer
Дата 8.9.2007, 19:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 652
Регистрация: 5.9.2007
Где: UA::DN

Репутация: нет
Всего: 8



ну, это элементарно!
Сделай в таблице users (если статистика к юзерам относится) поле "rating" и сделай ссылку на плюсе и на минусе, например
index.php?rating=m1 - это типа минус 1
index.php?rating=p1 - это плюс.
А потом проверяй наличие $_GET['rating'] и делай запросы в БД
PM MAIL   Вверх
Cens
Дата 8.9.2007, 22:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 29.12.2006

Репутация: нет
Всего: нет



У меня без БД ... Как без бд реализовать?
PM MAIL   Вверх
console
Дата 8.9.2007, 23:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 307
Регистрация: 12.2.2007
Где: Belarus::Minsk

Репутация: 2
Всего: 3



javascript


--------------------
user posted image
Nothing is impossible
My WeBlog
PM MAIL WWW ICQ   Вверх
Acer
Дата 8.9.2007, 23:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 652
Регистрация: 5.9.2007
Где: UA::DN

Репутация: нет
Всего: 8



А почему сразу JavaScript ? Если нет БД, можно просто в текстовый файлик писать...
PM MAIL   Вверх
Cens
Дата 9.9.2007, 05:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 29.12.2006

Репутация: нет
Всего: нет



Допустим беру с тхт ..?
PM MAIL   Вверх
ewolf
Дата 9.9.2007, 12:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 389
Регистрация: 15.8.2006
Где: г. Москва

Репутация: 8
Всего: 18



Ну, в простейшем варианте с текстовым файлом можно сделать так.

Создаешь файл votes.info с таким содержимым

Код

<?php
   $votes = array( );
?>


(да, внутри именно php)
Ставим на него права 777

Создаем файл links.info, содержащий ссылки, по которым будут вестись голосования
Код

<?php
   $links = array(
                           1 => 'http://ya.ru',
                           2 => 'http://mail.ru',
                         );
?>


Теперь создаем файл, обрабатывающий голоса, например
addvote.php
Код

<?php
   include('links.info');
   include('votes.info');
   if( $_GET['vote'] == 'm1' )
      $vote_info = -1;
   else
      $vote_info = 1;

   if( isset($links[$_GET['link_id']]) )
      $votes[$_GET['link_id']] += $vote_info;
   else
      die('Нет такой ссылки');

   $file = fopen('votes.info', 'w');
   fwrite($file, '<?php $votes = '.var_export($votes, true).'; ?>');
   fclose($file);
   // Ну, или просто file_put_contents, если у тебя php5
?>


PM MAIL ICQ   Вверх
CTAzz
Дата 9.9.2007, 17:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 98
Регистрация: 16.9.2006
Где: Россия, index.php

Репутация: нет
Всего: нет



Дабы не заводить похожую тему задам еще вопрос, есть тоже самое "+" и "-", как с использованием mysql сделать голосование по ип адресу?
Как вести записи в таблицу, чтобы не сильно грузить
PM MAIL   Вверх
ewolf
Дата 9.9.2007, 17:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 389
Регистрация: 15.8.2006
Где: г. Москва

Репутация: 8
Всего: 18



Ну, надо создать такую таблицу для статей

tbl_articles
article_ID | rating

И еще одну такую

tbl_voters
article_ID | voter_IP

Соотвественно написать на php код по типу такого

Код

<?php
   $article_ID = (int)$_GET['article_id'];
   $ip = $_SERVER['REMOTE_ADDR'];

   // Проверка, что пользователь с IP уже проголосовал
   $query = "SELECT voter_IP FROM tbl_voters WHERE article_ID = '{$article_ID}' AND voter_IP = '".ip2long($ip)."' LIMIT 1";
   $result = mysql_query($query);
   if( mysql_num_rows() > 0 )
      die('Извините, вы уже проголосовали');
   
   if( $_GET['vote'] == 'm1' )
      $query = "UPDATE tbl_articles SET rating = rating - 1 WHERE article_ID = '{$article_ID}' ";
   else
      $query = "UPDATE tbl_articles SET rating = rating + 1 WHERE article_ID = '{$article_ID}' ";
   mysql_query($query);   

   $query = "INSERT INTO  tbl_voters SET article_ID = '{$article_ID}', voter_IP = '".ip2long($ip)."' ";
   mysql_query($query);
?>


разумеется, надо добавить проверку на наличие статьи в базе

+ обратите внимание, что у некоторых пользователей может быть одинаковый IP

Это сообщение отредактировал(а) ewolf - 9.9.2007, 17:28
PM MAIL ICQ   Вверх
CTAzz
Дата 9.9.2007, 18:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 98
Регистрация: 16.9.2006
Где: Россия, index.php

Репутация: нет
Всего: нет



Статья в базе имеется, ну если со временем данная таблица "tbl_voters" может иметь больше миллиона значений, тем самым поиск проверки ипа и статьи может затруднится или же нет?
PM MAIL   Вверх
ewolf
Дата 9.9.2007, 18:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 389
Регистрация: 15.8.2006
Где: г. Москва

Репутация: 8
Всего: 18



Сделайте articel_ID индексом, voter_IP - естественно число. Поиск будет проходить очень быстро.
PM MAIL ICQ   Вверх
CTAzz
Дата 9.9.2007, 20:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 98
Регистрация: 16.9.2006
Где: Россия, index.php

Репутация: нет
Всего: нет



Спасибо за помощь, только нашел ошибку: 
не 
Код

if( mysql_num_rows() > 0 )


а 
Код

if( mysql_num_rows($result) > 0 )

PM MAIL   Вверх
Acer
Дата 10.9.2007, 12:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 652
Регистрация: 5.9.2007
Где: UA::DN

Репутация: нет
Всего: 8



Цитата(ewolf @  9.9.2007,  17:26 Найти цитируемый пост)
+ обратите внимание, что у некоторых пользователей может быть одинаковый IP

К тому же может быть, что у одного юзера могут быть разные IP(динамический).
PM MAIL   Вверх
ewolf
Дата 10.9.2007, 12:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 389
Регистрация: 15.8.2006
Где: г. Москва

Репутация: 8
Всего: 18



Цитата(CTAzz @  9.9.2007,  20:21 Найти цитируемый пост)
Спасибо за помощь, только нашел ошибку:

Пожалуйста. Конечно, ошибки могут быть в коде, т.к. я его не проверял, а писал прямо тут.

Также обрати внимание, что IP может не всегда определяеться или, как уже сказали раньше, быть разным у одного пользователя. Можно добавить доп. проверку, устанавливая куки.
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0869 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.