• Programlama
  • PHP
  • Bir klasordeki HTML uzantili dosyalari link ve isim seklinde listelemek (sayfalamak)

Bir klasordeki HTML uzantili dosyalari link ve isim seklinde listelemek (sayfalamak)

0
Onaylı Üye
Üye
Katılım
3 Ağustos 2009
Mesajlar
835
Tepki puanı
7
merhaba bir klasor var bu kalasor icinde 5-50 bin arasinda html uzantili dosya var..

bu dosyalari bir index sayfasinda 100 erli sekilde listelemek ve sayfalara boldurmek istiyorum..

bu konuda akil verebilecek arkadaslar varmi ? :) tesekkurler simdiden..
 
0
Onaylı Üye
Üye
Katılım
12 Aralık 2004
Mesajlar
9,603
Tepki puanı
106
Konum
AZ
http://us3.php.net/readdir

PHP:
<?php

if ($handle = opendir('/path/to/files')) {
    echo "Directory handle: $handle\n";
    echo "Files:\n";

    /* This is the correct way to loop over the directory. */
    while (false !== ($file = readdir($handle))) {
        echo "$file\n";
    }

closedir($handle);
}
?>
 
0
Onaylı Üye
Üye
Katılım
3 Şubat 2010
Mesajlar
328
Tepki puanı
8
Konum
istanbul
PHP:
<?php

$limit = 100;

$p = intval($_GET['p']);
if($p == '' or $p < 1) $p = 1;
$x = ($p-1)*$limit;
$y = $x+$limit;

$path = $_SERVER['DOCUMENT_ROOT'].'/'; // dizin yolu, sen yazıcaksın burayı
$handle = opendir($path) or die('dizin açılamadı');
while(false !== ($file = readdir($handle))) {
	if(preg_match('#html#si',$file) and $file != "." and $file != ".." and !is_dir($file)) {
		$list[] = $file;
	}
}

$toplam = count($list);
$tsayfa = ceil($toplam/$limit);

closedir($handle);
echo "<ul>\n";
for($i=$x;$i<$y;$i++) {
	echo "\t<li><a href=\"$path$list[$i]\">$list[$i]</a></li>\n";
}
echo "</ul>\n";
if($tsayfa > 1) {
	echo "Sayfalar\t:\n";
	for($i=1;$i<=$tsayfa;$i++) {
		echo "<a href=\"?p=$i\">$i</a> -\n";
	}
}

?>
 
0
Onaylı Üye
Üye
Katılım
3 Ağustos 2009
Mesajlar
835
Tepki puanı
7
tam istedigim gibi bir kod, burada cevap vermis bi arkadas: http://forum.ceviz.net/php/91015-bi...k-ve-isim-seklinde-listelemek-sayfalamak.html

kod bu:
PHP:
  <?php

$dizin = "./";
$tutucu = opendir($dizin);

 while(($dosya = readdir($tutucu)))
  {
    if(is_file($dizin."/".$dosya))
   $makale[] = $dosya; }
  
closedir($tutucu);


$limit = 100; 
$sf = $_GET["id"];
if($sf < 1) $sf = 1;
$toplam = count($makale);


$kactan = ($sf-1) * $limit;
$kaca = ($kactan+$limit);
if($kaca > $toplam) $kaca = $toplam;


for($i=$kactan; $i < $kaca; $i++){
echo "<p>".($i+1).") "."<a href='".$dizin."/".$makale[$i]."' target='_blank'>".$makale[$i]."</a></p>";
}

echo "<p>";
for($i=1; $i <($toplam / $limit)+1; $i++){
if($sf == $i)
echo "$i"; 
else
echo "<a href='dizinsayfalama.php?page=makaleler&id=$i'>\t$i</a>\n";
} 
echo "</p>\n";
?>

yukaridaki kod, hem listeliyor, hemde fazla olanlari sayfalara boluyor.. boyle bisey arayanlar icin harika bir kod :):)

bu arada @Angelo, @Invictus tesekkurler :)
 
0
Onaylı Üye
Üye
Katılım
3 Şubat 2010
Mesajlar
328
Tepki puanı
8
Konum
istanbul
nerdeyse benim verdiğim kodun aynısı :) benimkisinde ek olarak belirttiğin dizin içindeki klasörleri listelemiyor, dosyaların da hepsini değil sadece html uzantılı dosyaları listeliyor istediğin şekilde
 
0
Onaylı Üye
Üye
Katılım
3 Ağustos 2009
Mesajlar
835
Tepki puanı
7
nerdeyse benim verdiğim kodun aynısı :) benimkisinde ek olarak belirttiğin dizin içindeki klasörleri listelemiyor, dosyaların da hepsini değil sadece html uzantılı dosyaları listeliyor istediğin şekilde
zamana gore listeleyebilirmiyiz acaba ? zor dedi cevizdeki arkadas ama klasore ekleneme zamanina gore listeleyebilsek cok daha guzel olacak :)

bu arada seninkini mesaj yazdiktan sonra gordum, cok benziyor :)

ekleme: yanlis en iyi evap sectim, uste cikti :) modlar ilgilenir ins:)
 
0
Onaylı Üye
Üye
Katılım
3 Şubat 2010
Mesajlar
328
Tepki puanı
8
Konum
istanbul
örneğin son 3 saatte oluşturulan dosyaları mı listelemek istiyorsun yoksa dosyaların hepsini oluşturulma zamanlarına göre mi listelemek istiyorsun?
 
0
Onaylı Üye
Üye
Katılım
3 Ağustos 2009
Mesajlar
835
Tepki puanı
7
örneğin son 3 saatte oluşturulan dosyaları mı listelemek istiyorsun yoksa dosyaların hepsini oluşturulma zamanlarına göre mi listelemek istiyorsun?

evet en son olusturulan dosyayi en sonlarda listlesin, yani ilk olusturulan dosyanin zamanindan en son olusturulan dosya zamanina dogru sayfalasin.. olabilirmi boyle bisey??
 
0
Onaylı Üye
Üye
Katılım
3 Şubat 2010
Mesajlar
328
Tepki puanı
8
Konum
istanbul
evet olabilir :)
edit : bu arada filemtime ile alakalı uyarı alırsan, dosyayı listemele yapacağın dizine koyup tekrar dene
PHP:
<?php

$path = $_SERVER['DOCUMENT_ROOT'].'/'; // dizin yolu, sen yazıcaksın burayı
$handle = opendir($path) or die('dizin açılamadı');
$i = 0;
while(false !== ($file = readdir($handle))) {
    if(preg_match('#html#si',$file) and $file != "." and $file != ".." and !is_dir($file)) {
		$list[$i][0] = filemtime($file);
        $list[$i][1] = $file;
		$i++;
    }
}
sort($list);

$limit = 100;
$toplam = count($list);
$tsayfa = ceil($toplam/$limit);
$p = intval($_GET['p']);
if($p == '' or $p < 1) $p = 1;
$x = ($p-1)*$limit;
$y = $x+$limit;
if($y > $toplam) $y = $toplam;

closedir($handle);
echo "<ul>\n";
for($i=$x;$i<$y;$i++) {
	$tarih = date('d.m.Y - H:i:s',$list[$i][0]);
    echo "\t<li><a href=\"$path".$list[$i][1]."\">".$list[$i][1]."</a> - $tarih</li>\n";
}
echo "</ul>\n";
if($tsayfa > 1) {
    echo "Sayfalar\t:\n";
    for($i=1;$i<=$tsayfa;$i++) {
        echo "<a href=\"?p=$i\">$i</a> -\n";
    }
}

?>
 
0
Onaylı Üye
Üye
Katılım
3 Ağustos 2009
Mesajlar
835
Tepki puanı
7
@Invictus son verdigin kod cok basarili oldu harika :):) bu kod sunucuyu yorarmi acaba ? cache uygulasam mi karar veremedim..
 
0
Onaylı Üye
Üye
Katılım
3 Şubat 2010
Mesajlar
328
Tepki puanı
8
Konum
istanbul
yoracağını sanmıyorum, ama yine de 5dk lık falan cache uygulasan da bi zararı olmaz herhalde
 
Geri
Üst