За последние 24 часа нас посетили 20919 программистов и 1613 роботов. Сейчас ищут 1126 программистов ...

Звездочный реетирг.

Тема в разделе "PHP для новичков", создана пользователем Sofia, 30 июл 2011.

  1. Sofia

    Sofia Активный пользователь

    С нами с:
    25 сен 2008
    Сообщения:
    967
    Симпатии:
    2
    Видела не раз звездочный реетинг на сайтах, посоветуйте где взять исходник.
     
  2. jenya777777

    jenya777777 Активный пользователь

    С нами с:
    16 мар 2010
    Сообщения:
    562
    Симпатии:
    0
    в поисковике набери слова Звездный рейтинг jquery
     
  3. Sofia

    Sofia Активный пользователь

    С нами с:
    25 сен 2008
    Сообщения:
    967
    Симпатии:
    2
    jenya777777 я набирала, выводилось кучу нерабочих скриптов, поэтому решила спросить тут.
     
  4. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Sofia
    это очень просто сделать самому. В чем затык? Что такое аякс ты вроде слышала.
     
  5. Sofia

    Sofia Активный пользователь

    С нами с:
    25 сен 2008
    Сообщения:
    967
    Симпатии:
    2
    igordata
    да ну всеравно сразу все не понять, постепенно как-то приходит.

    Нашла из сотни самый доступный вот этот
    [​IMG]

    но там без испозовании базы. С базой пока не нашла.
     
  6. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    давай сама. за три часа будет готов полностью и целиком.
     
  7. rainarr

    rainarr Активный пользователь

    С нами с:
    20 ноя 2010
    Сообщения:
    276
    Симпатии:
    0
  8. Sofia

    Sofia Активный пользователь

    С нами с:
    25 сен 2008
    Сообщения:
    967
    Симпатии:
    2
    igordata да надеюсь, ковыряю вот...
    rainarr дада, мне тоже попадалась эта ссылка, но я так и не поняла как лучше организовать бд.
     
  9. rainarr

    rainarr Активный пользователь

    С нами с:
    20 ноя 2010
    Сообщения:
    276
    Симпатии:
    0
    как бы я делал:
    1. создам таблицу например pic_votes где будет pic_id, user_id, vote, time
    2. записываю, проверяю не голосовал ли юзер, проверяю от спама оценок по времени (не важно но желательно)
    3. ну а как сосчитать средний бал думаю разберетесь. )

    обязательно надо проверять оценку которая поступает в скрипт, ведь подделать ajax запрос проще простого - ибо было дело..
     
  10. Sofia

    Sofia Активный пользователь

    С нами с:
    25 сен 2008
    Сообщения:
    967
    Симпатии:
    2
    rainarr
    у меня есть таблица video
    в ней добавила video_count (сколько раз голосовали) и video_rate (бал голосаваний)
    так-же создала еще одну таблицу video_vote где создала колонки:
    id_vote уникальный id
    id_video должно вписываться уникальный id с таблицы video
    ip_user вписывается ip проголосовавшего пользователя.

    кажется правильно организовала структуру? осталось самое сложное :)

    борюсь, чай остыл...
     
  11. rainarr

    rainarr Активный пользователь

    С нами с:
    20 ноя 2010
    Сообщения:
    276
    Симпатии:
    0
    Кажется правильно, я так понял 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]

    надеюсь я не копетан очевидность, как то так.
     
  12. Sofia

    Sofia Активный пользователь

    С нами с:
    25 сен 2008
    Сообщения:
    967
    Симпатии:
    2
    rainarr нет, video_rate должен фиксировать ip адреса, чтоб повторно с того адреса не проголосавали за фильм, а сумма оценок должна лежать в video_rate таблицы video.

    т.е. хочется сразу начать делать защиту от повторного голосования. Или я не правильно организовала таблицу?
     
  13. rainarr

    rainarr Активный пользователь

    С нами с:
    20 ноя 2010
    Сообщения:
    276
    Симпатии:
    0
    все правильно

    PHP:
    1.  
    2. <?
    3. $check_vote=mysql_fetch_array(mysql_query("SELECT * FROM video_vote WHERE id_video='$video_id' && ip_user='{$_SERVER['REMOTE_ADDR']}' LIMIT 1"));
    4. if(!$check_vote){
    5.  // голосовать можно
    6. }
    7. ?>
    8.  
     
  14. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    Только 1 ip !== 1 компьютер. Под одним ip может целый город сидеть...
     
  15. rainarr

    rainarr Активный пользователь

    С нами с:
    20 ноя 2010
    Сообщения:
    276
    Симпатии:
    0
    это да, но видимо если регистрации на сайте нету, то выбор не велик :)
     
  16. Sofia

    Sofia Активный пользователь

    С нами с:
    25 сен 2008
    Сообщения:
    967
    Симпатии:
    2
    rainarr регистрация есть, но где хранить пользователей, в той-же таблице где фильмы? не представляю сколько там лишних записей тогда будет... а так, отдельная таблица созданна для записей ip. гости же тоже могут голосовать, и как учитывать?

    sobachnik да хоть пусть 50 лет сидит :) 1 раз за фильм проголосовал, и все... или ты думаешь что надо сделать такую возможность чтоб чеоловек менял свое мнение... "ой, я передумал, фильм не на 5 а на 2... хотя нет, на 3"... мне кажется это лишнее.

    застряла в самом начале, цикл вроде правильный, и запрос тоже, а ничего не выводит на экран... даже ошибок:
    PHP:
    1. <? $result = mysql_query("SELECT * FROM video,video_vote") or die(mysql_error());
    2. while($row = mysql_fetch_array( $result ))
    3. {
    4. echo "<table width=\"90%\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\" align=\"center\">
    5.  <tr>
    6.    <td width=\"30\" align=\"right\">".$row['video_id']."</td>
    7.    <td align=\"center\">Проголосовали ".$row['video_count']." и фильм имеет ".$row['video_rate']." баллов</td>
    8.    <td width=\"30\" align=\"right\">&nbsp;</td>
    9.  </tr>
    10.  <tr>
    11.    <td colspan=\"3\" align=\"center\"><div class=\"basic\" data=\"12_1\"></div></td>
    12.  </tr>
    13. </table>";
    14.        
    15. }
    16. ?>
     
  17. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    )))
    Не понимаю, как тебе удалось так истрактовать моё сообщение. Вообще-то я писал о том, что один и тот же IP адрес может быть одновременно у целого города. И тогда если один житель этого города проголосовал за фильм, другой (хотя он и живёт вообще в другой части города и никогда с первым не общался) при всём своём желании проголосовать не сможет, ему будет говориться, что он уже проголосовал за этот фильм :)
     
  18. rainarr

    rainarr Активный пользователь

    С нами с:
    20 ноя 2010
    Сообщения:
    276
    Симпатии:
    0
    либо в базе 0 записей, либо отключено отображение ошибок mysql..

    или же, скорей всего, нужно использовать ординарные кавычки echo ' ... '; хотя нет, это не причина, пожалуй будет просто советом :)
     
  19. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    [sql]SELECT * FROM video, video_vote[/sql]
    А тут, наверно, нужно указать по какому полю ты хочешь связать эти две таблицы.
     
  20. Sofia

    Sofia Активный пользователь

    С нами с:
    25 сен 2008
    Сообщения:
    967
    Симпатии:
    2
    video_vote пустое конечно, ведь еще результатов нет, незнаю еще, в чем может быть ошибка.. если бы с выборкой, то выдалась бы ошибка or die(mysql_error()
     
  21. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Sofia
    дорогу осилит идущий. видишь? =) все тебе помогают. Стоило только начать.
     
  22. Sofia

    Sofia Активный пользователь

    С нами с:
    25 сен 2008
    Сообщения:
    967
    Симпатии:
    2
    igordata да, только мы все пошли не в ту степь :)
    до меня дошло, зачем выводить содержимое таблицы video_vote там же только id фильмов и ip пользователей. В итоге все получилось с выводом:
    PHP:
    1. <?
    2. $result = mysql_query("SELECT * FROM video") or die(mysql_error());
    3. while($row = mysql_fetch_array( $result ))
    4. {
    5. echo "<table width=\"90%\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\" align=\"center\">
    6.  <tr>
    7.    <td width=\"30\" align=\"right\">".$row['video_id']."</td>
    8.    <td align=\"center\">Проголосовали ".$row['video_count']." и фильм имеет ".$row['video_rate']." баллов</td>
    9.    <td width=\"30\" align=\"right\">&nbsp;</td>
    10.  </tr>
    11.  <tr>
    12.    <td colspan=\"3\"><div class=\"basic\" data=\"12_".$row['video_id']."\"></div></td>
    13.  </tr>
    14. </table>";
    15.        
    16. }
    17. ?>
    18.  
    только вот <div class=\"basic\" data=\"12_".$row['video_id']."\"></div> по центру поставить нельзя, иначе звездочки показываться с центра будут :)

    теперь борюсь с занесением в бд данных.
    Что-то тут не верно:
    PHP:
    1. <?
    2. $result = mysql_query("SELECT * FROM video") or die(mysql_error());
    3. $row = mysql_fetch_array( $result );               
    4. $sql = "update video set video_rate=video_rate+'.$rate.'  where video_id='$row[video_id]'";
    5. mysql_query( $sql);
    6. ?>
     
  23. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    там все не верно =)

    пиши заново. поставь четко задачу, что ты хочешь сделать. Напиши плс.
     
  24. rainarr

    rainarr Активный пользователь

    С нами с:
    20 ноя 2010
    Сообщения:
    276
    Симпатии:
    0
    Я телепат, выше писал.

    [sql]UPDATE video SET video_count=video_count+1, video_rate=video_rate+'$rate' WHERE video_id='{$row[video_id]}'[/sql]
     
  25. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    а что такое простите $row[video_id]?