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

Форум PHP

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

 

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

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

тема: скрипт который показывает сколько фоток находится в определлённых папках
 
 автор: cccp   (26.07.2005 в 23:31)   письмо автору
 
 

Привет ребята!
Подскажите и помогите пожалуста.
Я нашол один скрипт который показывает сколько фоток находится в определлённых папках.
проблема том, что он показывает в 2-ух из 3-х папок нормально , а в одной папке неправельное количество фоток.
В чём ошыбка и что надо изменить для его правельного деыствия?
Или-же у вас есть идея другово способа.
Зарание спасибо

<?php 
$dossiers 
= array ("dossier1""dossier2""dossier3"); 

foreach(
$dossiers AS $nomdossier

 
$dh opendir($nomdossier); 

while ((
$file readdir($dh)) !== false

  
$photos[] = $file


foreach (
$photos AS $nomphoto

if (
ereg('jpg'substr("$nomphoto", -3)) OR ereg('gif'substr("$nomphoto", -3))) 

$nombre_photos++; 



echo 
"total : $nombre_photos"
?> 

   
 
 автор: cheops   (27.07.2005 в 12:03)   письмо автору
 
   для: cccp   (26.07.2005 в 23:31)
 

Скрипт, проверяет имеет ли файл расширение jpg или gif и подсчитывает только их - может быть проблема в этом? Если это так, и вам требуется подсчитать все файлы в директории, то можно воспользоваться скриптом
<?php 
  
// Переменная для подсчёта 
  
$count 0
  
// Открываем директорию 
  
$dir opendir("dir_name"); 
  
// В цикле считываем её содержимое 
  
while(($file readdir($dir))) 
  { 
    
// Если текущий объект является файлом - считаем его 
    
if(is_file($file)) ++$count
  } 
  
// Закрываем директорию 
  
closedir($dir); 
  echo 
"Число файлов - ".$count
?> 


http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=4025

   
 
 автор: [CHOL]Scorpion   (27.07.2005 в 12:06)   письмо автору
 
   для: cccp   (26.07.2005 в 23:31)
 

елси система никсовая (Linux, OpneBSD, FreeBSD) то:



exec ("ls дирректория",$files);


в массив $files читает названия файлов. Если дополнительные ключи задать, много ещё чего можно полезного получить без использования кучи циклов с использованием функций php

   
 
 автор: cccp   (27.07.2005 в 21:03)   письмо автору
 
   для: [CHOL]Scorpion   (27.07.2005 в 12:06)
 

Спасибо за ответы ребята, но простоы скрипт по подсчитыванию файлов мне не нужен, их полно. Меня заинтересовал именно этот и как я уже объяснял у него какая-то ошибка. Так-как в двух папках из 3-ёх он показывает правельное количество фоток (.jpg, .gif),а в трей показивает больше чем там есть. Я думаю что он берёт в счёт и другие файлы.
Прикол в том, что я ставил этот скрипт и отдельно (тоесть что-бы он показывал мне только количество фоток в одной папки)И резултат тот-же: В двух папках количество совпадает, а в третей НЕТ.
Может кто попробует его у себя и поэксперементирует? Попробуйте сделать как и я, тоесть 3 папки и с дугими файлами в папках(не толко .jpg, .gif).
Может нужно добавить в етот скрипт линию которая будет говорить ему что НЕ брать в счёт, а?

Спасибо

   
 
 автор: [CHOL]Scorpion   (27.07.2005 в 21:24)   письмо автору
 
   для: cccp   (27.07.2005 в 21:03)
 

Не, спасибо, я слишком ленивый чтоб неперспективные скрипты проверять. Нужно делать так, чтоб всё работало при любом раскладе.

Твой вариант не перспективен. Да, он работает (предположел что работает) на любой платформе, но как человек скептически относящийся к мелкософтовским платформам, ориентирую свои скрипты под никсы. На мой взгляд производительность выше, ресурсов жрёт меньше. Не говоря уже о том что 80% серверов в России никсовые.

Теперь по существу: чем тебя привлёк описаный тобой скрипт? Тем что он проверяет последние 3 буквы расширения??? Тогда огорчу, проверяет он их криво.

зачем???:

if (ereg('jpg', substr("$nomphoto", -3)) 


Это же глупо с практической точки зрения!!!! Да и с теоретической собственно тоже. Нужно так:


$myArr = array("gif","jpg");

if (ereg("^.+\.(.+)$",$test,$regs)){
    if (in_array($regs[1],$myArr)){
        //делаем то что должны
    }
}


Достоинства приведёного кода: хоть миллион расширений в массив положи, он сапоставит всё и выдаст результат.
Недостатки: в $myArr должен быть как минимум 1 элемент.

Но, елси это для тебя слишком сложно, то это

if (ereg('jpg', substr("$nomphoto", -3)) 


должно выглядеть так:

if (ereg("^.+\..jpg$",$nomphoto))


Так будет правильно, а то что у тебя в примере правильно, но нерационально.

   
 
 автор: cheops   (27.07.2005 в 21:24)   письмо автору
 
   для: cccp   (27.07.2005 в 21:03)
 

Посмотрите нет ли в третьей директории файлов, имя которых содержит jpg или gif, а расширение отличается от этого (Вообще неплохо бы узнать что ещё помимо картинок имеется в файлах). Если проблема в этом, можно исправить скрипт следующим образом
<?php 
$dossiers 
= array ("dossier1""dossier2""dossier3"); 

foreach(
$dossiers AS $nomdossier

  
$dh opendir($nomdossier); 

  while ((
$file readdir($dh)) !== false
  { 
    
$photos[] = $file
  } 

  foreach (
$photos AS $nomphoto
  { 
    if (
ereg('jpg$'substr("$nomphoto", -3)) OR ereg('gif$'substr("$nomphoto", -3))) 
    { 
       
$nombre_photos++; 
    } 
  } 
  
closedir($dh); 

echo 
"total : $nombre_photos"
?>

   
 
 автор: cccp   (27.07.2005 в 23:34)   письмо автору
 
   для: cheops   (27.07.2005 в 21:24)
 

Привет cheops.
Я попробовал твою версию, но он мне ничего не показал , вообше пусто.
Я посчитал : У меня указано 3 папки, во всех этих папках в обшем 74 файла (беря в счёт все файлы что там есть) В папках по мимо 52 фото файлов (в обшеем) есть и файли .PHP и .PHP3, но по мимо этого в каждой из папок есть ешё по одной, а там есть и фотки и .PHP i .HTM и .DAT и .htaccess. Вот я и не знаю влияет ли это?

А версию [CHOL]Scorpion я тоже пробовал, но тогда мене вообше показал резултат 110 ! Когда там вообше-то всего 74 файла (если считать все)
Короче нифига не пойму...

   
 
 автор: [CHOL]Scorpion   (28.07.2005 в 06:14)   письмо автору
 
   для: cccp   (27.07.2005 в 23:34)
 

а ещё полезно есkи не понимаешь откуда столько файлов, обойди их в цикле и посмотри что он записал в массив как элементы.

Помни, в никсовых системах нада писать exec ("ls blablabla/",$переменная), слэш перед дирректорией не ставится потому что иначе от корня будет считать. Код абсолютно работоспособный. Я веб интерфейс к фтп архиву так написал нехилый.

   
 
 автор: cheops   (28.07.2005 в 11:15)   письмо автору
 
   для: cccp   (27.07.2005 в 23:34)
 

Попробуйте добавить во второй цикл массив-сборщик и посмотреть его содержимое при помощи функции pritn_r(). Кроме того, не происходит обнуление массива $photos при помощи функции unset() - там могут накапливаться файлы от предыдущих директорий.
<?php 
$dossiers 
= array ("dossier1""dossier2""dossier3"); 

foreach(
$dossiers AS $nomdossier

  
$dh opendir($nomdossier); 

  while ((
$file readdir($dh)) !== false
  { 
    
$photos[] = $file
  } 

  foreach (
$photos AS $nomphoto
  { 
    if (
ereg('jpg'substr("$nomphoto", -3)) OR ereg('gif'substr("$nomphoto", -3))) 
    { 
       
$nombre_photos++; 
       
$fileneme[] = $nomphoto;
    } 
  } 
  unset(
$photos);
  
closedir($dh); 

echo 
"total : $nombre_photos"
echo 
"<pre>";
print_r($fileneme);
echo 
"</pre>";
?>

   
 
 автор: cccp   (30.07.2005 в 11:28)   письмо автору
 
   для: cheops   (28.07.2005 в 11:15)
 

Во-о-о-о!...Клас!
Теперь всё ОК, работает!
Правда на показывает на 1 больше, но это фигня!
Спасибо Ребята!
Спасибо cheops!!!

   
Rambler's Top100
вверх

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