Проблема с выводом рейтинга, в чём проблема? Итак. Вывожу рейтинг на странице. Есть 3 статьи, все они выводятся на главной и у каждой должен быть свой рейтинг. Добавил на 1, всё работает, всё записывается в базу данных, а вот добавляю на вторую и уже ошибка.
Сам рейтинг вывожу данным кодом:
У статьи 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" . '';
$static_rater[] .= '';
$static_rater[] .= '';
$static_rater[] .= 'Текущий ' . $rating2 . '/' . $units . '';
$static_rater[] .= '';
$static_rater[] .= '' . $id . '. Рейтинг: ' . $rating1 . '/' . $units . ' (' . $count . ' ' . $tense . ' cast) This is \'static\'.';
$static_rater[] .= '';
$static_rater[] .= '' . "\n\n";
return join("\n", $static_rater);
}
else
{
$rater = '';
$rater .= '';
$rater .= '';
$rater .= ' ';
$rater .= ' Текущий ' . $rating2 . '/' . $units . '';
for ($ncount = 1; $ncount ' . $ncount . '';
}
}
$ncount = 0;
$rater .= ' ';
$rater .= '
Ну и в шапке стили и скрипт
Ошибку выдает следующую: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 = '') Верно? В чём только не пойму. Надеюсь на помощь, спасибо!

21 Авг 2019 в 06:21
238 +1
1
Ответы
1

Да, ошибка указывает на то, что функция rating_bar уже была объявлена ранее в файле form.php. Возможно, это произошло из-за того, что вы включили файл form.php несколько раз на одной странице.

Чтобы исправить эту проблему, вам нужно убедиться, что файл form.php подключается только один раз. Можете сделать это, добавив условие перед объявлением функции, чтобы проверить, не была ли она уже объявлена:

if !functionexists(′ratingbar′) !function_exists('rating_bar') !functione xists(ratingb ar) {
function rating_bar($id, $units = '', $static = '') {
// ваш код функции здесь
}
}

Таким образом, функция будет создана только в том случае, если она ранее не была объявлена. Надеюсь, это поможет вам исправить ошибку.

20 Апр 2024 в 13:19
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир