Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Вывод всех данных из таблицы с дополнительным действием

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Uchenik
Отправлено: 27 Августа, 2011 - 12:29:11
Post Id



Частый гость


Покинул форум
Сообщений всего: 187
Дата рег-ции: Авг. 2011  


Помог: 1 раз(а)




Хочу сделать чтобы при старте сайта проверялось, все ли файлы на месте. Решил реализовать это примерно так:
1. Пробегаемся по таблице, считаем сколько строк
PHP:
скопировать код в буфер обмена
  1. $result = mysql_query("SELECT * FROM Structure");  $num_rows = mysql_num_rows($result); //получили колличество записей в таблице

2. Выводим полученные данные
PHP:
скопировать код в буфер обмена
  1. $myrow = mysql_fetch_array($result);
  2. $x=0; //задали старт счетчика
  3. do {echo "".$myrow['Address']."".$myrow['Filename'].".".$myrow['Type_of_File']."<br>";}
  4. while ($x++<$num_rows);

в результате выводится что-то типа

3. Проверяем, существует ли файл, если какой-то файл не найден, рядом с его адресом ставим NotFound
PHP:
скопировать код в буфер обмена
  1. if(file_exists(как сюда придумать переменную)==false) echo "File notfound";

Но. возникло две проблемы:
1. Выводится только адрес и имя первого найденного файла, ровно столько раз сколько записей в таблице (я помню что это как-то очень легко решается, но не могу вспомнить как)
2. Не знаю как и куда запихнуть третий пункт, чтобы он работал.

(Отредактировано автором: 27 Августа, 2011 - 12:32:34)

 
 Top
vlom
Отправлено: 27 Августа, 2011 - 14:36:23
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 681
Дата рег-ции: Окт. 2010  
Откуда: Екатеринбург


Помог: 4 раз(а)




примерно можно так реализовать
PHP:
скопировать код в буфер обмена
  1. while($myrow = mysql_fetch_array($result)){
  2.     echo .$myrow['Address'].$myrow['Filename'].".".$myrow['Type_of_File']."<br>";
  3.     //проверяем существование файла
  4.     $fileExists = file_exists($myrow['Address'].$myrow['Filename'].$myrow['Type_of_File']) ? 'File exists' : 'File notfound';
  5.     echo $fileExists;
  6. }


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

(Отредактировано автором: 27 Августа, 2011 - 14:36:41)

 
 Top
Uchenik
Отправлено: 31 Августа, 2011 - 05:27:52
Post Id



Частый гость


Покинул форум
Сообщений всего: 187
Дата рег-ции: Авг. 2011  


Помог: 1 раз(а)




Спасибо!
Только теперь возникла парочка других неприятностей:
1. Скрипт в действительности не проверяет существование файлов, потому-что результат первой проверки висит в кэше, хотя если например в БД изменить адрес файла, то скрипт его тоже меняет при выводе, но всё-равно пишет что файл существует.
2. файл с id=1 вообще не проверяется на существование, т.е. фактически отсчёт начинается с 2 id
А вот так :
PHP:
скопировать код в буфер обмена
  1. <?
  2. $notfound='<font color=red>File notfound: ';
  3. $exist='<font color=green>File exist: ';
  4. $result = mysql_query("SELECT * FROM Structure");  $num_rows = mysql_num_rows($result); //получили колличество записей в таблице
  5. $myrow = mysql_fetch_array($result);
  6. while($myrow = mysql_fetch_array($result)){
  7.     //проверяем существование файла
  8.     $fileExists = file_exists($myrow['Address'].$myrow['Filename'].$myrow['Type_of_File']) ? $notfound : $exist ;
  9.     if ($fileExists==$notfound){
  10.     echo "".$myrow['Address'].$myrow['Filename'].".".$myrow['Type_of_File']."<br>";}
  11. }
  12. ?>

Вообще ничего не выводит
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Работа с СУБД »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB