Autor Zpráva
Johny_r
Profil *
Zdravím,
potřeboval bych poradit se skriptem, který by vzal daný počet náhodně vybraných obrázků z adresáře a v náhodném pořadí je zobrazil na stránce. Dopátral jsem se, že by to asi mělo jít nějak přes pole, ale moc do toho nevidím, takže ocením každou radu.
Díky moc.
Casero
Profil
Johny_r
no tak si načti ty obrázky z adrsáře do pole..a pak pomocí randomu vybírej, no avybereš třeba pět čísel, a pole s tím určitým číslem zobrazíš
Johny_r
Profil
Díky,
tak nějak jsem se to taky někde dočet. Moh bys mi nějak přiblížit jak na to? S PHP zatím moc neumím :-(

Dík moc.
Casero
Profil
Johny_r
zkus pohledat, bohužel nemám čas ti vysvětlovat celý php..nebo napsat ten skript...prostě základ je načtení obrázku bz adresáře..a pak fce rand vybrat nějaký čísla..a podle těch , musíš se podívat jan na pole, vybereš ty obrázky
johny_r
Profil *
Celý php mi vysvětlovat nemusíš, tak mimo zase nejsem :-) Díky, tohle mi pomohlo.
Johny_r
Profil
mimochodem, teď mne tak napadlo. Proč to dělat přes pole? stačí, když nechám v cyklu xkrát vypsat <img> tag a v názvu souboru bude pomocí funkce rand dosazovaný náhodný číslo. Soubory se budou jmenovat třeba img_1.jpg - img_99.jpg. To by mělo taky fungovat, ne? To pole pomůže v případě, kdy se ty obrázky jmenujou různě nebo když se mění jejich počet (to by se pak jako hormí limit do rand musel dát aktuální počet prvků v poli). Je to tak? Díky
tiso
Profil
Johny_r
Je.
pavel prochazka.zde.cz
Profil *
zpusobu je spousta.... Klidne muzes cislovat ty fotky jako obr1, obr2, obr3 atd....
Tak se budou jmenovat a ty si vygenerujes jen nahodne cislo pro nahodny pocet obrazku, prvni bude treba pocet obrazku a to zadas do cyklu, tolikrat se bude oper nahodny vyber provadet.... Opet budes generovat nahodna cisla a potom jen uz si sestavis nazev toho obrazku z toho cisla.... treba takto....

$sNazevObrazku = "obr". $nNahodneCislo ."jpg";

a mas to je to jednoduche a funkcni.... staci jen si pohlidat aby ten soubor existoval a nesmy bejt mazi cislama dira.... A ve scriptu staci udrzovat jen maximalni cislo tech obrazku.....
Johny_r
Profil
Tak jsem si zatím udělal testovací skript, který vypadá takhle. Řešení je to jednoduché a funkční:

<?
for ($i=1; $i<=3; $i++) {
$random = rand(1,5);
echo ('<img src="img/img_'.$random.'.jpg" /><br />');
}
?>

hází mi 3 náhodné obrázky z pěti. To je fajn, ale potřeboval bych to vylepšit o to, aby vybíral vždycky každý obrázek jiný. Takže aby v druhém cyklu vyloučil z výběru to, co vybral v prvním cyklu. Jde to nějak? Napadá mě akorát poněkud otrocké řešení (i když v mém případě použitelné), že si ty obrázky rozdělím do skupin (třeba 10 skupin po 3 obrázcích) a udělám si 10 proměnných, jejichž obsahem bude vždy funkce rand s různým rozsahem. Něco na způsob:
$random1 = rand(1,3);
$random2 = rand(4,6);
$random3 = rand(7,9);
a tak dále. A pak nebudu ty obrázky zobrazovat cyklem, ale vypíšu ručně 10 tagů img, kde v každém bude jako číslo obrázku jiná proměnná.
Mělo by to fungovat, ale asi to není optimální řešení :-)

Díky moc.
Kajman_
Profil *
http://cz2.php.net/manual/en/function.array-rand.php
Johny_r
Profil
Díky moc. Takže jsem skript předělal takhle (zatím tahám z pěti obrázků).

<?
$input = array("1", "2", "3", "4", "5");
$arrayrandom = array_rand($input, 3);

for ($i=0; $i<=2; $i++) {
$random = rand(1,5);
echo ('<img src="img/img_'.$input[$arrayrandom[$i]].'.jpg" /><br />');
}

?>

Lepší by ale asi bylo natáhnout do pole rovnou názvy souborů z adresáře a nemusel bych řešit, kolik jich tam je, jak se jmenujou atd. Ale nevím, jak na to. Můžete mě nasměrovat? Jakou funkci na to použít? Se souborama jsem zatím nepracoval, takže jsem mimo :)

Díky moc.
pavel prochazka.zde.cz
Profil *
zde mas navod na precteni nazvu souboru v rootu....

//cyklus ktery projde vsechny soubory v rootu.
if ($handle=opendir('.')) {
while ($file = readdir($handle)){
if (is_file($file)and is_readable($file) and file_exists($file)) {
$polozky[count($polozky)] = $file;
}
}
closedir($handle);
sort($polozky);
//V promene: $polozky je jmeny seznam souboru pro hledani...
}
Toto téma je uzamčeno. Odpověď nelze zaslat.

0