![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 308 Pomógł: 0 Dołączył: 9.12.2009 Ostrzeżenie: (10%) ![]() ![]() |
Chciałbym żeby każdy plik o danym rozszerzeniu miał przyporządkowaną ikonkę (plik jpg)
Skrypt musi wykrywać rozszerzenie i podstawiać do niego plik graficzny oraz wyświetlać na stronie. ![]() Wyświetlanie plików i ich rozmiarów już zrobiłem. Teraz chcę dołożyć ikonki. Kod <?php $katalog = '../grafik/'; $dirArray = array(); $opdir = opendir("../grafik"); while($file = readdir($opdir)){ if ($file === '.' || $file === '.' || $file === '..' || $file === 'index.php') continue; $dirArray[] = $file; } closedir($opdir); sort($dirArray); foreach($dirArray as $file) { $size = filesize($katalog.$file); echo '<table><tr><td width="500" bgcolor="#F5F5F5"><img align=absmiddle src="img/ txt.bmp"><a href="../grafik/'.$file.'" target=blank>'.$file.'</a></td><td width="100" bgcolor="#F5F5F5"><a><div style="margin-left: 5">'; printf (" [%.2f kB]", $size/1024); echo '</a></td></tr></table>'; } ?> Proszę o pomoc Kod <?PHP
$display['xlt'] = "img/xml.bmp"; $display['xls'] = "img/xml.bmp"; // itd... global $display; array_key_exists(get_extension($file), $display) echo "<img align=absmiddle src=\""; echo $display[get_extension($file)]; echo "\"> "; ?> Ten post edytował david8213 14.02.2010, 09:01:16 |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 4 655 Pomógł: 556 Dołączył: 17.03.2009 Skąd: Katowice Ostrzeżenie: (0%) ![]() ![]() |
No dobra, ale zapomniałeś podać swój kod, w którym masz błąd i nie umiesz sobie z nim sam poradzić.
-------------------- Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP |
|
|
![]()
Post
#3
|
|
![]() Grupa: Opiekunowie Postów: 3 855 Pomógł: 317 Dołączył: 4.01.2005 Skąd: że ![]() |
Przecież to proste. Rozpoznajesz plik po rozszerzeniu, czyli coś w stylu:
-------------------- Jak poprawnie zadać pytanie | Jak poprawnie zatytułować wątek
Najczęstsze błędy | Błędy E_NOTICE | PHP FAQ | FAQ PHPedia | SQL-Injection | Logowanie i sesje | Hashowanie haseł | Server - od czego zacząć ? | Manual PHP Alternatywne Forum dla Ekspertów Nie pomagam na PW, nie mam GG |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 308 Pomógł: 0 Dołączył: 9.12.2009 Ostrzeżenie: (10%) ![]() ![]() |
Zrobiłem coś takiego. Da radę zrobić to krótszym sposobem?
Kod <?php $katalog = '../folder/'; $dirArray = array(); $opdir = opendir("../folder"); while($file = readdir($opdir)){ if ($file === '.' || $file === '.' || $file === '..' || $file === 'index.php') continue; $dirArray[] = $file; } closedir($opdir); sort($dirArray); foreach($dirArray as $file){ echo '<table><tr><td width="500" bgcolor="#F5F5F5">'; if (substr($file, strlen($file) - 3, 3) == "xls") { echo "<img align=absmiddle src='img/xml.bmp' /> "; } if (substr($file, strlen($file) - 3, 3) == "htm") { echo "<img align=absmiddle src='img/html.bmp' /> "; } echo '<a href="../folder/'.$file.'" target=blank>'.$file.'</a></td><td width="100" bgcolor="#F5F5F5"><a><div style="margin-left: 5">'; $size = filesize($katalog.$file); printf (" [%.2f kB]", $size/1024); echo '</a></td></tr></table>'; } ?> Jak zrobić że jeśli nie wykryje rozszerzenia z mojej listy to wstawi domyślną ikonkę ? Ten post edytował david8213 14.02.2010, 10:11:42 |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 2 885 Pomógł: 463 Dołączył: 3.10.2009 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Aż się prosi o switch - case
-------------------- Nie pomagam na pw, tylko forum.
|
|
|
![]()
Post
#6
|
|
![]() Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D ![]() |
Można switch-case, albo tablica w formie klucz=>wartość jako rozszerzenie => obrazek_pliku. Choć moim zdaniem switch case lepszy, bo można upraszczać przy takich formach jak case 'jpg', case 'jpeg' itp
![]() -------------------- Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 308 Pomógł: 0 Dołączył: 9.12.2009 Ostrzeżenie: (10%) ![]() ![]() |
chcę to skrócić
Kod if (substr($file, strlen($file) - 3, 3) == "avi") { echo "<img align=absmiddle src='img/avi.bmp' /> "; } if (substr($file, strlen($file) - 3, 3) == "bmp") { echo "<img align=absmiddle src='img/bmp.bmp' /> "; } if (substr($file, strlen($file) - 3, 3) == "doc") { echo "<img align=absmiddle src='img/doc.bmp' /> "; } if (substr($file, strlen($file) - 3, 3) == "exe") { echo "<img align=absmiddle src='img/exe.bmp' /> "; } if (substr($file, strlen($file) - 3, 3) == "gif") { echo "<img align=absmiddle src='img/gif.bmp' /> "; } if (substr($file, strlen($file) - 3, 3) == "jpg") { echo "<img align=absmiddle src='img/jpg.bmp' /> "; } if (substr($file, strlen($file) - 3, 3) == "jpeg") { echo "<img align=absmiddle src='img/jpg.bmp' /> "; } if (substr($file, strlen($file) - 3, 3) == "xls") { echo "<img align=absmiddle src='img/xml.bmp' /> "; } if (substr($file, strlen($file) - 3, 3) == "html") { echo "<img align=absmiddle src='img/html.bmp' /> "; } if (substr($file, strlen($file) - 3, 3) == "htm") { echo "<img align=absmiddle src='img/html.bmp' /> "; } if (substr($file, strlen($file) - 3, 3) == "txt") { echo "<img align=absmiddle src='img/txt.bmp' /> "; } if (substr($file, strlen($file) - 3, 3) == "mp3") { echo "<img align=absmiddle src='img/mp3.bmp' /> "; } if (substr($file, strlen($file) - 3, 3) == "mpg") { echo "<img align=absmiddle src='img/mpg.bmp' /> "; } if (substr($file, strlen($file) - 3, 3) == "mpeg") { echo "<img align=absmiddle src='img/mpg.bmp' /> "; } if (substr($file, strlen($file) - 3, 3) == "pdf") { echo "<img align=absmiddle src='img/pdf.bmp' /> "; } if (substr($file, strlen($file) - 3, 3) == "png") { echo "<img align=absmiddle src='img/png.bmp' /> "; } if (substr($file, strlen($file) - 3, 3) == "php") { echo "<img align=absmiddle src='img/php.bmp' /> "; } if (substr($file, strlen($file) - 3, 3) == "ppt") { echo "<img align=absmiddle src='img/ppt.bmp' /> "; } if (substr($file, strlen($file) - 3, 3) == "rar") { echo "<img align=absmiddle src='img/rar.bmp' /> "; } if (substr($file, strlen($file) - 3, 3) == "zip") { echo "<img align=absmiddle src='img/zip.bmp' /> "; } if (substr($file, strlen($file) - 3, 3) == "tif") { echo "<img align=absmiddle src='img/tif.bmp' /> "; } if (substr($file, strlen($file) - 3, 3) == "xml") { echo "<img align=absmiddle src='img/xml.bmp' /> "; } if (substr($file, strlen($file) - 3, 3) == "tar") { echo "<img align=absmiddle src='img/tar.bmp' /> "; } if (substr($file, strlen($file) - 3, 3) == "gz") { echo "<img align=absmiddle src='img/gz.bmp' /> "; } Mogę to zrobić na tablicy : Kod $display['php'] = "img/php.bmp"; $display['html'] = "img/html.bmp"; $display['htm'] = "img/html.bmp"; $display['gif'] = "img/gif.bmp"; $display['jpg'] = "img/jpg.bmp"; $display['png'] = "img/png.bmp"; $display['tif'] = "img/tif.bmp"; $display['bmp'] = "img/bmp.bmp"; $display['ppt'] = "img/ppt.bmp"; // prezentacja $display['pot'] = "img/ppt.bmp"; // prezentacja $display['odp'] = "img/ppt.bmp"; // prezentacja openoffice $display['odg'] = "img/ppt.bmp"; // prezentacja openoffice $display['otp'] = "img/ppt.bmp"; // prezentacja openoffice $display['sxi'] = "img/ppt.bmp"; // prezentacja openoffice $display['jpeg'] = "img/jpg.bmp"; $display['txt'] = "img/txt.bmp"; $display['doc'] = "img/doc.bmp"; $display['docx'] = "img/doc.bmp"; $display['odt'] = "img/doc.bmp"; // word openoffice $display['rtf'] = "img/doc.bmp"; // word $display['xml'] = "img/xml.bmp"; $display['ods'] = "img/xml.bmp"; // excel openoffice $display['xlt'] = "img/xml.bmp"; // excel $display['xls'] = "img/xml.bmp"; // excel $display['mp3'] = "img/mp3.bmp"; $display['pdf'] = "img/pdf.bmp"; $display['exe'] = "img/exe.bmp"; $display['rar'] = "img/rar.bmp"; $display['zip'] = "img/rar.bmp"; $display['tar'] = "img/rar.bmp"; $display['gz'] = "img/rar.bmp"; $display['ddb'] = "img/ddb.bmp"; $display['avi'] = "img/avi.bmp"; $display['mpg'] = "img/mpg.bmp"; Jak to wywołać ... ? Bo coś mi nie wychodzi echo "<img align=absmiddle src=\""; echo $display[get_extension($file)]; echo "\"> "; Ten post edytował david8213 14.02.2010, 11:43:15 |
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 127 Pomógł: 32 Dołączył: 8.02.2010 Ostrzeżenie: (0%) ![]() ![]() |
ehh, a jak plik będzie miał rozszerzenie .jpeg albo .html to te wszystkie wasze skrypty padają....
switch:case jest dobre tylko wtedy gdy wykonujemy różny kod dla różnych zmiennych Ten post edytował altruista2 14.02.2010, 11:33:03 -------------------- Jeśli Ci pomogłem kliknij pomógł. W ten sposób temat zaświeci się na żółto i użytkownicy którzy pomagają nie będą musieli niepotrzebnie klikać. Dziękuję.
"Pomaganie" |
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 1 590 Pomógł: 185 Dołączył: 19.04.2006 Skąd: Gdańsk Ostrzeżenie: (0%) ![]() ![]() |
Cytat Rozpoznajesz plik po rozszerzeniu - Wy chyba nie macie żadnej wizji, jak to ma działać. Przecież plik może mieć ten sam typ (np. obrazek jpg), ale różne rozszerzenie, co nie? Takie rzeczy robi się po typie MIME, tworzy się tabelę w bazie danych:typ MIME | Klasa CSS | Inne I przy wyświetlaniu pliku dołącza się JOINem klasę CSS i wyświetla na stronie: Lub wrzucamy to do tablicy (jeśli korzystamy np. z plików a nie bazy): - tablicę typów możesz trzymać np. w pliku tekstowym Następnie przy generowaniu kodu html korzystamy z funkcji: http://pl2.php.net/manual/pl/function.array-key-exists.php Która sprawdzi, czy podany typ pliku jest w tablicy, jeśli tak to wyświetlamy: - a jeśli nie to dajemy jakąś klasę uniwersalną, np. "nieznany typ pliku". Oczywiście pobrać listę plików/plik wraz z parametrami takimi jak nazwa, rozmiar, data uploadu, typ mime etc. umiesz? Po co Wam te ify czy switche? To się robi na tablicach dwoma linijkami kodu. |
|
|
![]()
Post
#10
|
|
![]() Grupa: Zarejestrowani Postów: 127 Pomógł: 32 Dołączył: 8.02.2010 Ostrzeżenie: (0%) ![]() ![]() |
@up: serio będziesz odczytywał typ MIME dla np. 1000 plików? Wydajne rozwiązanie, nie ma co...
I po cholerę robić klasy CSS skoro jemu potrzebne jest tylko zmienianie obrazka ikonki? I skrypt wyświetlający listę plików ma potrzebować dostęp do bazy danych?! Dość kiepska ta twoja wizja ![]() -------------------- Jeśli Ci pomogłem kliknij pomógł. W ten sposób temat zaświeci się na żółto i użytkownicy którzy pomagają nie będą musieli niepotrzebnie klikać. Dziękuję.
"Pomaganie" |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 308 Pomógł: 0 Dołączył: 9.12.2009 Ostrzeżenie: (10%) ![]() ![]() |
Zrobiłem coś takiego
Kod <?PHP //ikonki function file_ext($filename) { $tmp = explode('.',$filename); $count = count($tmp); if($count <= 1) { return false; }else{ return strtolower($tmp[$count-1]); } } // Tablica $icons = Array( 'html' => 'html', 'jpg' => 'jpg', 'rar' => 'rar', 'zip' => 'rar' //ikonki koniec ); $katalog = '../grafik/'; $dirArray = array(); $opdir = opendir("../grafik"); while($file = readdir($opdir)){ if ($file === '.' || $file === '.' || $file === '..' || $file === 'index.php' || $file === 'grafik 2010_pliki') continue; $dirArray[] = $file; } closedir($opdir); sort($dirArray); foreach($dirArray as $file){ echo '<table><tr><td width="500" bgcolor="#F5F5F5">'; echo '... '; if($ext = file_ext($file)) { echo '<img src="img/'.$icons[$ext].'.bmp">'; } echo '<a href="../grafik/'.$file.'" target=blank>'.$file.'</a></td><td width="100" bgcolor="#F5F5F5"><a><div style="margin-left: 5">'; $size = filesize($katalog.$file); printf (" [%.2f kB]", $size/1024); echo '</a></td></tr></table>'; } ?> Działa Można jeszcze zrobić że jak nie będzie w mojej 'bazie' dodanej ikonki to wyświetli mi domyślną ? Ten post edytował david8213 14.02.2010, 12:13:28 |
|
|
![]()
Post
#12
|
|
![]() Grupa: Opiekunowie Postów: 3 855 Pomógł: 317 Dołączył: 4.01.2005 Skąd: że ![]() |
ehh, a jak plik będzie miał rozszerzenie .jpeg albo .html to te wszystkie wasze skrypty padają.... Wcale nie:
-------------------- Jak poprawnie zadać pytanie | Jak poprawnie zatytułować wątek
Najczęstsze błędy | Błędy E_NOTICE | PHP FAQ | FAQ PHPedia | SQL-Injection | Logowanie i sesje | Hashowanie haseł | Server - od czego zacząć ? | Manual PHP Alternatywne Forum dla Ekspertów Nie pomagam na PW, nie mam GG |
|
|
![]()
Post
#13
|
|
![]() Grupa: Zarejestrowani Postów: 127 Pomógł: 32 Dołączył: 8.02.2010 Ostrzeżenie: (0%) ![]() ![]() |
Co to znaczy "nie działa do końca"?
@Ksyhoo: Będziesz dla każdego rozszerzenia wywoływał substr i strlen ? Poza tym już nei wspomnę że jak już chcesz się trzymać tego substr to już lepiej zrobić: ![]() Ten post edytował altruista2 14.02.2010, 12:13:48 -------------------- Jeśli Ci pomogłem kliknij pomógł. W ten sposób temat zaświeci się na żółto i użytkownicy którzy pomagają nie będą musieli niepotrzebnie klikać. Dziękuję.
"Pomaganie" |
|
|
![]()
Post
#14
|
|
![]() Grupa: Opiekunowie Postów: 3 855 Pomógł: 317 Dołączył: 4.01.2005 Skąd: że ![]() |
Przy 1000 rozszerzeń nie ma kompromisu między wydajnością a funkcjonalności ;p
-------------------- Jak poprawnie zadać pytanie | Jak poprawnie zatytułować wątek
Najczęstsze błędy | Błędy E_NOTICE | PHP FAQ | FAQ PHPedia | SQL-Injection | Logowanie i sesje | Hashowanie haseł | Server - od czego zacząć ? | Manual PHP Alternatywne Forum dla Ekspertów Nie pomagam na PW, nie mam GG |
|
|
![]()
Post
#15
|
|
Grupa: Zarejestrowani Postów: 308 Pomógł: 0 Dołączył: 9.12.2009 Ostrzeżenie: (10%) ![]() ![]() |
Działa,działa - Dzięki
Można jeszcze zrobić że jak nie będzie w mojej 'bazie' dodanej ikonki to wyświetli mi domyślną ? |
|
|
![]()
Post
#16
|
|
![]() Grupa: Opiekunowie Postów: 3 855 Pomógł: 317 Dołączył: 4.01.2005 Skąd: że ![]() |
-------------------- Jak poprawnie zadać pytanie | Jak poprawnie zatytułować wątek
Najczęstsze błędy | Błędy E_NOTICE | PHP FAQ | FAQ PHPedia | SQL-Injection | Logowanie i sesje | Hashowanie haseł | Server - od czego zacząć ? | Manual PHP Alternatywne Forum dla Ekspertów Nie pomagam na PW, nie mam GG |
|
|
![]()
Post
#17
|
|
![]() Grupa: Zarejestrowani Postów: 127 Pomógł: 32 Dołączył: 8.02.2010 Ostrzeżenie: (0%) ![]() ![]() |
Domyślna:
@kshyhoo: A jak rozszerzenie to będzie *.byleco ![]() Cytat dobry programista to taki który patrzy w obydwie strony jezdni
Ten post edytował altruista2 14.02.2010, 12:34:48 -------------------- Jeśli Ci pomogłem kliknij pomógł. W ten sposób temat zaświeci się na żółto i użytkownicy którzy pomagają nie będą musieli niepotrzebnie klikać. Dziękuję.
"Pomaganie" |
|
|
![]()
Post
#18
|
|
Grupa: Zarejestrowani Postów: 308 Pomógł: 0 Dołączył: 9.12.2009 Ostrzeżenie: (10%) ![]() ![]() |
jak rozszerzenie będzie inne niż w tablicy to pojawi się ikonka domyślna
|
|
|
![]()
Post
#19
|
|
![]() Grupa: Zarejestrowani Postów: 127 Pomógł: 32 Dołączył: 8.02.2010 Ostrzeżenie: (0%) ![]() ![]() |
Tak, napisałem przecież:
Domyślna:
Ten post edytował altruista2 14.02.2010, 12:43:51 -------------------- Jeśli Ci pomogłem kliknij pomógł. W ten sposób temat zaświeci się na żółto i użytkownicy którzy pomagają nie będą musieli niepotrzebnie klikać. Dziękuję.
"Pomaganie" |
|
|
![]()
Post
#20
|
|
Grupa: Zarejestrowani Postów: 308 Pomógł: 0 Dołączył: 9.12.2009 Ostrzeżenie: (10%) ![]() ![]() |
Ta domyślna nie działa Gdzieś jest błąd
Kod <?php
//ikonki function file_ext($filename) { $tmp = explode('.',$filename); $count = count($tmp); if($count <= 1) { return false; }else{ return strtolower($tmp[$count-1]); } } // Tablica //rozszerzenie -> nazwa pliku $icons = Array( 'html' => 'html', 'htm' => 'html', 'php' => 'php', 'jpg' => 'jpg', 'tif' => 'tif', 'bmp' => 'bmp', 'png' => 'png', 'rar' => 'rar', 'tar' => 'tar', 'gz' => 'gz', 'zip' => 'rar', 'exe' => 'exe', 'txt' => 'txt', 'pdf' => 'pdf', 'doc' => 'doc', 'xml' => 'xml', 'xls' => 'xml', 'ppt' => 'ppt', 'ddb' => 'ddb', 'mp3' => 'mp3', 'mp4' => 'mp3', 'avi' => 'avi', 'mpg' => 'mpg', 'mpeg' => 'mpeg', 'xml' => 'xml' ); //ikonki koniec $katalog = '../grafik/'; // Zmienna potrzebna do wyświetlenia rozmiaru pliku $dirArray = array(); $opdir = opendir("../grafik"); while($file = readdir($opdir)) { // Pliki i foldery które nie będą wyświetlane if ($file === '.' || $file === '.' || $file === '..' || $file === 'index.php' || $file === 'grafik 2010_pliki') continue; $dirArray[] = $file; } closedir($opdir); sort($dirArray); foreach($dirArray as $file) { // Pętla wykonywana dla każdego pliku echo '<table><tr><td width="500" bgcolor="#F5F5F5">'; $ext = file_ext($file) if($icons[$ext]) { echo '<img src="img/'.$icons[$ext].'.bmp">'; }else{ echo '<img src="img/domyslna.bmp">'; } } echo '<a href="../grafik/'.$file.'" target=blank>'.$file.'</a></td><td width="100" bgcolor="#F5F5F5"><a><div style="margin-left: 5">'; $size = filesize($katalog.$file); // Rozmiar pliku printf (" [%.2f kB]", $size/1024); // Rozmiar pliku echo '</a></td></tr></table>'; } ?> |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 13.08.2025 - 23:19 |