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 - .:. , 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 ::. - 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 - 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 - .:. , Shneider 30/01/09 20:00
zrob to w jednej petli.
czyli zmiana jpg oraz jezeli istnieje txt.:: Live at Trance Energy ::. - 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 zrobicSM-S908
- 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. - 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.- 170 , kubazzz 31/01/09 02:48
ICH JEST, ale wolalbym uniwersalna metodweSM-S908 - 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
- 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......- 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 |
|
|
|
|