Autor Zpráva
Borsa
Profil *
Ahoj, začínám se učit v PHP a teď mě napadlo udělat si věc, aby se mi všechny fotky z adresáře hodili na stránku. To sem vyřešil tak, že jsem si vypsal obsah adresáře a hodil to do cyklu, který vypisuje "<img src=$fotka> dokud to neprojede všechny soubory z adresáře. No je to dobre řešení? Nebo se to dělá nějak jinak, elegantněji :o) Zajímalo by mě, jak bych tam ještě napsal podmínku, že jestli název, toho souboru bude obsahovat .jpg, .gif .... tak aby se to provedlo, tak bych ošetřil, že tam budou opravdu jen fotky.. Ale nevim jak dát do podmínky jen část toho řetězce (formát souboru)

No a poslední dotaz, jak mám pak udělat, když bych měl v adresáři třeba 20 fotek, ale chtěl bych je mít vždy jen po třech, klikl bych na odkaz další a tam by byly další 3 fotky? Jestli je ten muj nápad jak to dělat úplná blbost co nikam nevede, tak mě pls nasměrujte na správnou cestu :)

Děkuju všem za ochotu mi pomoci !
kvoky
Profil *
1) ted sem psal možnou alternativu sem: http://diskuse.jakpsatweb.cz/index.php?action=vthread&forum=9&topic=44 369
Borsa
Profil *
Díky, zkusím se s tím nějak poprat ... A nějaka rada k tomu, aby se mi na stránce nezobrazily všechny fotky, ale jen třeba 3, na další zase další 3 atd ? :)
Peter p360t Kováč
Profil
no na zistenie, či ide o obrázok sa dá použiť viac funkcií. napr. funkcia pathinfo("../adresa/obrazku.jpg"); ti povie, že koncovka je JPG, súbor sa volá "obrazku" a adresár "../adresa/" atď. pre dokonalé pochopenie treba pozrieť http://www.php.net/manual/en/function.pathinfo.php .

lepším riešením je funkcia getimagesize("../adresa/obrazku.jpg"); tá totiž načíta súbor a overí, či to je skutočne obrázok (tj. súbor, ktorý by bol v skutočnosti txt a niekto by ho nazval nieco.jpg by neprešiel). spolu s typom obrázku vracia aj jeho rozmery. podrobnosti opäť tu: http://www.php.net/manual/en/function.getimagesize.php , treba GD knižnicu

z môjho pohľadu najlepším riešením je funkcia exif_imagetype("../adresa/obrazku.jpg");, ktorá robí v podstate to isté ako predchádzajúca, ale je ešte o čosi rýchlejšia. ale pozor, treba mať nainštalovanú EXIF knižnicu! http://www.php.net/manual/en/function.exif-imagetype.php

no, toto by sme mali, teraz k tomu stránkovaniu (tj. z 20 obrázkov zobraziť len 3 a pod.):
princíp je takýto: treba spočítať počet všetkých obrázkov a potom podľa toho, koľko sa má vypísať na 1 stránku ich aj zobraziť.

<?php
define('POCET_OBR_NA_1_STR', '3'); // definujeme si, kolko obrazkov bude na 1 stranke
// overime, na ktorej strane sa nachadzame
if(!isset($_GET['strana']) || !ereg("[0-9]+", $_GET['strana'])){
$n_strana="0";
$n_page="1";
} else {
$n_strana=($_GET['strana']-"1") * POCET_OBR_NA_1_STR;
$n_page=$_GET['strana'];
}
/*
...
SEM SI PRIDAJ NEJAKY KOD, KTORYM ZRATAS VSETKY OBRAZKY. TEN UZ ASI MAS.
POTOM POCET TYCH OBRAZKOV NACITAJ DO PREMENNEJ "$count"
...
*/
$count_obr="20"; // toto je len priklad, dopln si tam pocet tych obrazkov z nejakej premennej

// naplnime vsetky potrebne cisla
$counter['1']=$n_page * POCET_OBR_NA_1_STR - POCET_OBR_NA_1_STR + "1"; // zaciatok zobrazenych obrazkov
$counter['2']=$n_page * POCET_OBR_NA_1_STR; // koniec zobrazenych obrazkov
$counter['3']=$count_obr; // celkovy pocet obrazkov
if ($counter['2'] > $counter['3']){
$counter['2']=$counter['3'];
}
// spravime si strankovanie pre obrazky
$counter['next']=ceil($counter['3']/POCET_OBR_NA_1_STR);
for ($i = 1; $i <= $counter['next']; $i++) {
$prem=POCET_OBR_NA_1_STR*$i;
if ($prem > $counter['3']){
$prem=$counter['3'];
}
$strankovanie[$i]=(POCET_OBR_NA_1_STR*($i - 1) + 1)."-".$prem;
}
/*
...
...
OPAT NEJAKA TVOJA CAST - TU SI NACITAJ (len nacitaj do premennej) TIE TRI OBRAZKY,
KTORE CHCES ZOBRAZIT, PREDPOKLADAM ZE TEN KOD UZ MAS...

NACITAJ ICH NAZVY DO POLA $obrazky[]
napr. $obrazky['0'], $obrazky['1'], $obrazky['2'] atd.
...
...
*/
// VYSTUP - opisem, co ktora cast znaci
/*
SEM DAJ NEJAKU TU HLAVICKU STRANKY (HTML) ATD.
*/
// teraz outputneme nadpis: bude tam nieco ako "OBRAZKY 1-3 z 20"
echo "<h1>OBRAZKY {$counter['1']}-{$counter['2']} z {$counter['3']}</h1>";

if (count($strankovanie > 1)) { // ak je teda stranok s obrazkami viac, zobraz odkazy na ostatne
if ($n_page) != '1' {
echo "<a href="nejaka-stranka.html?strana=".($n_page-"1")."">&lt;&lt; Predchádzajúce</a>";
}
foreach ($strankovanie as $key=>$value) {
echo "<a href="nejaka-stranka.html?strana=$key">$value</a>";
}
if ($n_page != $counter['next']) {
echo "<a href="nejaka-stranka.html?strana=".($n_page+"1")."">Nasledujúce &gt; &gt;</a>";
}
}
foreach ($obrazky as $key=>$value) {
echo "<img src="".$value."" alt="obrazok">";
}
/*
SEM DAJ NEJAKU PATICKU STRANKY
*/
?>

Malo by to fungovať...
Toto téma je uzamčeno. Odpověď nelze zaslat.

0