Autor Zpráva
johnl
Profil
Dobrý den, chtěl bych si na svém novém webu vytvořit malou fotogalerii kde by se jako náhled vždy ukázal náhodný obrázek. Už jsem tady o tom něco četl ale vůbec jsem to nepochopil (ani mi to nešlo) mám několik (asi 20) obrázků s různejma názvama a chci aby se vždy jeden náhodně zobrazil? Děkuji za radu.
gogy27
Profil
$obrazok = rand (1, 20);
a tu vyberes z db (alebo nwm kde to mas ulozene) obrazok s WHERE = $obrazok ;)
keeehi
Profil
nebo javascript
foto = new Array(
"<img src='img/01.jpg'>",
"<img src='img/02.jpg'>",
"<img src='img/03.jpg'>",
"<img src='img/04.jpg'>");
i = Math. floor(Math. random()*foto. length);
document. write(foto1[i]);
Jiří Bednář
Profil
Pokud tedy umis php (je to jedno), tak zde mas kod:

<?
$obrazek = rand (1, 20); 
?>
<img src="<?echo $obrazek;?>.jpg">


Budes muset vsechny sve obrazky prejmenovat prejmenovat a dat jim cislo od 1 do 20 a ve stejném formátu (jpg, bmp, gif)
Jiří Bednář
Profil
Nebo trochu jinak, ale zachovas si nazvy obrazku:

<?
$cislo = rand (1, 20); 
$img['1'] = "nazev_obrazku1.jpg";
$img['2'] = "nazev_obrazku2.jpg";
$img['3'] = "nazev_obrazku3.jpg";
$img['4'] = "nazev_obrazku4.jpg";
$img['5'] = "nazev_obrazku5.jpg";
$img['6'] = "nazev_obrazku6.jpg";
$img['7'] = "nazev_obrazku7.jpg";
$img['8'] = "nazev_obrazku8.jpg";
$img['9'] = "nazev_obrazku9.jpg";
$img['10'] = "nazev_obrazku10.jpg";
$img['11'] = "nazev_obrazku11.jpg";
$img['12'] = "nazev_obrazku12.jpg";
$img['13'] = "nazev_obrazku13.jpg";
$img['14'] = "nazev_obrazku14.jpg";
$img['15'] = "nazev_obrazku15.jpg";
$img['16'] = "nazev_obrazku16.jpg";
$img['17'] = "nazev_obrazku17.jpg";
$img['18'] = "nazev_obrazku18.jpg";
$img['19'] = "nazev_obrazku19.jpg";
$img['20'] = "nazev_obrazku20.jpg";
?>
<img src="<?echo $img[$cislo];?>">


Misto nazev_obrazkuXX.jpg - das adresu obrazku
Pokud bys chtel pridat dalsi obrazek, tak pridas dalsi $img['XX'] = "nazev_obrazkuXX.jpg"; a jen zmenis cislo, nazv a cislo 20 v rand (1, 20); na jine.
Johnik
Profil
Já bych to dal takto:

<?php
echo "nazev_obrazku".rand(1,20).".jpg";
?>
valecekm
Profil
Zdravim vsechny. Sice je to jiz neaktualni tema diskuse, ale kdyby nekdo hledal neco aby se nemusel starat o rucni prejmenovavani obrazku v poli a prepisovani indexu a dalsi takove celkem otravne veci, tak tady pisu skript, kterej zkontroluje soubory ve slozce jestli jsou obrazky(podle pripony souboru) a nasledovne obrazky nacte do pole a vybere jeden nahodnej. Jsme zacatecnik, takze skusenejsi prosim omluvte me pripadne chyby a pripadne ty kriticke opravte :-). Podminka je ze se v nazvu obrazku nesmi vyskytovat znak tecky (.). Ale to jde pri uploadu souboru osetrit. Skript sem pisi hlavne pro ostatni, co se nechou otravovat s prepisovanim indexu v poli atd. A skusenejsi popripade omluvte chybky nebo je opravte. Jeste poznamka:Pokud budou ve slozce nejake jine ostatni soubory, ktere nebudou obrazky,tak se nic nedeje. Do pole se ulozi pouze obrazky a s ostatnima souborama se nic delat nebude. Pokud by chtel nekdo jen urcite typy obrazku a nebo uplne jine typy soubory,tak si staci upravit pole pripon. Fantazii se meze nekladou :-)...

