igordata да ну всеравно сразу все не понять, постепенно как-то приходит. Нашла из сотни самый доступный вот этот но там без испозовании базы. С базой пока не нашла.
интересно стало что это такое, сразу нашел http://www.myjqueryplugins.com/jRating/demo ну а базу прикрутить это совсем уж дело 5 минут
igordata да надеюсь, ковыряю вот... rainarr дада, мне тоже попадалась эта ссылка, но я так и не поняла как лучше организовать бд.
как бы я делал: 1. создам таблицу например pic_votes где будет pic_id, user_id, vote, time 2. записываю, проверяю не голосовал ли юзер, проверяю от спама оценок по времени (не важно но желательно) 3. ну а как сосчитать средний бал думаю разберетесь. ) обязательно надо проверять оценку которая поступает в скрипт, ведь подделать ajax запрос проще простого - ибо было дело..
rainarr у меня есть таблица video в ней добавила video_count (сколько раз голосовали) и video_rate (бал голосаваний) так-же создала еще одну таблицу video_vote где создала колонки: id_vote уникальный id id_video должно вписываться уникальный id с таблицы video ip_user вписывается ip проголосовавшего пользователя. кажется правильно организовала структуру? осталось самое сложное борюсь, чай остыл...
Кажется правильно, я так понял video_rate должен содержать сумму всех оценок? Интересный вариант кстати id_vote помомему ненужаня запись [sql] UPDATE video SET video_count=video_count+1, video_rate=video_rate+'$rate' WHERE video_id='$video_id' INSERT INTO video_vote (id_video, ip_user) VALUES ('$video_id', '{$_SERVER['REMOTE_ADDR']}') [/sql] надеюсь я не копетан очевидность, как то так.
rainarr нет, video_rate должен фиксировать ip адреса, чтоб повторно с того адреса не проголосавали за фильм, а сумма оценок должна лежать в video_rate таблицы video. т.е. хочется сразу начать делать защиту от повторного голосования. Или я не правильно организовала таблицу?
все правильно PHP: <? $check_vote=mysql_fetch_array(mysql_query("SELECT * FROM video_vote WHERE id_video='$video_id' && ip_user='{$_SERVER['REMOTE_ADDR']}' LIMIT 1")); if(!$check_vote){ // голосовать можно } ?>
rainarr регистрация есть, но где хранить пользователей, в той-же таблице где фильмы? не представляю сколько там лишних записей тогда будет... а так, отдельная таблица созданна для записей ip. гости же тоже могут голосовать, и как учитывать? sobachnik да хоть пусть 50 лет сидит 1 раз за фильм проголосовал, и все... или ты думаешь что надо сделать такую возможность чтоб чеоловек менял свое мнение... "ой, я передумал, фильм не на 5 а на 2... хотя нет, на 3"... мне кажется это лишнее. застряла в самом начале, цикл вроде правильный, и запрос тоже, а ничего не выводит на экран... даже ошибок: PHP: <? $result = mysql_query("SELECT * FROM video,video_vote") or die(mysql_error()); while($row = mysql_fetch_array( $result )) { echo "<table width=\"90%\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\" align=\"center\"> <tr> <td width=\"30\" align=\"right\">".$row['video_id']."</td> <td align=\"center\">Проголосовали ".$row['video_count']." и фильм имеет ".$row['video_rate']." баллов</td> <td width=\"30\" align=\"right\"> </td> </tr> <tr> <td colspan=\"3\" align=\"center\"><div class=\"basic\" data=\"12_1\"></div></td> </tr> </table>"; } ?>
))) Не понимаю, как тебе удалось так истрактовать моё сообщение. Вообще-то я писал о том, что один и тот же IP адрес может быть одновременно у целого города. И тогда если один житель этого города проголосовал за фильм, другой (хотя он и живёт вообще в другой части города и никогда с первым не общался) при всём своём желании проголосовать не сможет, ему будет говориться, что он уже проголосовал за этот фильм
либо в базе 0 записей, либо отключено отображение ошибок mysql.. или же, скорей всего, нужно использовать ординарные кавычки echo ' ... '; хотя нет, это не причина, пожалуй будет просто советом
[sql]SELECT * FROM video, video_vote[/sql] А тут, наверно, нужно указать по какому полю ты хочешь связать эти две таблицы.
video_vote пустое конечно, ведь еще результатов нет, незнаю еще, в чем может быть ошибка.. если бы с выборкой, то выдалась бы ошибка or die(mysql_error()
igordata да, только мы все пошли не в ту степь до меня дошло, зачем выводить содержимое таблицы video_vote там же только id фильмов и ip пользователей. В итоге все получилось с выводом: PHP: <? $result = mysql_query("SELECT * FROM video") or die(mysql_error()); while($row = mysql_fetch_array( $result )) { echo "<table width=\"90%\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\" align=\"center\"> <tr> <td width=\"30\" align=\"right\">".$row['video_id']."</td> <td align=\"center\">Проголосовали ".$row['video_count']." и фильм имеет ".$row['video_rate']." баллов</td> <td width=\"30\" align=\"right\"> </td> </tr> <tr> <td colspan=\"3\"><div class=\"basic\" data=\"12_".$row['video_id']."\"></div></td> </tr> </table>"; } ?> только вот <div class=\"basic\" data=\"12_".$row['video_id']."\"></div> по центру поставить нельзя, иначе звездочки показываться с центра будут теперь борюсь с занесением в бд данных. Что-то тут не верно: PHP: <? $result = mysql_query("SELECT * FROM video") or die(mysql_error()); $row = mysql_fetch_array( $result ); $sql = "update video set video_rate=video_rate+'.$rate.' where video_id='$row[video_id]'"; mysql_query( $sql); ?>
Я телепат, выше писал. [sql]UPDATE video SET video_count=video_count+1, video_rate=video_rate+'$rate' WHERE video_id='{$row[video_id]}'[/sql]