Newsgroup: it.comp.www.php
Titolo: Immagini casuali che compaiono piu' volte

Un saluto a tutto il NG, sono un principiante alle prese con i primi
semplici comandi in PHP.
Vorrei che in una pagina comparissero *piu'* immagini in modo casuale.
Supponendo che io abbia cento immagini che si chiamano da 0.gif a
100.gif. e dovessi farne comparire una sola, userei una cosa tipo:
<img src="<? srand((double)microtime()*1000000); echo rand(0,100);
?>.gif">
Il problema nel mio caso e' che nella stessa pagina devono comparire
almeno una ventina di immagini casualmente, e ripetendo lo stesso
codice piu' volte PHP mi stampa numeri (immagini) in successione (es.
41 - 42 - 43)... inoltre vorrei far si' che la stessa immagine non
compaia piu' di una volta.
Non si tratta di banner, sono delle piccole giffette decorative.
Grazie in anticipo.
Ghizza.
--
::. 
ghizz...@ghizza.com
::. coming soon -> 
www.ghizza.com

100.gif. e dovessi farne comparire una sola, userei una cosa tipo:
Un sistema pratico potrebbe essere quello di scegliere un numero che non
abbia divisori comuni con il numero di immagini, per esempio che so, 37,
che e' anche primo.
A quel punto, parti con $n = random, e le altre K immagini le estrai con
	$K = ($K+37)%$N;
e ottieni una sequenza sempre diversa, anche se le sequenze possibili al
massimo sono cento :-)
Altrimenti:
	$gifs = range(0, 100);	// Oppure con readdir... :-)
	srand ((float)microtime()*1000000);
	shuffle ($gifs);
	for ($i=0; $i < $K; $i++)
	{
		$n = array_pop($gifs);
		print "gif$n.gif\n";
	}
Leonardo
-- 
Time's angles, mages tell, conceal a place
incredible, beyond the mundane mind;
night-shrouded and between the seas of space
dread creatures drift in the ageless winds.

 Grazie in anticipo.
$a=range(0,100);
shuffle($a);
for ($i=0; $i < 20; $i++)
    echo "<IMG src=$a[$i].gif>\n";
http://it.php.net/range
http://it.php.net/shuffle

	$K = ($K+37)%$N;
Ho fatto cosi', e perlomeno non mi da' 2 numeri uguali.
In compenso mi restituisce sempre quegli stessi 5 o 6 valori (37, 1,
ecc.)
<?
srand((double)microtime()*1000000);
$n = rand(1,100);
$k = ($k+37)%$n;
echo $k;
?>
<?
srand((double)microtime()*1000000);
$n = rand(1,100);
$k = ($k+37)%$n;
echo $k;
?>
Forse provando con una formula un po' piu' complessa?
Eppure deve esserci un modo per definire $k in modo che ogni volta che
la chiamo nella stessa pagina mi dia un numero diverso, avendo
definito prima come va calcolato 'sto numero.
<html>
<img src="<? $k ?>.gif">
bla bla bla... la marianna la va in campagna
<img src="<? $k ?>.gif">
</html>
Ma mi sa che sto dicendo una vaccata... $k e' sempre una variabile...
Aspetto altri preziosi consigli.


>
http://it.php.net/shuffle
Ti ringrazio, ma lo script cosi' mi restituisce numeri *consecutivi*,
uno dietro l'altro, e invece io devo spargere qua' e la' le mie
immagini casuali per la pagina.
Seguendo i tuoi consigli ho visto che nella pagina dedicata a shuffle
su 
it.php.net
 c'e' una cosa tipo:
<?
$numeri = range (1,20);
srand ((float)microtime()*1000000);
shuffle ($numeri);
while (list (, $numero) = each ($numeri)) {
    echo "$numero ";
}
?>
Ciao!


ecc.)
No, aspetta, devi fare un unico srand() e un unico $n:
<?
	// Questo pezzo all'inizio del file
	srand((double)microtime()*1000000);
	$n = rand(1,100);
?>
E questo sotto ogni volta che ti serve un $k:
<? $k = ($k+37)%$n; echo $k; ?>


 su 
it.php.net
 c'e' una cosa tipo:
e' la stessa cosa!