Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: wyswietlanie obrazkow na stronie
Forum PHP.pl > Forum > PHP
kasa80
witam! jak moge odczytac obrazki ktore sa na serwerze w katalogu (np. pic) i wyswietlic je na stronie www. chcialbym aby skrypt automatycznie pobieral wszystkie pliki z katalogu i wyswietlil je na stronie. kiedy dodalbym nowe to zeby one byly wyswietlane na samej gorze. z gory dzieki za odpowiedz.[manual:4f3406a185][/manual:4f3406a185]
adwol
Cytat
jak moge odczytac obrazki ktore sa na serwerze w katalogu (np. pic) i wyswietlic je na stronie www. chcialbym aby skrypt automatycznie pobieral wszystkie pliki z katalogu i wyswietlil je na stronie. kiedy dodalbym nowe to zeby one byly wyswietlane na samej gorze. z gory dzieki za odpowiedz.

[php:1:56c2a08101]<?php
$dir = 'katalog_z_obrazkami';

function cmp_mtime($a, $cool.gif
{
global $dir;
return filemtime("$dir/$b") - filemtime("$dir/$a");
}

$d = opendir($dir);
$a = array();
while (($f = readdir($d)) !== false)
if (is_file("$dir/$f"))
$a[] = $f;
usort($a, 'cmp_mtime');
foreach ($a as $f)
print "<img src="$dir/$f"><br>n";

?>[/php:1:56c2a08101]
kasa80
dzieki za szybka odpowiedz, mam pytanie do tego skryptu: co oznaczaja ponizsze linie:
Cytat
 return filemtime("$dir/$b") - filemtime("$dir/$a");

while (($f = readdir($d)) !== false)

foreach ($a as $f)


dzieki...

Ps. szybki jestes winksmiley.jpg
sivyer
Cytat
dzieki za szybka odpowiedz, mam pytanie do tego skryptu: co oznaczaja ponizsze linie:
Cytat

return filemtime("$dir/$b") - filemtime("$dir/$a");

while (($f = readdir($d)) !== false)

foreach ($a as $f)



Wszystkie ponizsze informacje pochodza z manuala (http://pl.php.net/manual/pl/)

filemtime
Pobiera czas ostatniej modyfikacji pliku


while
Znaczenie instrukcji while jest bardzo proste. Nakazuje ona php tyle razy wykonywać określone instrukcje, jak długo wyrażenie przy słowie while ma wartość TRUE. Wartość tego wyrażenia jest sprawdzana za każdym razem na początku wykonywania nowej iteracji pętli, więc jeśli jego wartość zmieni się w trakcie wykonywania instrukcji, wykonanie całej pętli nie skończy się do momentu zakończenia całej iteracji. Jedna iteracja jest to jednokrotne wykonanie wszystkich instrukcji w pętli. Jeśli wyrażenie logiczne ma wartość FALSE już na samym początku, instrukcje wewnątrz pętli nie będą w ogóle wykonane.

foreach
Pętla ta umożliwia łatwą iterację wewnątrz tablic. foreach działa tylko na tablicach i każda próba użycia tej pętli na innym typie lub na niezainicjowanej zmiennej będzie skwitowana komunikatem o błędzie.

Mam nadzieje, ze to troche naswietlilo te pojecia, dokladniejsze informacje uzyskasz po kliknieciu na podane linki
adwol
Cytat
dzieki za szybka odpowiedz, mam pytanie do tego skryptu: co oznaczaja ponizsze linie:

Proponuje poczytać manual tam wszystko jest napisane.
[php:1:6a5dcc935a]<?php
return filemtime("$dir/$b") - filemtime("$dir/$a");
?>[/php:1:6a5dcc935a]
http://pl.php.net/manual/pl/function.filemtime.php
http://pl.php.net/manual/pl/function.usort.php
[php:1:6a5dcc935a]<?php
while (($f = readdir($d)) !== false)
?>[/php:1:6a5dcc935a]
http://pl.php.net/manual/pl/control-struct...tures.while.php
http://pl.php.net/manual/pl/function.readdir.php
[php:1:6a5dcc935a]<?php
foreach ($a as $f)
?>[/php:1:6a5dcc935a]
http://pl.php.net/manual/pl/control-struct...res.foreach.php
kasa80
Cytat
Proponuje poczytać manual tam wszystko jest napisane.
[php]<?php
 return filemtime("$dir/$b") - filemtime("$dir/$a");
?>

<?php
while (($f = readdir($d)) !== false)
?>

<?php
foreach ($a as $f)
?>


troszke niejasno napisalem chodzilo mi o szersze wyjasnienie zastosowania tych polecen, np. dlaczego od filemtime...$b odejmuje sie filemtime...$a i dlaczego funkcja cmp_mtime ma $a i $b a pozniej $b nie wiem w jaki sposob jest wykorzystana... ale dzieki za zainteresowanie tym problemem (dla mnie) winksmiley.jpg
adwol
Cytat
troszke niejasno napisalem chodzilo mi o szersze wyjasnienie zastosowania tych polecen, np. dlaczego od filemtime...$b odejmuje sie filemtime...$a i dlaczego funkcja cmp_mtime ma $a i $b a pozniej $b nie wiem w jaki sposob jest wykorzystana... ale dzieki za zainteresowanie tym problemem (dla mnie) winksmiley.jpg

Jakbyś poczytał fragmenty manuala do którego link Ci podałem wcześniej to byś się dowiedział, że:
:arrow: funkcja usort wymaga podania nazwy funkcji użytkownika która będzie porównywała 2 elementy sortowanej tablicy w/g jakiegoś kryterium. Funkcją tą tutaj jest cmp_mtime() (nazwa nieistotna)
:arrow: ta funkcja porównująca ma przyjmować 2 argumenty (nazwy nieistotne, $a i $b przyjmowane są zwyczajowo chyba od perla bo tam sort wymusza takie nazwy) i zwracać wartość mniejszą od zera, zero lub większą od zera odpowiednio gdy pierwszy element ma być w kolejności sortowana przed drugim, w tym samym miejscu lub za drugim. W tym wypadku najłatwiej to zrealizować przez różnicę.
W tym wypadku chciałeś posortować obrazki malejąco w/g czasu umieszczenia go w katalogu (co się przekłada na czas jego modyfikacji), więc w wyrażeniu zwracanym przez funkcję porównującą występuje różnica czasów modyfikacji (filemtime).

I jeszcze raz powtórze: to wszystko jest napisane w manualu.
kasa80
dzieki wszystkim biggrin.gif
bass4you
A czy mozecie powiedziec jak w tym skrypcie zrobic zeby wyswietlal np ostatnie 10 rysunkow questionmark.gif
adwol
Cytat
A czy mozecie powiedziec jak w tym skrypcie zrobic zeby wyswietlal np ostatnie 10 rysunkow questionmark.gif

Ten skrypt pobiera nazwy plików z katalogu, sortuje je w/g czasu ostatniej modyfikacji i wsadza do tablicy. Teraz jak chcesz wyciągnąć 5 plików to wyciągasz 5 pierwszych elementów tablicy, a jak 10 plików to 10 elementów itd.
bass4you
no okej, ale mam z tym wlasnie problem sad.gif i nie wiem jak sie zabrac za to
bass4you
okej okej juz mi chyba dziala dzieki
bass4you
mam kolejny problem, stronka wyswietla mi plik THUMBS.DB i robi mi to jako jpg'a wiec automatycznie zostaje pusta kratka
bass4you
a pelnia szczesnia byloby dorobienie do tego miniaturek bylbym w niebie
anas
Cytat
mam kolejny problem, stronka wyswietla mi plik THUMBS.DB i robi mi to jako jpg'a wiec automatycznie zostaje pusta kratka


Usun plik THUMBS.DB z katalogu w ktorym trzymasz obrazki - jesli pracujesz pod windows XP - to system robi taki plik(THUMBS.DB) wewnatrz katalogu aby wyswietlac ikonki jako miniaturki obrazow graficznych. Domyslnie taki plik ma atrybuyt ukryty. Jesli pracujesz pod Unixowym system to rzecz jeszcze prostsza, nie przegrywaj tego pliku na serwer.

Co do miniaturek to rozwiazaniem bedzie tutaj bibliotek GD. Napisz sobie prosta funkcje ktora bedzie z wczesniej stworzonej tablicy plikow graficznych wyciagala jego typ, na tej podstawie rob miniaturke i co bardzo wazne cache-uj ja sobie w jakims katalogu pictures_min, etc - i niech funkcja ktora wlasnie tworzy, a zarazem wyswietla miniaturki sprawdza czy takowa nie zostala juz stworzona (po co to sprawdzanie, a no po to, ze tworzenie miniatur wymaga duzych zasobow i pozera je diabelsko - wiem z doswiadczenia... zastosowalem takie rozwiazanie i wszystko dziala mi elegancko).

Pozdrawiam

anas
Malkavian
Mam pytanie... Nie wiem czy to powinienem tutaj umiescic bo jak sadze to jest wina html`a a nie php... No ale moze ktos bedzie znal odpowiedz. Tak wiec mam skrypt:
[php:1:a678bdbb47]<?php

$dir = 'obrazy';

function cmp_mtime($a, $cool.gif
{
global $dir;
return filemtime("$dir/$b") - filemtime("$dir/$a");
}

$d = opendir($dir);
$a = array();
while (($f = readdir($d)) !== false)
if (is_file("$dir/$f"))
$a[] = $f;
usort($a, 'cmp_mtime');
foreach ($a as $f)
print "<a href="$dir/$f" target="_blank" noborder><img src="$dir/$f"><br>$f</a><br>n";
?>[/php:1:a678bdbb47]

Wynikiem tego jest lista rysunkow z podpisami ale wokol rysunkow jest dosyc gruba niebieska linia (przez to ze linki sa z nich zrobione) i nie amm pojecia jak te ramki zlikwidowac.
wallace
to niebieska ramka od linku :-) uzyj text-decoration=none ... tylko nie pamietam jak to mozna bezposrednio w linku zastosowac :| zobacz specyfikacje od css'ow (chyba) :-)
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.