<?php
$cesta="nejakaslozka/slozkaobrazky"; // cesta k souborum-obrazkum (slozka)
$slozka = dir($cesta); 
// pole podporovanych pripon obrazku
$pole_pripon=array('png','bmp','gif','jpg','jpeg','PNG','BMP','GIF','JPG','JPEG');
$pole_souboru = array(); // vytvori zatim prazdne pole pro soubory
while($soubor=$slozka->read()) /* precte soubory ve slozce */{
  if ($soubor=="." || $soubor=="..") continue; // vylouci stejny a nadrazeny adresar 
$soubor_n = explode(".",  $soubor); // rozdeli priponu a nazev souboru do pole
$pripona = $soubor_n[1]; // pripona souboru
	foreach($pole_pripon as $pripona_z) // prohledani pole pripon
	{
// kontrola souboru jestli je soubor obrazek (podle pripony), pokud ano pokracuj
if ($pripona==$pripona_z){$pole_souboru[] = $soubor; // ulozi nazvy souboru do predem vytvoreneho pole		
}}}  
$obrazek_vyber = array_rand(array_flip($pole_souboru),1); // vybere 1 nahodny obrazek z pole obrazku
$obrazek_nahod = $cesta."/".$obrazek_vyber; // vytvori kompletni cestu k obrazku
echo '<img src="'.$obrazek_nahod.'" border="0">'; // zobrazi nahodny obrazek
?>
valecekm
Profil
Update:
valecekm:
Zdravim vsechny. Sice je to jiz neaktualni tema diskuse,...
Omlouvám se všem, kteří někdy využili tohoto skriptu a nefungoval jim na freehostech, proto to napravuji:

Problém nastal na webzdarma a jiných fr.host. s:
<?php
// cast skriptu ....
$obrazek_vyber = array_rand(array_flip($pole_souboru),1); // vybere 1 nahodny obrazek z pole obrazku
$obrazek_nahod = $cesta."/".$obrazek_vyber; // vytvori kompletni cestu k obrazku
// cast skriptu ....
?>


Změnit na:
<?php
// cast skriptu ....
shuffle($pole_souboru); // zamichame pole
$obrazek_nahod = $cesta."/".$pole_souboru[0]; // vytvori kompletni cestu k obrazku
// cast skriptu ....
?>

Omlouvám se také za update, ale nerad bych, aby se na mne někdo potom díval škaredě, tak sem to raděj opravil :-).
Podotýkám, problém se většinou vyskytuje pouze na freehostech.
nekrox
Profil *
valecekm
díky, něco podobného jsem hledal a čekal jsem jestli někoho napadne, že ve složce může být třeba tisíc fotek a je tedy nesmysl je přejmenovávat, případně, že ty fotky jsou zároveň součásti nějaké str a je tedy nesmyslné je přejmenovávat (např. filmová databáze). Ještě jednou dík.
nekrox
Profil *
nekrox:

Našel jsem ještě něco jednoduššího.
<?php
$a = Array(); //pole, ktere bude obsahovat seznam nazvu fotek
$b = dir('fotky'); //otevre slozku
while ($c = $b->read()) //projde vsechny soubory a vybere jpg fotky
    if (substr_count($c, ".jpg") > 0) $a[] = $c;
echo '<img src="fotky/'.$a[rand(0, count($a)-1)].'">'; //vypise fotku
?>
Tydou
Profil *
ahoj, poradite mi jak napsat kod pro zobrazeni vetsi velikosti nahodneho obrazku? mam v okne dany tento kod ktery normalne funguje ale jeste bych chtel aby mi po kliknuti na nej zobrazilo jeho velky format

<img src="cesta k obrazku/obr<?php echo mt_rand(1,10); ?>.jpg" width="186" height="139" border="0"> </a>

diky
johnl7
Profil *
Tydou:
Myslíš:

<a href="cesta k obrazku/obr<?php echo mt_rand(1,10); ?>.jpg"><img src="cesta k obrazku/obr<?php echo mt_rand(1,10); ?>.jpg" width="186" height="139" border="0"></a>


Jenom nechápu toto
„<img src="cesta k obrazku/obr<?php echo mt_rand(1,10); ?>.jpg" width="186" height="139" border="0"></a>

Proč tam máš </a>?
vynalezce
Profil
johnl7:

ale to vypíše třeba:
<a href="cesta k obrazku/obr1.jpg"><img src="cesta k obrazku/obr5.jpg" width="186" height="139" border="0"></a>
keeehi
Profil
Takto by to mělo fungovat správně:
<?php $prom=mt_rand(1,10);?>
<a href="cesta k obrazku/obr<?php echo $prom; ?>.jpg"><img src="cesta k obrazku/obr<?php echo $prom; ?>.jpg" width="186" height="139" border="0"></a>
Tydou
Profil *
johnl7: to </a> sem tam nahral omylem, jinak jak pise vynalezce nahled bude jiny nez zobrazovany obrazek, to jsem uz taky tak mel

keeehi: zkusim, pak napisu :-)

diky za rady
Tydou
Profil *
keeehi: to je přesně co jsem potřeboval, díky

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: