Prikaži potpunu verziju : Čitanje naziva fajlova sa php
Potrbna mi je pomoć oko pisanja skripte za čitanje naziva fajlova i foldera i smeštanje u mysql.
Imam glavni folder i podfoldere čija imena odgovaraju id polju tabele.
Recimo ovako slike/1; slike/2 itd.
E sad, podfoldera ima preko tristo, a slika duplo više, a ja treba da iščitam imena slika i da ih upišem u polje tabele tako da gde je id=1 u polje za slike upišem podatke iz foldera 1 i tako redom.
Podatke treba upisati u ovaj string i onda sve zajedno u polje [{"name":"slika_1.jpg","title":"","description":""},{"name":"slika_2.jpg","title":"","description":""}...]
Znači samo je naziv slike bitan, ovo drugo može da ide prazno, i za svaku sliku iz fodera.
Nisam baš nešto vešt sa php-om, ali ako bi me neko uputio bio bih zahvalan
Probaj sa http://us2.php.net/directoryiterator:
$fileData = fillArrayWithFileNodes( new DirectoryIterator( '/path/to/root/' ) );
function fillArrayWithFileNodes( DirectoryIterator $dir )
{
$data = array();
foreach ( $dir as $node )
{
if ( $node->isDir() && !$node->isDot() )
{
$data[$node->getFilename()] = fillArrayWithFileNodes( new DirectoryIterator( $node->getPathname() ) );
}
else if ( $node->isFile() )
{
$data[] = $node->getFilename();
}
}
return $data;
}
P.S
"ovaj string" je JSON tako da nema potrebe rucno da kreiras strukturu tog stringa.
Hvala , ali moje znanje php-a je na osnovnom nivou.
Petljam sa nekim skripticama, ali bez uspeha.
Dva brzinska saveta pošto sam kratak sa vremenom.
1) Za jendostavan traversing folderske strukture koristi kombinaciju glob (http://php.net/manual/en/function.glob.php) i is_dir (http://www.php.net/manual/en/function.is-dir.php). Jednostavno napraviš funkciju koja će prvo pozvati glob('*') a onda za svaki element vraćenog niza proveravati da li je folder. Ako nije odradiš upis u bazu (ili još bolje podatke tako sređene smestiš u neki privremeni niz da ne bi imao slanje upita u petlji). Ako jeste rekurzivno pozoveš tu istu funkciju i rezultat rekurzivnog poziva smestiš u onaj isti malopre pomenuti niz.
2) Nemoj da skladištiš JSON stringove u bazu osim u slučajevima kad radiš sa serijalizovanim podacima koji nemaju alternativu. Jednostavno napravi sledeću relaciju:
id_image, name, title, description
Na ovaj način si ispoštovao bar Prvu Normalnu Formu što je neki apsolutni minimum da se kasnije ne hvataš za glavu. Ako ti je prilikom čitanja baš potrebno da podaci budu u JSON obliku jednostavno pre slanja klijentu odradiš pretvaranje u JSON sa json_encode (http://php.net/manual/en/function.json-encode.php).
To za JSON mora, radi se o Joomla komponenti u koju iz jedne druge prebacujem podatke, a ova tako beleži.
Ostalo mi jhe samo slike da ubacim i gotovo, a hteo bih da ne radim ručno, ima mnoogo.
Našao sam ovu skriptu. Daje tačan ispis, kako sada to da prebacim?
$topdir = '/path/to/folder/';
function getFiles($path)
{
$h=opendir($path);
$dirarray = explode('/',$path);
$dirarray = array_reverse($dirarray);
$key=$dirarray[1];
while (false !== ($file = readdir($h)))
{
#get files from top directory
if(is_file($path.$file))
$files[$key][] = $file;
else
{
#get files from child folders
if(is_dir($path.$file) && $file != '.' && $file !='..')
{
$npath = $path.$file.'/';
$files[] = getFiles($npath);
}
}
}
if(is_array($files))
{
return $files;
}
else
return false;
}
$content = getFiles($topdir);
echo '<pre>';
print_r($content);
echo '</pre>';
?>
Ispis koji daje
[361] => Array
(
[545] => Array
(
[0] => 545_4.jpg
[1] => 545_3.jpg
[2] => 545_9.jpg
[3] => 545_1.jpg
[4] => 545_10.jpg
[5] => 545_7.jpg
[6] => 545_6.jpg
[7] => 545_5.jpg
[8] => 545_2.jpg
[9] => 545_8.jpg
)
Gde je [545] folder i ujedno id u bazi. Izlista sve foldere i slike, a ima blizu 400 foldera sa različitim brojem slika.
Sad bi ovo trebalo spakovati u onaj niz i u bazu.
Uspeo sam.
Iz ovog ispisa sam sa "foreach" izvukao nazive foldera i fajlove i složio sql insert, jedino što sam morao da napravim csv fajl, da u Calc-u ručno dodam kolonu. Dalje je sve išlo lakše.
Nije baš najelegantnije rešenje, ali obzirom da samo jednom treba odraditi, još uvek je ovako mnoogo lakše nego ručni unos stotine slika.
Ah Joomla... Fraktal lošeg dizajna.
vBulletin® v3.8.7, Copyright ©2000-2025, vBulletin Solutions, Inc.