@kulabuhov

Проблема с выводом рейтинга, в чём проблема?

Вывожу рейтинг на странице. Есть 3 статьи, все они выводятся на главной и у каждой должен быть свой рейтинг. Добавил на 1, всё работает, всё записывается в базу данных, а вот добавляю на вторую и уже ошибка.

Сам рейтинг вывожу данным кодом:
<?
require('form.php');

$userrating="2"; // имя пользователя за кооторого голосуем, или ID

echo rating_bar($userrating,5);
?>


У статьи 1 userrating="1" , у статьи 2 соответственно значение равно 2

Далее, сам файл form.php
<?php
function rating_bar($id, $units = '', $static = '')
{
		require('confrate.php');
		$rating_tableName = 'ratings';
		$rating_path_db = '';
		$rating_path_rpc = '';
		$rating_unitwidth = 17;
		$rating_conn = mysql_connect($database_host, $database_username, $database_password) or die('Error connecting to mysql');
		$ip = $_SERVER['REMOTE_ADDR'];
		if (!$units)
		{
				$units = 10;
		}
		if (!$static)
		{
				$static = false;
		}
		$query = mysql_query("SELECT total_votes, total_value, used_ips FROM ".$database_name.".".$rating_tableName." WHERE id='".$id."' ") or die(" Error: " . mysql_error());
		if (mysql_num_rows($query) == 0)
		{
				$sql = "INSERT INTO ".$database_name.".".$rating_tableName." (`id`,`total_votes`, `total_value`, `used_ips`) VALUES ('".$id."', '0', '0', '')";
				$result = mysql_query($sql);
		}
		$numbers = mysql_fetch_assoc($query);
		if ($numbers['total_votes'] < 1)
		{
				$count = 0;
		}
		else
		{
				$count = $numbers['total_votes'];
		}
		$current_rating = $numbers['total_value'];
		$tense = ($count == 1) ? "vote" : "votes";
		$voted = mysql_num_rows(mysql_query("SELECT used_ips FROM ".$database_name.".".$rating_tableName." WHERE used_ips LIKE '%" . $ip . "%' AND id='" . $id . "' "));
		$rating_width = @number_format($current_rating / $count, 2) * $rating_unitwidth;
		$rating1 = @number_format($current_rating / $count, 1);
		$rating2 = @number_format($current_rating / $count, 2);
		if ($static == 'static')
		{
				$static_rater = array();
				$static_rater[] .= "\n" . '<div class="ratingblock">';
				$static_rater[] .= '<div id="unit_long' . $id . '">';
				$static_rater[] .= '<ul id="unit_ul' . $id . '" class="unit-rating" style="width:' . $rating_unitwidth * $units . 'px;">';
				$static_rater[] .= '<li class="current-rating" style="width:' . $rating_width . 'px;">Текущий ' . $rating2 . '/' . $units . '</li>';
				$static_rater[] .= '</ul>';
				$static_rater[] .= '<p class="static">' . $id . '. Рейтинг: <strong> ' . $rating1 . '</strong>/' . $units . ' (' . $count . ' ' . $tense . ' cast) <em>This is \'static\'.</em></p>';
				$static_rater[] .= '</div>';
				$static_rater[] .= '</div>' . "\n\n";
				return join("\n", $static_rater);
		}
		else
		{
				$rater = '';
				$rater .= '<div class="ratingblock">';
				$rater .= '<div id="unit_long' . $id . '">';
				$rater .= '  <ul id="unit_ul' . $id . '" class="unit-rating" style="width:' . $rating_unitwidth * $units . 'px;">';
				$rater .= '     <li class="current-rating" style="width:' . $rating_width . 'px;">Текущий ' . $rating2 . '/' . $units . '</li>';
				for ($ncount = 1; $ncount <= $units; $ncount++)
				{
						if (!$voted)
						{
								$rater .= '<li><a href="/rat/db.php?j=' . $ncount . '&amp;q=' . $id . '&amp;t=' . $ip . '&amp;c=' . $units . '" title="' . $ncount . ' из ' . $units . '" class="r' . $ncount . '-unit rater" rel="nofollow">' . $ncount . '</a></li>';
						}
				}
				$ncount = 0;
				$rater .= '  </ul>';
				$rater .= '  <p';
				if ($voted)
				{
						$rater .= ' class="voted"';
				}
				$rater .= '  </p>';
				$rater .= '</div>';
				$rater .= '</div>';
				return $rater;
		}
}
?>


Ну и в шапке стили и скрипт
<script type="text/javascript" src="rating.js"></script>
<link rel="stylesheet" type="text/css" href="style.css" media="screen" />


Ошибку выдает следующую:
Fatal error: Cannot redeclare rating_bar() (previously declared in Z:\home\localhost\www\form.php:2) in Z:\home\localhost\www\form.php on line 79


т.е. проблема в этой строчке:
function rating_bar($id, $units = '', $static = '')
, верно? В чём только не пойму.
  • Вопрос задан
  • 181 просмотр
Решения вопроса 1
Decadal
@Decadal
require('form.php');

замените на

require_once('form.php');
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@Yan-s
Из ошибки следует, что вы пытаетесь переопределить уже существующую функцию rating_bar

Скорее всего вы дважды подключаете к странице файл form.php
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы