Twoje PC  
Zarejestruj się na Twoje PC
TwojePC.pl | PC | Komputery, nowe technologie, recenzje, testy
B O A R D
   » Board
 » Zadaj pytanie
 » Archiwum
 » Szukaj
 » Stylizacja

 
M E N U
  0
 » Nowości
0
 » Archiwum
0
 » Recenzje / Testy
0
 » Board
0
 » Rejestracja
0
0
 
Szukaj @ TwojePC
 

w Newsach i na Boardzie
 
OBECNI NA TPC
 
 » adolphik 00:27
 » Piwomir 00:19
 » gigamiki 00:11
 » Pawiano 00:11
 » jenot 00:11
 » DJopek 00:01
 » XepeR 00:00
 » elliot_pl 23:54
 » Pawelec 23:51
 » myszon 23:49
 » Shark20 23:33
 » Fasola 23:28
 » DYD 23:28
 » biEski 23:24
 » Paweł27 23:20
 » fiskomp 23:16
 » Magnus 23:15
 » wrrr 23:14
 » okobar 23:09
 » Flo 23:07

 Dzisiaj przeczytano
 41129 postów,
 wczoraj 25974

 Szybkie ładowanie
 jest:
włączone.

 
ccc
TwojePC.pl © 2001 - 2024
A R C H I W A L N A   W I A D O M O Ś Ć
    

[php] Jaki jest najprostszy punkt wyjścia do wczytania nazw wszystkich plików z katalogu? , kubazzz 30/01/09 17:41
Chciałbym zrobić dynamiczne linki, na zasadzie, że jak dodam jakiś plik, to nie będę musiał na sztywno dopisywać linku do listy.
Jak najprościej się do tego zabrać?
[wiadomo, że pętla jakaś, najlepiej na bazie tablicy nazw plików z katalogu].

z php.net

<?php
$dir = "/etc/php5/";

// Open a known directory, and proceed to read its contents
if (is_dir($dir)) {
if ($dh = opendir($dir)) {
while (($file = readdir($dh)) !== false) {
echo "filename: $file : filetype: " . filetype($dir . $file) . "\n";
}
closedir($dh);
}
}
?>

That's the way?

SM-S908

  1. .:. , Shneider 30/01/09 18:10
    ja to robie tak

    $dir = dir('/.../');
    while($file = $dir->read())
    if($file != '.' && $file != '..')
    {
    $folder = "/.../";
    $plik = $folder . $file;
    $mt = filemtime($plik);
    $t_plik_nr = date("YmdHis", $mt);
    $tab[$ii] = $t_plik_nr . $file;
    $ii+=1;
    }
    $dir->close();


    a nastepnie robie sortowanie wg daty i wyswietlam przez petle.

    .:: Live at Trance Energy ::.

  2. Polecam poczytać o poleceniu scandir , Conroy 30/01/09 18:51
    http://pl.php.net/manual/en/function.scandir.php
    + oczywiście przykłady.

    http://flickr.com/photos/myhacien
    da

  3. a jeszcze jedna rzecz, dotycząca zmiany nazwy pod windowsem , kubazzz 30/01/09 19:39
    mam pliki:

    jpg i txt z opisem.

    Wiekszosc JPG ma swoj opis w pliku TXT, dwa pliki o takiej samej nazwie, tylko roznej koncowce.

    Chce zmienic nazwy JPG wg maski nowa_nazwa_001.jpg, przyrostowo cyferki.
    I zmienic nazwy TXT wg tego samego schematu, ale jak sobie poradzic z tym, ze czasem jest "dziura", kilka JPEG nie ma swojego pliku TXT.

    Mozna recznie to zmieniac, ale powyzej 5 plikow to sie robi pracochlonne...

    SM-S908

    1. .:. , Shneider 30/01/09 20:00
      zrob to w jednej petli.
      czyli zmiana jpg oraz jezeli istnieje txt

      .:: Live at Trance Energy ::.

      1. ale to nie php robi, chce takie cos na dysku zrobic , kubazzz 30/01/09 20:04
        mam inne mozliwosci wtedy, bo nie mam serwera php na komputerze nawet;)

        jakimis ogolnymi narzedziami chcialbym to zrobic

        SM-S908

    2. Pewnie są jakieś narzędzia... , jenot 30/01/09 21:41
      Tylko kwestia tego czy chcesz to zrobić jednorazowo. Jeśli tak to zainstaluj xampa albo innego krasnala i napisz to w php bo widzę, ze w tym już potrafisz. Wiem, że to brutalne rozwiązanie - ale liczy się cel.

      Jeśłi chcesz to robić częściej to może zaciągnij sobie kompilator do tego php i będziesz miał exe.
      Tak wiem, że chamskie rozwiązanie ale skoro już umiesz to php to czemu nie ?

      pod XP wsadowo też się to da zrobić ale chyba szybciej skompilujesz to php :-) Ja mam alergię na XP'kowego batcha'a.

      Mój podpis max 100 zanaków,
      zabroniony spam oraz reklama.

    3. Jeśli dziury są , Thradya 30/01/09 22:51
      tylko czasem - to dziury załatać, a potem TC.
      Chyba, że tych plików jest tyle, ile się spodziewam, że ich jest.

      1. 170 , kubazzz 31/01/09 02:48
        ICH JEST, ale wolalbym uniwersalna metodwe

        SM-S908

      2. bo chodziło mi o to , kubazzz 31/01/09 03:47
        http://gimeproject.pl/w212/w212.html

        nie bardzo wiedziałem jak masowo dodać opisy, nawet myślałem że lepiej dodać do exif i potem w PHP wyciągać z JPEGów, ale ostatecznie chyba wariant z plikiem .txt jest lepszy.

        SM-S908

  4. Hmmm... Może nie do końca rozumiem... Załużmy więc, że masz folder , Mcmumin 31/01/09 17:59
    w którym znajdują się pliki graficzne i pliki txt z ich opisami. Pomysł - napisać klasę filtrującą zawartość folderu, wczytującą pliki graficzne i tworzącą opisy. Mam nadzieję, że to Ci pomoże:
    Klasa (plik o nazwie CoWKatalogu.php):

    <?php
    class CoWKatalogu{
    //dane składowe
    private $filearray = array();
    private $replacechar;
    private $directory;
    //////////////////////////////////////////////////////////////////
    //konstruktor
    /////////////////////////////////////////////////////////////////
    public function __construct($directory, $replacechar = "_"){
    $this->directory = $directory;
    $this->replacechar = $replacechar;
    $d = "";
    if(is_dir($directory)){
    $d = opendir($directory) or die("Nie można otworzyć katalogu.");
    while(false !== ($f = readdir($d))){
    if(is_file("$directory/$f")){
    $title = $this->createTitle($f);
    $this->filearray[$f] = $title;
    }
    }
    closedir($d);
    }else{
    //błąd
    die("Zrezygnowano z dostępu do katalogu.");
    }
    }
    //////////////////////////////////////////////////////////////////
    //destruktor
    //////////////////////////////////////////////////////////////////
    public function __destruct(){
    unset($this->filearray);
    }
    //////////////////////////////////////////////////////////////////
    //funkcje publiczne
    //////////////////////////////////////////////////////////////////
    public function getDirectoryName(){
    return $this->directory;
    }
    //////////////////////////////////////////////////////////////////
    public function indexOrder(){
    sort($this->filearray);
    }
    //////////////////////////////////////////////////////////////////
    public function naturalCaseInsensitiveOrder(){
    natcasesort($this->filearray);
    }
    //////////////////////////////////////////////////////////////////
    //zwraca wartość false, jeśli nie wszystkie pliki mają podane rozszerzenia
    //////////////////////////////////////////////////////////////////
    public function checkAllImages(){
    $bln = true;
    $extension = "";
    $types = array("jpg", "jpeg", "gif", "png");
    foreach ($this->filearray as $key => $value){
    $extension = substr($key,(strpos($key, ".")+1));
    $extension = strtolower($extension);
    if(!in_array($extension, $types)){
    $bln = false;
    break;
    }
    }
    return $bln;
    }
    //////////////////////////////////////////////////////////////////
    //zwraca wartość false, jeśli nie wszystkie rozszerzenia są określone
    //////////////////////////////////////////////////////////////////
    public function checkAllSpecificType($extension){
    $extension = strtolower($extension);
    $bln = true;
    $ext = "";
    foreach ($this->filearray as $key => $value){
    $ext = substr($key,(strpos($key, ".")+1));
    $ext = strtolower($ext);
    if($extension != $ext){
    $bln = false;
    break;
    }
    }
    return $bln;
    }
    //////////////////////////////////////////////////////////////////
    public function getCount(){
    return count($this->filearray);
    }
    //////////////////////////////////////////////////////////////////
    public function getFileArray(){
    return $this->filearray;
    }
    //////////////////////////////////////////////////////////////////
    //eliminuje te elementy tablicy, które nie należą do grupy o podanych rozszerzeniach - faza 2
    /////////////////////////////////////////////////////////////////
    public function filter($extension){
    $extension = strtolower($extension);
    foreach ($this->filearray as $key => $value)
    {
    $ext = substr($key,(strpos($key, ".")+1));
    $ext = strtolower($ext);
    if($ext != $extension){
    unset($this->filearray[$key]);
    }
    }
    }
    //////////////////////////////////////////////////////////////////
    //eliminuje wszystkie elementy tablicy, które nie są obrazami - faza 2
    /////////////////////////////////////////////////////////////////
    public function imagesOnly(){
    $extension = "";
    $types = array("jpg", "jpeg", "gif", "png");
    foreach ($this->filearray as $key => $value){
    $extension = substr($key,(strpos($key, ".")+1));
    $extension = strtolower($extension);
    if(!in_array($extension, $types)){
    unset($this->filearray[$key]);
    }
    }
    }
    //////////////////////////////////////////////////////////////////
    //odtwarza tablice po filtrowaniu - faza 2
    /////////////////////////////////////////////////////////////////
    public function removeFilter(){
    unset($this->filearray);
    $d = "";
    $d = opendir($this->directory) or die("Nie można otworzyć katalogu.");
    while(false !== ($f = readdir($d))){
    if(is_file("$this->directory/$f")){
    $title = $this->createTitle($f);
    $this->filearray[$f] = $title;
    }
    }
    closedir($d);
    }
    //////////////////////////////////////////////////////////////////
    //funkcje prywatne
    /////////////////////////////////////////////////////////////////
    private function createTitle($title){
    //oddziela rozszerzenie
    $title = substr($title, 0, strrpos($title, "."));
    //zamienia znak separator w nazwie pliku na spację
    $title = str_replace($this->replacechar, " ", $title);
    return $title;
    }
    }//koniec klasy
    ?>

    Wykorzystanie klasy:

    <?php
    require 'CoWKatalogu.php';
    $di = new CoWKatalogu('graphics');
    if(!$di->checkAllImages()){
    $di->imagesOnly();
    }
    $di->naturalCaseInsensitiveOrder();
    //get array
    $filearray = $di->getFileArray();
    echo "<div style=\"text-align:center;\">";
    foreach ($filearray as $key => $value){
    echo "<img src=\"graphics/$key\" /><br />Tytuł: $value<br />\n";
    }
    echo "</div>";
    ?>

    Ufffff......

    1. dzięki , kubazzz 1/02/09 17:52
      trochę to przekombinowane tak naprawdę :D
      Tzn bardzo fajne, ale aż tak skomplikowanej rzeczy, takiego systemowego rozwiązania nie planowałem:)

      SM-S908

    
All rights reserved ® Copyright and Design 2001-2024, TwojePC.PL