Php + dodawanie obrazkow


(Matriks87) #1

Witam,

czy mógłby mi ktoś powiedzieć jak dodać obrazki na stronę?

mam folder obrazki i jest w nich powiedzmy 9 jpegów i chce żeby mi się wyświetlały na stronie w galerii czy jest jakaś funkcja która będzie mi wrzucać takie obrazki z folderu czy trzeba je jakoś pojedynczo wrzucać???


(Damgora) #2

no... (x)html?

echo '';[/code]

można to wykonać w pętli pobierając nazwy plików np. z tablicy.

jeśli nie chcesz wypisywać wszystkich nazw możesz użyć scandir() i odfiltrować tylko ciągi zakończone rozszerzeniami plików graficznych.


(Matriks87) #3

jak to działa?

czyli jeżeli mam w folder tak gdzie index.php i ten folder to obrazki

to:

array scandir ( string $obrazki)

i póżniej

echo "$obrazki";

i mi to wyświetli?


(Damgora) #4
$dir = 'folder/folder2'; //ścieżka do katalogu z obrazkami$filenames = scandir($dir);$i=2; $icount($filenames); $i++)    echo '.$dir.'/'.$filenames[$i].'" alt="'.$filenames[$i].'"/';

(Matriks87) #5
<?php  

$dir = 'obrazki'; //ścieżka do katalogu z obrazkami

$filenames = scandir($dir);

for($i=2; $i
    echo '';       

?>[/code]

i błąd wychodzi

:o


(Ooi) #6

Zmień Krasnala na coś z nowszego.

Funkcja scandir() wymaga w PHP5.


(Matriks87) #7

zainstalowałem XAMPP może mi ktoś powiedzieć gdzie mam teraz wrzucić pliki żeby mi top działało ?


(Andrzejmn) #8
ścieżka_do_xampp\xampp\htdocs

(Matriks87) #9

strona główna niby się wyświetla ale żadna z podstron nie chce jednak krasnal chyba lepszy :cry:

dobra już się wyświetlają teraz sprawdze to wczytywanie tych obrazków


(Ooi) #10

Zakładam, że uruchomiłeś serwer apache w panelu kontrolnym XAMPP i wchodzisz przez localhost/jakiśfolder

EDIT: edytowałeś posta w trakcie mojego pisania :slight_smile:


(Matriks87) #11

no dzieła =D>

tylko teraz trzeba by to jakoś sformatować może do jakiejś tabelki bo się wyświetlają jeden pod drugim

-- Dodane 23.12.2010 (Cz) 12:55 --

mam w folderze 9 obrazków i chce żeby mi się wyświetlały w tabeli 3x3 próbuję to zrobić na pętli for

<?php


$dir = 'obrazki'; //ścieżka do katalogu z obrazkami

$filenames = scandir($dir);




?>

| '.$filenames[$i].' |
| '.$filenames[$j].' |
[/code]

i mi się jakieś głupoty wyświetlają co robię źle?

po drugie czemu jak wpisuje w

[code]

to mi się wielkość tablicy nie zmienia tak samo jak wpiszę w

nic się nie zmienia


(Ooi) #12

Przemyśl rozmieszczenie kolumn i wierszy (

) i licznik obrazków

Ma być

img1img2img3

img4img5img6

img7img8img9

A jest jak?

img1

img1

img2

img3img2

img1

img2

img3img3

img1

img2

img3


(Matriks87) #13

zrobiłem to w taki sposób

<?php


$dir = 'obrazki'; //ścieżka do katalogu z obrazkami

$filenames = scandir($dir);


?>

| '.$filenames[$i].' |
| '.$filenames[$i].' |
| '.$filenames[$i].' |
[/code]

i niby jest dobrze stworzyło tablice 3x3 ale jest pusty pierwszy element i ciągle nie mogę zmniejszyć zdjęcia


(Ooi) #14

Atrybuty szerokości i wysokości daj do a nie do

zawsze zostanie rozszerzone jeżeli obrazek w nim jest większy.

Ewentualnie zamiast tego zastosuj CSS.

Pierwszy element jest pusty ponieważ jest to katalog. Konkretnie katalog ".." czyli przejście do folderu nadrzędnego.

Upewnij się sprawdzając źródło strony wynikowej w przeglądarce, że ..

Możesz zastosować wykluczenie zliczania katalogów sprawdzając to przy pomocy funkcji is_dir().

Lub iterować w pętli 2-4, 5-7 i 8-10.


(Damgora) #15

spróbuj:

$dir = 'obrazki';$filenames = scandir($dir);$o = '';for ($i=2; $icount($filenames); $i++){    if ($i % 3 == 2)        $o .= '';    $o .= '
.$dir.'/'.$filenames[$i].'" alt="'.$filenames[$i].'"/
';    if ($i % 3 == 1 || $i == count($filenames) - 1)        $o .= '';';echo $o; [/code]

(Matriks87) #16

bardzo fajny skrypcik dzięki, mam jeszcze takie pytanie jak wyśrodkować te zdjęcia?

for ($i=2; $i
 to count($filenames) to jest ilość plików w folderze?

i mógłbyś mniej więcej opisać zasade działania tego?

[code] if ($i % 3 == 2) $o .= '
'; $o .= '
'.$filenames[$i].''; if ($i % 3 == 1 || $i == count($filenames) - 1) $o .= '
';


(Ooi) #17

$i % 3 to modulo (reszta z dzielenia)

Jeżeli resztą z dzielenia jest 2 to otwiera

table-row (odpowiednik )

Niezależnie od powyższego dodaje

table-cell (odpowiednik ) z obrazkiem.

Następnie sprawdza czy modulo jest równe 1 lub czy obrazki się skończyły.

Jeżeli tak to zamyka

table-row

Kolega podał rozwiązanie niezależne od ilości obrazków w folderze.


(Damgora) #18

(Matriks87) #19

a zrobić żeby dany obrazek po najechaniu na miniaturkę się trochę powiększył a po kliknięciu otworzył na całej stronie?

i jeżeli będę miał przykładowo 27 obrazków w folderze i chciałbym żeby były po 9 na stronie i pod obrazkami wybór strony 1-3 to muszę to muszę robić trzy strony i takim sposobem wyświetlać na każdej z nich?

i jeszcze pytanie odnosnie


(Damgora) #20

można np. w arkuszu css domyślnie dla tych obrazków ustawić margin:10px; max-width:80px; max-height:80px;

a dla selektora z pseudoklasą :hover dać margin:0; max-width:100px; max-height:100px;

to tylko przykład, specjalnie dodałem marginesy wokół obrazków, żeby miały miejsce i nie spowodowały rozjeżdżania się tego tabelo-podobnego układu

linki do kolejnych stron zapiszesz np. 2 dzięki czemu w pliku adres.php będzie można odczytać tą wartość z $_GET['page] (warto jeszcze upewnić się czy jest to liczba całkowita np. poprzez intval() i ew. czy należy do zakresu stron)

ta liczba może wpływać na wartości atrybutów pętli for, żeby na każdej stronie pojawiły się właściwe obrazki