[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: помогите найти ошибку
gletscherl
на странице section.php:
HTML
<table width="498px" border="0" cellspacing="0" cellpadding="0">
<tr>
<td id="title">Раздел</td>
<td id="title">Тем в разделе</td>
</tr>
<tr>
<td id="under">
<? include("core.php"); sec_list(); ?>
</td>
<td id="under">
<? include("core.php"); post_list(); ?>
</td>
</tr>
</table>


core.php:

PHP
<?
function counter() {
    $count=file_get_contents("counter.dat");
    $count=$count+1;
    $cfile=fopen("counter.dat", "w+");
    fwrite($cfile, $count);
    fclose($cfile);
}
function sec_list() {
    $sections=scandir("./sections/");
    unset($sections[0]);
    unset($sections[1]);
    foreach($sections as $value) {
        $value=str_replace(".php", "", $value);
        $value=str_replace("_", " ", $value);
        $begin=("");
        $end=("<br />");
        echo ($begin.$value.$end);
    }
}
function post_list() {
    $sections=scandir("./sections/");
    unset($sections[0]);
    unset($sections[1]);
    foreach($sections as $value) {
            include("./sections/".$value);
    }
}


так вот в первом столбце функция sec_list работает отлично (тоесть имена разделов выдаются) а во втором столбике выдаёт вот такую ошибку:
Fatal error: Cannot redeclare counter() (previously declared in C:\Users\Egor\xampp\htdocs\core.php:3) in C:\Users\Egor\xampp\htdocs\core.php on line 8


НО!

если просто скопировать код функции post_list() и вставить его во второй столбец, то он работает! тоесть функция post_list рабочая, а косяк в файле core.php но я не могу понять где и какой! Кстате, если вместо функции post_list вставить любую другую, тоже будет выдаваться ошибка! помогите пожалуйста найти ошибку.



Спустя 52 минуты, 32 секунды (20.06.2009 - 12:35) FatCat написал(а):
Зачем же 2 раза на одной странице
PHP
include("core.php");
?

ИМХО, корректный рабочий вариант - инклайдить единожды.
Некорректный, но тоже работающий - использовать require_once("core.php") ...

Спустя 9 минут, 8 секунд (20.06.2009 - 12:44) glock18 написал(а):
Цитата (FatCat @ 20.06.2009 - 09:35)
ИМХО, корректный рабочий вариант - инклайдить единожды.


в большинстве случаев, и в этом, в том числе.
Единственный вариант, когда многократный инклюд оправдан, если в файле находится линейно исполняемый код, а не листинг функций или классов. Хотя даже в этом случае, как правило, лучше выделить этот "линейный код" в функцию.

Спустя 1 час, 8 минут, 23 секунды (20.06.2009 - 13:53) stepan написал(а):
И правда не пойму зачем инклудить дважды. Я бы сделал так перед таблицей инклуд, а в нутри таблице вызывал функции.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.