Проблема со скриптом рейтинга PHP & MySQL?

0

Я нашел этот script на about.com, о котором я пытаюсь узнать, о том, как создать рейтинговую систему, но script по какой-то причине не будет считать голосование при нажатии ссылки и отправит меня страница, которая не найдена. Страница должна просто перезагрузить себя и подсчитать голоs >

Мне было интересно, как я могу исправить эту проблему? И какую часть кода мне нужно изменить и где?

Ниже показано, как выглядит страница, которую я тоже отправил.

Not Found

The requested URL /New was not found on this server. 

Ниже представлен script.

<?php
// Connects to your Database
mysql_connect("localhost", "root", "", "sitename") or die(mysql_error());
mysql_select_db("sitename") or die(mysql_error());



//We only run this code if the user has just clicked a voting link
if ( $mode=="vote")
{

//If the user has already voted on the particular thing, we do not allow them to vote again $cookie = "Mysite$id";
if(isset($_COOKIE[$cookie]))
{
echo "Sorry You have already ranked that site <p>";
}

//Otherwise, we set a cooking telling us they have now voted
else
{
$month = 2592000 + time();
setcookie(Mysite.$id, Voted, $month);

//Then we update the voting information by adding 1 to the total votes and adding their vote (1,2,3,etc) to the total rating
mysql_query ("UPDATE vote SET total = total+$voted, votes = votes+1 WHERE id = $id");
echo "Your vote has been cast <p>";
}
} 



//Puts SQL Data into an array
$data = mysql_query("SELECT * FROM vote") or die(mysql_error());

//Now we loop through all the data
while($ratings = mysql_fetch_array( $data ))
{

//This outputs the sites name
echo "Name: " .$ratings['name']."<br>";

//This calculates the sites ranking and then outputs it - rounded to 1 decimal
if($ratings['total'] > 0 && $ratings['votes'] > 0) {
    $current = $ratings['total'] / $ratings['votes'];
}
else{
     $current = 0;
}
echo "Current Rating: " . round($current, 1) . "<br>";

//This creates 5 links to vote a 1, 2, 3, 4, or 5 rating for each particular item
echo "Rank Me: ";
echo "<a href=".$_SERVER['PHP_SELF']."?mode=vote&voted=1&id=".$ratings['id'].">Vote 1</a> | ";
echo "<a href=".$_SERVER['PHP_SELF']."?mode=vote&voted=2&id=".$ratings['id'].">Vote 2</a> | ";
echo "<a href=".$_SERVER['PHP_SELF']."?mode=vote&voted=3&id=".$ratings['id'].">Vote 3</a> | ";
echo "<a href=".$_SERVER['PHP_SELF']."?mode=vote&voted=4&id=".$ratings['id'].">Vote 4</a> | ";
echo "<a href=".$_SERVER['PHP_SELF']."?mode=vote&voted=5&id=".$ratings['id'].">Vote 5</a><p>";
}
?>
  • 0
    Рейтинг должен быть популярной темой. Я заметил 5 вопросов, связанных с построением рейтинговой системы с php и mysql на SO за последние 2 дня.
Теги:

2 ответа

0
Лучший ответ

Какое значение $_SERVER['PHP_SELF']? Он содержит пробел? Вам нужно поставить кавычки вокруг значения href и закодировать все объекты HTML (например, &), поэтому последние строки будут выглядеть следующим образом:

echo "<a href=\"".htmlentities($_SERVER['PHP_SELF']."?mode=vote&voted=5&...").\"">Vote</a>";
  • 0
    Вы должны использовать там функцию urlencode , а не функцию htmlentities . И вы не должны включать строку запроса, потому что ? и & будет закодирован для аннулирования данных GET, которые он должен отправлять.
  • 0
    Что значит не включать строку запроса? извините за невежество, я новичок в этом.
Показать ещё 3 комментария
0

из документации php:

Имя исполняемого файла script, относящегося к корню документа. Например, $_SERVER ['PHP_SELF'] в script по адресу http://example.com/test.php/foo.bar будет

просто удалите эту вещь и напишите путь к script самостоятельно.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню