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

Форум PHP

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

 

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

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

тема: Обход массива в цикле.
 
 автор: Footer   (08.03.2007 в 14:52)   письмо автору
 
 

У меня не работает вот такой код:

<?php
$file_basa 
file ("baza.dat");
echo (
"<table width=\"100%\" height=\"100%\"  border=\"0\"  cellspacing=\"0\" cellpadding=\"0\"");
for (
$i=0$i count ($file_basa); $i++)
{
$name_file_new $file_basa [$i];
$file_open_stats fopen ("../baza/baza1/$name_file_new""r");
$bufer fread ($file_open_statsfilesize ($name_file_new));
fclose ($file_open_stats);
echo (
"<tr><td class=\"bases\">$name_file_new</td>");
echo (
"<td class=\"bases\">$bufer</td></tr>");
}
echo (
"</table>");
?>


Смысл работы скрипта такой: есть файл baza.dat. В нём записаны имена файлов в виде: name.exe.dat. Каждое имя файла находится на отдельной строчке. Также есть папка ../baza/baza1/ . В этой папке и находятся файлы с именами: name.exe.dat. Это текстровые файлы, в которых храниться число. Данный скрипт должен читать содержимое файла baza.dat в массив и каждый элемент этого массива используется для открытия файла из папки ../baza/baza1/ . Вернее, файл открывается и считывается его содержимое, которое потом должно выводиться в браузер. То есть нужно, чтобы вводилось в таблице что-то типа пары: имя файла-значение, соответствующее этому файлу. Но этот скрипт работает неправильно. Пишет: failed to open stream: Invalid argument. Подскажите, что не так?

   
 
 автор: Poison   (08.03.2007 в 15:26)   письмо автору
 
   для: Footer   (08.03.2007 в 14:52)
 

Вообще я в коде не вижу ошибок:) возможно проблема с путями.
Напишите полностью ошибку которую выдает этот скипт

   
 
 автор: Footer   (08.03.2007 в 15:41)   письмо автору
 
   для: Poison   (08.03.2007 в 15:26)
 

Warning: fopen(../baza/baza1/A005.jpg.dat ) [function.fopen]: failed to open stream: Invalid argument in C:\www\site\baza\top_handler.php on line 7

   
 
 автор: Footer   (08.03.2007 в 15:46)   письмо автору
 
   для: Footer   (08.03.2007 в 15:41)
 

И таких сообщений много - очевидно - по количеству файлов.
И ещё вот такого типа сообщения:
Warning: filesize() [function.filesize]: stat failed for A005.jpg.dat in C:\www\site\foto\top_handler.php on line 8

   
 
 автор: ddhvvn   (08.03.2007 в 16:52)   письмо автору
 
   для: Footer   (08.03.2007 в 15:46)
 

Ну да, скорее всего дело в путях :-))
Первая ошибка - файл не анйден, вторая - подобная....

   
 
 автор: cheops   (09.03.2007 в 12:09)   письмо автору
 
   для: Footer   (08.03.2007 в 15:41)
 

Файл C:/www/site/baza/baza1/A005.jpg.dat существует?

   
 
 автор: Footer   (09.03.2007 в 17:07)   письмо автору
 
   для: cheops   (09.03.2007 в 12:09)
 

Да, всё есть. Попробовал написать так:

$name_file_new = ${file_basa[$i]};

вообще, пишет что синтаксическая ошибка - на [ ругается. Да, думаю дело в имени, которое передаётся в массиве....что делать? помогите! уже не знаю, как сделать, чтобы работало.

   
 
 автор: Footer   (09.03.2007 в 17:09)   письмо автору
 
   для: Footer   (09.03.2007 в 17:07)
 

Может, попробовать как-нибудь по-другому? Помогите! Плиз!

   
 
 автор: Dmitrij_K83   (09.03.2007 в 22:15)   письмо автору
 
   для: Footer   (09.03.2007 в 17:09)
 

Может проблема в том что " Каждая строка в полученном массиве будет завершаться символами конца строки, поэтому, если вам будет нужно избавиться от этих символов, вы будете должны использовать функцию rtrim()".

   
 
 автор: Dmitrij_K83   (09.03.2007 в 23:02)   письмо автору
 
   для: Footer   (08.03.2007 в 14:52)
 

Да так оно и есть

<?php 
$file_basa 
file ("baza.dat"); 
echo (
"<table width=\"100%\" height=\"100%\"  border=\"0\"  cellspacing=\"0\" cellpadding=\"0\""); 
for (
$i=0$i count ($file_basa); $i++) 

$name_file_new rtrim($file_basa [$i]);  // убираем знак перевода строки из имени файла
$file_open_stats fopen ("../baza/baza1/$name_file_new""r"); 
$bufer fread ($file_open_statsfilesize ($name_file_new)); 
fclose ($file_open_stats); 
echo (
"<tr><td class=\"bases\">$name_file_new</td>"); 
echo (
"<td class=\"bases\">$bufer</td></tr>"); 

echo (
"</table>"); 
?> 

Попробовал у себя запустить, без rtrim выдает ошибки
поменял $name_file_new = $file_basa [$i];
на $name_file_new = rtrim($file_basa [$i]); - все в порядке

   
 
 автор: Footer   (10.03.2007 в 09:01)   письмо автору
 
   для: Dmitrij_K83   (09.03.2007 в 23:02)
 

Да, спасибо! Сначала скрипт не хотел работать, но потом всё таки заработал! Теперь всё работает! Спасибо ещё раз! Спасибо огромное! =)

   
Rambler's Top100
вверх

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