Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Fatal Error: Cannot redeclare
 
 автор: cccp   (25.01.2006 в 02:44)   письмо автору
 
 

Добрый день всем!

Помогите пожалуста разобраться.
У меня на страничке есть скрипт
который показывает загруженные файлы что лежат в определлённой папке с опписаниями к каждому из них.

Я хотел бы поставить простую функцию что бы высвечивало число и время создания файла.
Я вставил этот скрипт, но проблема что на первый файл всё показывает ОК, а на второй и следующие я вижу ошибку:

Fatal Error: Cannot redeclare .......

Помогите пожалуста.


<? $rep "../discography/";
$dir opendir($rep); 
?>
<? 
function creation($date) {
   return 
date("d/m/Y &#224; H:i:s",$date);
}

while (
$f readdir($dir)) {
   if(
is_file($rep.$f)) {
      echo 
"<li>Cr&#233;ation : ".creation(filectime($rep.$f));
      echo 
"<li>Modification : ".creation(filemtime($rep.$f));
      echo 
"<br>";
      break;
   }

?>
<? closedir
($dir); ?>



Иначе я пробовал такой способ, но каждый раз когда я меняю один файл, он пишет на все новую дату.

<?php
   
if (file_exists($dossier_cible.$_FILES['f']['name']))
   {    
   echo 
"<li> ajout&#233; le : " date("d/m/Y &#224; H:i:s"filectime($dossier_cible));
   }
   
?>

   
 
 автор: cheops   (25.01.2006 в 03:25)   письмо автору
 
   для: cccp   (25.01.2006 в 02:44)
 

У вас уже где-то объявлена функция с таким именем, либо вы два раза включаете этот файл в один документ.

   
 
 автор: cccp   (25.01.2006 в 03:59)   письмо автору
 
   для: cheops   (25.01.2006 в 03:25)
 

Это скорей всего из-за того что скрипт два раза включаете этот файл в один документ.
И ничего нельзя сделать?

   
 
 автор: Loki   (25.01.2006 в 09:43)   письмо автору
 
   для: cccp   (25.01.2006 в 03:59)
 

вместо include писать include_once, тогда файл будет полключен только один раз, сколько бы раз эта строка не встретилась.

   
 
 автор: cccp   (25.01.2006 в 14:03)   письмо автору
 
   для: Loki   (25.01.2006 в 09:43)
 

Так что мне надо просто написать здесь <?php include_once
Так?


<? include_once $rep "../discography/"
$dir opendir($rep); 
?> 
<? function creation($date) { 
   return 
date("d/m/Y &#224; H:i:s",$date); 


while (
$f readdir($dir)) { 
   if(
is_file($rep.$f)) { 
      echo 
"<li>Cr&#233;ation : ".creation(filectime($rep.$f)); 
      echo 
"<li>Modification : ".creation(filemtime($rep.$f)); 
      echo 
"<br>"
      break; 
   } 

?> 
<? closedir($dir); ?> 

   
 
 автор: cheops   (26.01.2006 в 00:17)   письмо автору
 
   для: cccp   (25.01.2006 в 14:03)
 

Нет, нужно заменить инструкцию include на include_once - у вас где-нибудь используется инструкция include?

   
 
 автор: cccp   (26.01.2006 в 00:56)   письмо автору
 
   для: cheops   (26.01.2006 в 00:17)
 

В том-то и дело что нет!
:(

Вот шлю вам файл, посмотрите пожалуста, может этот include как нибудь по другому выражается.

   
 
 автор: cheops   (26.01.2006 в 01:23)   письмо автору
 
   для: cccp   (26.01.2006 в 00:56)
 

А как полностью выглядит сообщение об ошибке?

   
 
 автор: cccp   (26.01.2006 в 19:29)   письмо автору
 
   для: cheops   (26.01.2006 в 01:23)
 

У меня на страничке высвечивается 2 файла что были загруженны в папку на сервер.

Если в скрипте я оставляю строчку
то на первом файле ОК, пишет дату:

Cr&#233;ation : 25/01/2006 &#224; 01:13:57
Modification : 25/01/2006 &#224; 01:13:57


А на втором файле ошибка:

Fatal error: Cannot redeclare creation() (previously declared in /var/www/62/r/o/b/roberto-lozano.com/www/roberto-admin/upload_discography.php:180) in upload_discography.php on line 180

А если я убераю строчку break;
то так:

На первом файле я вижу дату сразу двух:

Cr&#233;ation : 25/01/2006 &#224; 01:13:57
Modification : 25/01/2006 &#224; 01:13:57

Cr&#233;ation : 25/01/2006 &#224; 01:14:28
Modification : 25/01/2006 &#224; 01:14:28


а на второй файл пишет ошибку:

Fatal error: Cannot redeclare creation() (previously declared in /var/www/62/r/o/b/roberto-lozano.com/www/roberto-admin/upload_discography.php:180) in upload_discography.php on line 180

   
 
 автор: cheops   (26.01.2006 в 20:52)   письмо автору
 
   для: cccp   (26.01.2006 в 19:29)
 

Как называются скрипты и кто из них первый, кто второй?

   
 
 автор: cccp   (26.01.2006 в 22:20)   письмо автору
 
   для: cheops   (26.01.2006 в 20:52)
 

что всю страничку показать здесь в виде кода?
Много получется. Поэтому я прикрепил файл.

   
 
 автор: cheops   (26.01.2006 в 23:00)   письмо автору
 
   для: cccp   (26.01.2006 в 22:20)
 

Нет, необходимо сообщить имена первого и второго файла... без этого невозможно интерпретировать сообщение об ошибке.

   
 
 автор: cccp   (26.01.2006 в 23:11)   письмо автору
 
   для: cheops   (26.01.2006 в 23:00)
 

ОК.

Главный Файл на котором загружают фотки и где я хочу высветить дату загруженного файла это : "upload_discography.php"

Потом вот все названия файлов которые делают обработку, коректирование и т.д.

del_file.php
edit_file.php
edit_form.php



ПС: Это то что вы хотели?

   
 
 автор: cheops   (27.01.2006 в 13:43)   письмо автору
 
   для: cccp   (26.01.2006 в 23:11)
 

Так, а как выглядит 180 строка файла upload_discography.php?

   
 
 автор: XPraptor   (27.01.2006 в 14:06)   письмо автору
 
   для: cheops   (27.01.2006 в 13:43)
 

Проверьте, у вас функция creation() только в одном из присоединяемых файлов существует.
Она должна быть только в одном экземпляре, в первом включаемом файле, в других файлах ее не должно быть, она всеравно будет доступна всем включенным файлам.

   
 
 автор: cccp   (27.01.2006 в 15:07)   письмо автору
 
   для: XPraptor   (27.01.2006 в 14:06)
 

на этой строке вот что:

<? function creation($date) {

   
 
 автор: XPraptor   (27.01.2006 в 15:14)   письмо автору
 
   для: cccp   (27.01.2006 в 15:07)
 

Читайте мой пост выше. Нельзя объявлять дважды одну и ту же функцию.

   
 
 автор: cccp   (27.01.2006 в 17:08)   письмо автору
 
   для: XPraptor   (27.01.2006 в 15:14)
 

Я понял что вы сказали, но не знаю как это сделать.
:(

   
 
 автор: XPraptor   (27.01.2006 в 17:18)   письмо автору
 
   для: cccp   (27.01.2006 в 17:08)
 

Включите ее в файл, который присоединяется всегда.

   
 
 автор: cccp   (27.01.2006 в 18:46)   письмо автору
 
   для: XPraptor   (27.01.2006 в 17:18)
 

честно говоря я не в состоянии сделать это сам...

У меня пока стоит так:


<?php
   
// visviti' chislo kogda bil zagrujen fajl
   // primer : uploaded: 29/01/2006 at 22:16:23
   
if (file_exists($dossier_cible.$_FILES['f']['name']))
   {    
   echo 
"<li> upoaded : " date("d/m/Y"filectime($dossier_cible));
   }
   
?>

Только если я один файл новый загружаю, то на всех меняется.
Может проще здесь что-то сделать?

   
 
 автор: XPraptor   (27.01.2006 в 18:54)   письмо автору
 
   для: cccp   (27.01.2006 в 18:46)
 

Нет, не то. Загружаемые файлы не причем.
Функция function creation($date) должна быть только однажды объявлена, в одном файле, в котором и выполняется код определения даты.

   
 
 автор: cccp   (27.01.2006 в 19:10)   письмо автору
 
   для: XPraptor   (27.01.2006 в 18:54)
 

Ну так у меня она всего один раз объявлена.

Вы не могли бы посмотреть файл что я вложил выше.
И конкретно мне сказать где это и т.д.

Зарание спасибо!

   
 
 автор: XPraptor   (30.01.2006 в 10:46)   письмо автору
 
   для: cccp   (27.01.2006 в 19:10)
 

Нету в том файле функции creation().
Она в лругих файлах у вас объявлена, которые и присоединяются к странице на этапе обработки файлов..

   
 
 автор: cccp   (30.01.2006 в 22:22)   письмо автору
5.9 Кб
 
   для: XPraptor   (30.01.2006 в 10:46)
 

извеняюсь...
Я просто убрал её и послал без.

Высылаю вам все файлы (их всего 4-ре).
Посмотрите сами.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования