Jump to content
  • 0

Как пишется на PHP+MySQL рейтинг для статей звездочками


Victor2009year
 Share

Question

Как пишется рейтинг оценки статьи в цифрах и звездочками?

нужно чтобы было PHP+MySQL.

Есть код с перечнем оценок.

Как сделать так чтобы возле статьи стояли звездочки ретинга и рядом стояла цифра рейтинга?

Link to comment
Share on other sites

20 answers to this question

Recommended Posts

  • 0
В чём именно сложность? В подсчёте среднего арифметического или занесении оценки в базу?

Для меня на данном этапе неонятным есть момент механизма отображения закрашенных и незакрашеннх звездочек которые отображают механизм рейтинга статьи.

Если взять механизм котрый математически обрабатывает оценку:

$con = $temp_array['count'] + 1;

$rating_sum = $temp_array['rating'] +$an;

Где:

count-количество посетителей

rating-балл до математического подсчета(и после математического подсчета общий балл записывается опять же в rating и потом выводится из базы на сайт возле статьи)

записываются в базу:

mysql_query("UPDATE $userstable SET `con` = " . $con . ', `rating` = ' . $rating . ' WHERE `id` = ' . $id );

Правда тут своя проблема, какую бы статью не оценил, оценка почему-то дается только одной статье.

Пробовал писать и так:

$result = MYSQL_QUERY( "SELECT count, rating, zagol FROM $userstable WHERE id='$id'" )

и

так:

$result = MYSQL_QUERY( "SELECT * FROM $userstable WHERE id='$id'" )

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

В чем проблема помогите??

Link to comment
Share on other sites

  • 0
записываются в базу:

mysql_query("UPDATE $userstable SET `con` = " . $con . ', `rating` = ' . $rating . ' WHERE `id` = ' . $id );

Во-первых в запросе три вида кавычег, помоему перебор ...

а во вторых посмотрите что будет выводить

$query="UPDATE $userstable SET `con` = " . $con . ', `rating` = ' . $rating . ' WHERE `id` = ' . $id;
Echo $query;
mysql_query($query);

Link to comment
Share on other sites

  • 0
Во-первых в запросе три вида кавычег, помоему перебор ...

а во вторых посмотрите что будет выводить

$query="UPDATE $userstable SET `con` = " . $con . ', `rating` = ' . $rating . ' WHERE `id` = ' . $id;
Echo $query;
mysql_query($query);

Спасибо что откликнулись.

Вы знаете во время очередной попытки заработало.

Теперь такое подскажите пожалуйста с чего начинать делать рейтинг "звездочками", если есть личный опыт, какой механизм Вы использовали. Понимаю что кода для ретинга "звездочками" будет много. Можен у Вас есть ссылки с примерами(желательно пошагово) и на понятном языке.

Заранее благодарю.

Link to comment
Share on other sites

  • 0

дык, определяешь полученный рейтинг (round($rate/$count)) и делаешь цикл от 1 до полученного значения. В цикле рисуешь закрашенные звёздочки. А оставшееся место забиваешь пустыми.

Link to comment
Share on other sites

  • 0
дык, определяешь полученный рейтинг (round($rate/$count)) и делаешь цикл от 1 до полученного значения. В цикле рисуешь закрашенные звёздочки. А оставшееся место забиваешь пустыми.

Спасибо что откликнулись.

Скажите сами "звездочки" должны быть картинками(с началом кода <img src=... и так далее) и храниться в папке на сервере и какой тип картинки лучше?

или

"Звездочки" должны быть элементом самого PHP кода или HTML кода т.е. тегом, тогда каким?

Заранее благодарю за ответ.

Link to comment
Share on other sites

  • 0

Как вариант, можно сделать прозрачную картинку-маску с "вырезанными изнутри" контурами звездочек, а под ней выводить полоску нужной ширины, чтоб она просвечивала сквозь них. Честно говоря, ни разу не видел такой реализации, но сам, пожалуй, делал бы так (короче и логичнее, на мой взгляд:).

Link to comment
Share on other sites

  • 0
дык, определяешь полученный рейтинг (round($rate/$count)) и делаешь цикл от 1 до полученного значения. В цикле рисуешь закрашенные звёздочки. А оставшееся место забиваешь пустыми.

Доброго времени суток

У меня перечень оценок для рэйтинга:

от -5 ..... до 5

Скажите если вот этот код:

( ( $temp_array[ "rating".$i ] == "0" ) ? "0" : $echo_proc )

( ( $temp_array[ "rating".$i ] == "0" ) ? "100" : ( 100 - $echo_proc ) )

добавляет звездочки рэйтинга для оценок со знаком + (плюс) и полоска звездочек двигается с лева на право, то пожалуйста помогите написать так чтобы когда посетитель оценивает статью оценкой со знаком - (минус) чтобы рядом полоска с другим цветом двигалась с права в левую сторону.

Т.е. код должен уметь считать отрицательные оценки(оценки типа -5) и увеличивать звездочки согласно вычисленному отрицательному числу.

Понимаю что при исчислении из положительного числа "звездочки" сперва уменьшаются в зоне положительных чисел до нуля(0), а если сумма отрицательных чисел будет возрастать, то после этого появятся "заездочки" другого цвета(заранее приготовленные) с левой стороны.

Но как написать это в коде?

Заранее благодарен за ответ.

Link to comment
Share on other sites

  • 0
Лично я ничего не понял, что куда двигается и что находится в $temp_array.

Вычисление модуля - abs()

Доброго времени суток.

$result = MYSQL_QUERY( "SELECT * FROM $userstable WHERE id='$id'" )

$temp_array = mysql_fetch_array( $result );

$echo_proc = (round($rating/$count));

Если что-то упустил, поправьте.

С благодарностью за помощ.

Link to comment
Share on other sites

  • 0

А почему $temp_array[ "rating".$i ] два раза сравнивается с нулём? Почему не один?

Что конкретно нужно сделать? Можно как-нибудь доступно рассказать? Две полоски, в плюс и в минус и чтобы одна переходила в другую если рейтинг сменил знак?

Link to comment
Share on other sites

  • 0
А почему $temp_array[ "rating".$i ] два раза сравнивается с нулём? Почему не один?

Что конкретно нужно сделать? Можно как-нибудь доступно рассказать? Две полоски, в плюс и в минус и чтобы одна переходила в другую если рейтинг сменил знак?

Прошу меня извинить за неполный комментарий.

В моем случае перечень оценок такой: -5 -4 -3 -2 -1 0 1 2 3 4 5

<td background="./image/star.gif" width="'.( ( $temp_array[ "rating".$i ] == "0" ) ? "0" : $echo_proc ).'%" class="minilogo"></td> <!-- красные звездочки -->

<td background="./image/star2.gif" width="'.( ( $temp_array[ "rating".$i ] == "0" ) ? "100" : ( 100 - $echo_proc ) ).'%" class="minilogo"></td><!-- белые звездочки -->

Здесь такая штука в первом (<td...) красные звездочки которые появляются когда оценка статьи есть допустим от 0 до 5.

Во втором (<td...) белые звездочки заполняют все оставшееся место.

Этот вариант в данном случае настроен для красных звездочек.

Поскольку в перечне оценок есть оценки с отрицательным знаком, нужно как-то дописать код для того чтобы математически PHP сосчитал бы отрицательные оценки и выдавал бы общее отрицательное число(приплюсовывал бы каждую отрицательную оценку) и выдавал бы общий отрицательный балл. И в качестве отрицательного балла стояли бы синие звездочки.

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

Допустим с лева синие звездочки(если кому-то из посетителей статья непонравилась оценил ее оценкой -5), с права красные звездочки(если ктому-то из посетителей статья понравилась и статью оценили оценкой 5).

Link to comment
Share on other sites

  • 0
$r=mysql_query("select rate from rating whete rate < 0");
$mx=mysql_num_rows($r);
$sum=0;
for ($i=0;$i<$mx;$i++)
$sum+=mysql_result($r,$i);

Доброго времени суток.

Спасибо за помощ.

Вы знаете запустил вариант предложенный Вами и вот что мне браузер выдал:

Warning: mysql_result(): supplied argument is not a valid MySQL result resource in c:\usr\home\www.slava.ua\www\php\ocenka.php on line 172

Далее пожалуйста обьясните в строке:

$r=mysql_query("select rate from rating whete rate < 0");

команды:rate(но у меня нет такой ячейки), whete(возможно это where)?

Заранее благодарен за помощ.

Link to comment
Share on other sites

  • 0

Имя ячейки и таблицы я с потолка брал, я же не знаю как у Вас таблица устроена. Вставьте свои значения.

where просто опечатка :lol:

//Помощь женского рода

Edited by Int
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy