Рейтинг система

cold_zero

Registered
Някой може ли да ми даде рейтинг система със звездички да показва там и половин звездички и т.н. ,също така да записва резултатите в базата данни. Мерси предварително! :wink:
 
cold_zero каза:
Някой може ли да ми даде рейтинг система със звездички да показва там и половин звездички и т.н. ,също така да записва резултатите в базата данни. Мерси предварително! :wink:

Има много хубав урок за рейтинг система .
Писан е от kitchenbg .
Потърси го.
 
Не е хубава тази система защото можеш да гласуваш КОЛКОТО СИ ИСКАШ!
 
е не е толкова трудно, да се напраи да записва ИП-то на гласувалия и да се прави проверка. наи елементарно е да се скрие бутона ако му е записан ИП адреса
 
Използвах системата от урока, но нищо не става... Дори на гласувам с 5, то си записва 0 незнам защо. После при самото изкарване на резултатите от базата данни не ми се генерира картинката спрямо резултата, а ми изкарва само цифрата 0.

Ето и кодовете:
Във view.php
Код:
<form name="Rate_Form" method="post" action="rateprocess.php">
<select size="1" name="rating">
<option selected value="5">5 - Отлично</option>
<option value="4">4 - Много добро</option>
<option value="3">3 - Средно</option>
<option value="2">2 - Става</option>
<option value="1">1 - Невъзможно</option>
<option value="0">0 - Несъм пробвал</option>
</select>
<input type="hidden" name="id_st" value="'.$file.'">
<input type="submit" value="Гласувай">
</form>

rateprocess.php
Код:
<?
$id_st=$_POST['id_st'];
$dbhost="localhost";
$dbusername ="user";
$dbpass="pass";
$dbname="zonewatch";

$connection = mysql_connect($dbhost, $dbusername, $dbpass);
$SelectedDB = mysql_select_db($dbname);


$query = mysql_query ("SELECT rating, num_votes FROM clips WHERE code='$id_st'") or die (mysql_error());


while(list($rating_art, $num_votes_art)= mysql_fetch_array($query))
{

$new_count = ($num_votes_art + 1);

$dl_rating2 = ($rating_art * $num_votes_art);

$new_rating = (($rating + $dl_rating2) / ($new_count));

$new_rating2 = number_format($new_rating, 2, '.', '');


$update_rating = mysql_query("UPDATE clips SET rating='$new_rating2' and num_votes='$new_count' WHERE code='$id_st'");


echo "<div align='center'><b>
<p>Вашият глас беше отчетен!</p>
<p>Новият рейтинг е:
$new_rating2</p>";
}

if((($new_rating2 >= 0)or($new_rating2 == 0)) && ($new_rating2 <= 0.50)){
echo "<img src='img/00star.gif' width='80' height='16'>";
}
if((($new_rating2 >= 0.50)or($new_rating2 == 0.50)) && ($new_rating2 <= .99)){
echo "<img src='img/05star.gif' width='80' height='16'>";
}
if((($new_rating2 >= 1.00)or($new_rating2 == 1.00)) && ($new_rating2 <= 1.49)){
echo "<img src='img/1star.gif' width='80' height='16'>";
}
if((($new_rating2 >= 1.50)or($new_rating2 == 1.50)) && ($new_rating2 <= 1.99)){
echo "<img src='img/15star.gif' width='80' height='16'>";
}
if((($new_rating2 >= 2.00)or($new_rating2 == 2.00)) && ($new_rating2 <= 2.49)){
echo "<img src='img/2star.gif' width='80' height='16'>";
}

if((($new_rating2 >= 2.50)or($new_rating2 == 2.50)) && ($new_rating2 <= 2.99)){
echo "<img src='img/25star.gif' width='80' height='16'>";
}

if((($new_rating2 >= 3.00)or($new_rating2 == 3.00)) && ($new_rating2 <= 3.49)){
echo "<img src='img/3star.gif' width='80' height='16'>";
}

if((($new_rating2 >= 3.50)or($new_rating2 == 3.50)) && ($new_rating2 <= 3.99)){
echo "<img src='image/35star.gif' width='80' height='16'>";
}
if((($new_rating2 >= 4.00)or($new_rating2 == 4.00)) && ($new_rating2 <= 4.49)){
echo "<img src='img/4star.gif' width='80' height='16'>";
}
if((($new_rating2 >= 4.50)or($new_rating2 == 4.50)) && ($new_rating2 <= 4.99)){
echo "<img src='img/45star.gif' width='80' height='16'>";
}
if($new_rating2 == 5.0){
echo "<img src='img/5star.gif' width='80' height='16'>";
}

?>

Изваждането на записа
Код:
$new_rating2 = $row[rating];
if((($new_rating2 >= 0)or($new_rating2 == 0)) && ($new_rating2 <= 0.50)){
echo "<img src='img/00star.gif' width='80' height='16'>";
}
if((($new_rating2 >= 0.50)or($new_rating2 == 0.50)) && ($new_rating2 <= .99)){
echo "<img src='img/05star.gif' width='80' height='16'>";
}
if((($new_rating2 >= 1.00)or($new_rating2 == 1.00)) && ($new_rating2 <= 1.49)){
echo "<img src='img/1star.gif' width='80' height='16'>";
}
if((($new_rating2 >= 1.50)or($new_rating2 == 1.50)) && ($new_rating2 <= 1.99)){
echo "<img src='img/15star.gif' width='80' height='16'>";
}
if((($new_rating2 >= 2.00)or($new_rating2 == 2.00)) && ($new_rating2 <= 2.49)){
echo "<img src='img/2star.gif' width='80' height='16'>";
}

if((($new_rating2 >= 2.50)or($new_rating2 == 2.50)) && ($new_rating2 <= 2.99)){
echo "<img src='img/25star.gif' width='80' height='16'>";
}

if((($new_rating2 >= 3.00)or($new_rating2 == 3.00)) && ($new_rating2 <= 3.49)){
echo "<img src='img/3star.gif' width='80' height='16'>";
}

if((($new_rating2 >= 3.50)or($new_rating2 == 3.50)) && ($new_rating2 <= 3.99)){
echo "<img src='image/35star.gif' width='80' height='16'>";
}
if((($new_rating2 >= 4.00)or($new_rating2 == 4.00)) && ($new_rating2 <= 4.49)){
echo "<img src='img/4star.gif' width='80' height='16'>";
}
if((($new_rating2 >= 4.50)or($new_rating2 == 4.50)) && ($new_rating2 <= 4.99)){
echo "<img src='img/45star.gif' width='80' height='16'>";
}
if($new_rating2 == 5.0){
echo "<img src='img/5star.gif' width='80' height='16'>";
}
това е при while, а това е в HTML-то
Код:
<font face="Trebuchet MS" size="2">Рейтинг:</font> <font face="Tahoma" style="font-size: 9pt"><b>'.$new_rating2.'</b></font>
 
Оправих всичко :D Как да направя да може само веднъж от IP да се оценява?
 
трябва да добавиш още една колона във базата данни където да записва IP адресите, в интерес на истината съм се заел да го правя това, ако успея ще ти дам кода :?:
 
Значи правя нова таблица в която ще се записват id-a на на файла който ще се оценява и ip-то на потребителя. Сега как да направя сравнение и ако вече id със стойност 2 е оценен от потребител с IP 127.0.0.1 да не може да го оцени пак?
 
пиша без тестване.

да предположим, че $ip ти е IP-то на потребителя което присвояваш в момента, а $usrip е IP-то записано в MySQL ще имаш нещо такова:

Код:
if($ip==$usrip)
{
echo "Вече сте гласувал";
}
else
{
echo "<form name=\"Rate_Form\" method=\"post\" action=\"rateprocess.php\">
<select size=\"1\" name=\"rating\">
<option selected value=\"5\">5 - Отлично</option>
<option value=\"4\">4 - Много добро</option>
<option value=\"3\">3 - Средно</option>
<option value=\"2\">2 - Става</option>
<option value=\"1\">1 - Невъзможно</option>
<option value=\"0\">0 - Несъм пробвал</option>
</select>
<input type=\"hidden\" name=\"id_st\" value=\"'.$file.'\">
<input type=\"submit\" value=\"Гласувай\">
</form>";

дали да се показва формата или не... но понеже имаш само 1 ред, а едва ли само 1 човек ще гласува, трябва да направиш нова ДБ. примерно IP и в нея да имаш:

ip
id_st - това е връзката м-у двете таблици (тази е от урока)
usrip - тук записваш ip адресите.
 
Нещо не става като хората... Оцених един клип след това не ми даде да го оценя пак, това добре, но после озених друг клип и на него си ми дава да го оценя пак.

Изваждането от БД
Код:
$queryIP = "SELECT* FROM voteip where file='$play'";
$resultIP = mysql_query($queryIP) or die('Error, query failed');

while($rowIP = mysql_fetch_array($resultIP))
{
$usrip = $rowIP[ip];
}

Взимането на IP-то на потребителя

Код:
$ip = $_SERVER["REMOTE_ADDR"];

Показване на резултатите
Код:
if($usrip==$ip)
{
echo '  <font face="Trebuchet MS" style="font-size: 10pt">Вие вече сте гласували за този клип!</font>';
}
else
{ 


echo '<form name="Rate_Form" method="post" action="rateprocess.php">
  <select style="BORDER-RIGHT: #000 1px solid; FONT-SIZE: 11px; BORDER-TOP: #000 1px solid; BORDER-LEFT: #000 1px solid; BORDER-BOTTOM: #000 1px solid; FONT-FAMILY: verdana" size="1" name="rating">
<option selected value="5">5 - Отлично</option>
<option value="4">4 - Много добро</option>
<option value="3">3 - Средно</option>
<option value="2">2 - Става</option>
<option value="1">1 - Тъпо</option>
<option value="0">0 - Отвратително</option>
</select>
<input type="hidden" name="id_st" value="'.$file.'">
<input type="submit" value="Гласувай"> 
</form>';

}
 
:oops: няма грешка, по точно грешката е при няколко клипа за които дава да се гласува колкото си искаш, иначе при другите е ОК...
 

Горе