Помогите пожалуйста, немогу настроить свой скрипт голосования.

  • Автор темы BeatBox
  • Дата начала

SelenIT

IT-лунатик :)
Теоретически - не должны загнуться.
Практически - смотря как с ними работать.

Это достаточно просто проверить: сделай тестовую БД с такой же структурой и таким количеством записей и поделай к ней запросы, аналогичные запросом из твоих скриптов. Посмотри, сколько времени они будут выполняться. А для серьезного анализа существует EXPLAIN. Но без теории все равно никак не обойтись.
 

BeatBox

Guest
а все-таки? :) можно хотя бы намек, ка же правильно сделать? :) недумаю что в книжке будет раздел "как создать такое голосование" :)

-~{}~ 08.03.05 01:44:

Да меня больше интересует не столько правильность вывода результатов, а именно то, насколько корректно храняться голоса.
 

SelenIT

IT-лунатик :)
А ты отвлекись от конкретики задачи (голосование это или еще что-либо). Рассматривай задачу абстрактно. И когда начнешь вникать в теорию, обнаружишь, что большинство практических задач укладывается в небольшое число типичных схем, для которых сущетсвуют проверенные стандартные решения.

А насчет хранения голосов - как минимум приемлемо. Но еще лучше будет вынести в отдельную таблицу юзеров (id юзера - имя юзера) и в таблице голосований хранить только id-ы. Тогда в ней останутся только числовые поля, которые и места занимают меньше, и индексы по ним работают быстрее.
 

BeatBox

Guest
Хм! Впринципе у меня юзеры со своими айдишниками есть в таблице юзеров.
Спасибо! В любом случае вы меня успокоили, сказав что БД выдержит такое кол-во информации ;)

-~{}~ 08.03.05 02:01:

Последний вопрос, может не по теме.
Мжно л в обьединенном запросе дать ограничение WHERE не для всего запроса, а только для одного его элемента?
 

SelenIT

IT-лунатик :)
BeatBox
уточни, что ты имеешь в виду под "элементом запроса"
 

BeatBox

Guest
Прошу - проверьте на правильность кода:
PHP:
$sql = "SELECT a.vote_mark as vote_mark, b.vote_mark as yourvotewas FROM ".$prefix."_vote as a LEFT JOIN ".$prefix."_vote as b on (a.user_voted='$username') WHERE a.vote_id='$game_id' AND a.vote_act='game'";
на его основании просчитываеться резуьтат голосованния (реди админов\среди юзеров) а также выводит оценку юзера, который смотрит страницу (если он конечно голосовал).

-~{}~ 08.03.05 02:25:

yourvotewas - это оцнка пользователя, который просматривает код. $username получаю из декода куков
 

SelenIT

IT-лунатик :)
Зачем здесь связывание? Тут по сути 3 независимые выборки: среднее для юзеров (один диапазон id-ов), среднее для админов (другой диапазон id-ов) и одно значение - для текущего юзера. Проще всего, на мой взгляд, выбрать это тремя элементарными запросами.
 

BeatBox

Guest
Ок. просто я думал что чем ментше запросов - тем лучше :)
 

SelenIT

IT-лунатик :)
Как правило это так, но из каждого правила бывают исключения.
 
Сверху