تو php چه جوري ميتونم فايل هاي موجود در يك فولدر را شمارش كنم و نتيجه را

simorgh

Member
سلام
من ميخوام توي يك فولدر هر چه قدر فايل آپلود كردم شمارش كنه وبه من نتيجه را نشان بده

در ضمن اگه بشه تعيين كرد كه چه فايل هايي را شمارش كنه كه ديگه بهتر ميشه

راستي اگه بخوام فولدر را شمارش كنم چه آنوقت وضعيت فرق مينكنه؟ :oops:
 

mazoolagh

Active Member
کد:
<%
$dir = "c:/Inetpub/wwwroot/php" ; 
$ext = ".php" ;
$cnt = 0 ;

$h = opendir($dir) ;
if ($h) {
	while ($f = readdir($h)) { 
		if (eregi($ext.'$',$f) && is_file($f)) {
			$cnt++ ;
			print ($cnt.' : '.$f.'<br>') ; 
		}
	} 
	closedir($h); 
} 
%>

1- خط print تو حلقه نمايشيه - ميتوني حذفش كني و آخر كد مقدار $cnt تعداد رو بهت ميده
2- اگر $ext رو مشخص نكني همه فايلها رو ميشمره (ولي فولدرها رو كنار ميذاره)
3- اگر ميخواهي فقط فولدرها رو بشمري (و فايلها رو كنار بذاري) بجاي is_file بذار is_dir ولي بايد قبلش به همون مسير chdir كني
4 - اگر ميخواي هم فايل و هم فولدر بشمري شرط دوم if رو بردار
5- وقتي فولدرها رو هم ميشمري حواست باشه كه . و .. هم منظور ميشن. if رو ميتوني تغيير بدي تا . و .. رو كنار بذاره
 

mazoolagh

Active Member
اونوقت ميشه توضيح واضحات!
ديگه چيزي واسه توضيح باقي نمونده!
 

oxygenws

Active Member
این ساده شده کد جناب مازولاقه....

کد:
<?php
$dir = "c:/Inetpub/wwwroot/php" ;

$h = opendir($dir) ;
if ($h) {
   for ($i=0; readdir($h); $i++) ;
   closedir($h);
}
?>

و این هم کدی که به نظرم از نظر سرعت بهتر کار می کنه، چون فقط یک بار مراجعه به سیستم عامل داره.
کد:
$list = scandir('dirname');
$count = count($list);
unset($list);
البته کد فوق اشاره گر های به شاخه فعلی و شاخه پدر رو هم بر می گردونه، پس نتیجه خروجی ممکنه لازم باشه که منهای 2 بشه.

موفق باشید، امید
 

mazoolagh

Active Member
oxygen خان سلام - ديدم 3 روزه اين تاپيك بدون جواب مونده گفتم حداقل هم خودم يه چيزي ياد بگيرم هم جوون مردم ناكام از دنيا نره! وگرنه سعي ميكنم در موضوعي كه بهش تسلط ندارم وارد نشم :D
 

simorgh

Member
سلام
جناب اين کدت خيلي به دردم خورد مرسي
ولي يه جاهاييش گير دارم مشکلم رو ميگم اگه ممکنه راهنماييم کنم
من کد شما رو اينجوري کردم تا بتونم فايل هاي موجود در فولدر php در لوکال هاست را بشمارم
<?
$dir = "C:\Program Files\EasyPHP\www\article\php";
$ext = "";
$cnt =0;

$h = opendir($dir);
if ($h) {
while ($f = readdir($h)) {
if (eregi($ext.'$',$f) && is_file($f)) {
$cnt++ ;
print ($cnt.' : '.$f.'<br>') ;
}
}
closedir($h);
}
?>
شما گفته بودين اگه $ext رو مشخص نکنم همه فايل هل رو ميشماره
ولي اينجوري کار نکرد, يا اصلا نمي شماره يا همون نتيجه اي که قبل داشته را دوباره نشان ميده
ولي وقتي $xt=".php";
ميکنم اين را نشان ميده
1 : logo.php
ولي اگه من توي فولدر php دوتا فايل بريزم يا بيشتر همون نتيجه قبلي يعني
1 : logo.php
را نشان ميده
خواستم توي همون فولدر فايل هاي gif رو بشمارم يعني
$ext=".gif";
کردم اين يکي که اصلا هيچي نمايش نميده و فقط يک صفحه سفيد دارم

حالا همون را واسه شمارش فولدر امتحان کردم يعني اينجوريش کردم که گفتين
<?
$dir = "C:\Program Files\EasyPHP\www\article\php";
$ext = "";
$cnt =0;

$h = opendir($dir);
if ($h) {
while($f = readdir($h)) {
if (eregi($ext.'$',$f) && is_dir($f)) {
$cnt++ ;
print ($cnt.' : '.$f.'<br>') ;
}
}
closedir($h);
}
?>
ولي اين هم مشکل داشت نتيجه اين کد اينجوري شد
1 : .
2 : ..
در صورتي که من اصلا هيچ فولدري توي فولدر اصليم يعني php نريختم وقتي هم که ريختم بازم توي نتيجش هيچ تاثيري نداشت
بازم اين را نشان داد
1 : .
2 : ..
حالا اصلا اين يعني چه چي رو ميرسونه من که نميفهمم
ببين من توي فولدر اصليم يعني php ميخوام هر چي فولدر ريختم فقط واسم بشماره يعني نتيجش اينجوري باشه
تعداد فولدر : 5
همين
راستي اگه خواستم توي هاستم امتحان کنم آدرس دايرکتوريم اينجوري ميشه
$dir = "http://www.iranmahfel.com\article\php";
يا نه اينطوري
$dir = "article\php";
 

mazoolagh

Active Member
اين كد اصلاح شده:
کد:
<% 
$dir = "C:\Inetpub\wwwroot\php" ; 
$ext = ".php" ; 
$cnt = 0 ; 

$h = opendir($dir); 
if ($h) { 
	while ($f = readdir($h)) { 
		if (eregi($ext."$" , $f) && is_file($dir."/".$f)) { 
			$cnt++ ; 
			print ($cnt.' : '.$f.'<br>') ; 
		} 
	} 
	closedir($h); 
}
%>

ولي جواب شما هموني هست كه oxygenخان راهنمايي كرده :
کد:
<%
$dir = "C:\Program Files" ; 
$list = scandir($dir); 
$cnt = 0 ;
for ($i=0 ; $i<count($list) ; $i++) {
	$f = $list[$i] ;
	if (is_dir($dir."/".$f) && $f != "." && $f !="..") {
		$cnt++ ;
	}
} 
unset($list); 
print "Folders = ".$cnt."<br>" ;
%>
 

simorgh

Member
ممنون از كمكتون

مرسي خيلي نوكرم
آقا مازولاق كد ويرايش شده ات عالي كار كرد
راستي مازولاق جان من چه جوري وقتي يه حلقه واسم شمرد مثلا يه همچين چيزي واسم درست كرد
1.new folder
2.index
3.java
4.php
5.....
,والي آخر
من ميخوام بهم عدد 10 را نشان بده
نه اينكه حلقه را
يعني خودش بشمره ور آخر همه را جمع كنه و يكدفعه عدد 10 را نشان بده
مثلا اينجوري
تعداد فولدر =10

آقا اكسيژن من كدت واسم گيج كننده بود آخه از php زياذ سر در نمي يارم و آماتورم
يعني نميدونم كدت رو چه جوري استفاده كنم
ولي آقا مازولاق كدت رو يه نمه تغيير داده و گفتي اين خيلي بهتره
ولي من وقتي استفاده مي كنم يك error ميده كه نميتونه function ,
scandir رو فراخواني كنه :wink:
 

جدیدترین ارسال ها

بالا