Newsgroup: it.comp.www.php
Titolo: Script random che funziona una sola volta (per browser)

Uso uno script per prelevare immagini a caso da un db.
Funziona, ma una sola volta per browser. Firefox carica delle immagini (e
poi sempre quelle) IE ne carica delle altre (e sempre quelle).
Se provo ad aprire una nuova finestra del browser e carico quella pagina,
mi usciranno le stesse pic.
Firefox e Netscape 7 mostrano le stesse pic.
IE6 e Opera 6 mostrano pic differenti.
Sembra che vengano memorizzate da qualche parte... 
Comportamento anomalo.
ecco lo script:
$query = "SELECT id  FROM mf_album WHERE immagine != '' AND immagine !=
'no_label.gif' ORDER BY id DESC Limit 0,40";
$exec = mysql_query ($query, $link);
	$risultati = array();
	while ($risultato = mysql_fetch_row($exec)) {
		$risultati[] = $risultato;       
	}
	mysql_free_result($exec);
	shuffle($risultati);
 
for ($i = 0; $i < 4; $i++ ) {
	list($id) = $risultati[$i];
	$query = "SELECT artista, titolo, immagine  FROM mf_album WHERE id =
{$id}";
	$exec = mysql_query ($query, $link);
  	list($artista, $titolo, $immagine) = mysql_fetch_row($exec);
 	echo "<a href='pagina.php?name=visualizza&id=$id' title='$artista -
$titolo'><img src='immagini/thumb_$immagine' alt='$artista -
$titolo'/></a>\n";
 
}
?>
- chiamo gli id delle row che hanno le immagini, ordinate per id Desc e
prendo i primi 40 risultati.
- Creo un array $risultati nel quale inserisco l'array dei risultati della
query (mi sembra inutile, inizialmente la query prevedeva altri campi oltre
l'id, poi lo modificherò).
- mischio l'ordine dell'array ottenuto
- uso un ciclo for per stampare i primi 4 array dell'array $risultati.
- per ogni $id faccio una seconda query prelevando i dati che mi servono
per stampare le pic.
Ho printato $risultati prima e dopo shuffle per verificarne il contenuto e
mi sembra tutto a posto.
Non capisco proprio cosa possa essere successo...
Arjuna
-- 
Gnotis se auton.
 21/04/2004 0.26.28

 Uso uno script per prelevare immagini a caso da un db.
Perche' non utilizzi semplicemente ORDER BY REVERSE(RAND()) LIMIT 0,4 ?
-- 
I am what I am, I do what I can
Sei un newbie? Leggi questo 
http://url.repository.biz/go/3C
Vuoi supportarmi? 
http://url.repository.biz/go/3E
L'uomo, conscio di sbagliare, persevera.

 Perche' non utilizzi semplicemente ORDER BY REVERSE(RAND()) LIMIT 0,4 ?
Perchè mi servono solo gli ultimi 40 inserimenti nel db, non tutto...
-- 
Homo sum, humani nihil a me alienum puto.
 21/04/2004 10.27.26

Suggerimenti?
-- 
Gnotis se auton.
 21/04/2004 19.51.31

poi sempre quelle) IE ne carica delle altre (e sempre quelle).
Fatti stampare ore, minuti e secondi, e l'elenco dei file. Non e' che per
caso ricarichi sempre la stessa pagina?
Altra possibilita': che PHP hai? Se < 4.2.0, e' normale che succeda, dato
che non randomizza ogni volta lo shuffle() ma si basa su una sequenza che
(CREDO) dipende da IP, user-agent e altra roba - e nel tuo caso e' sempre
uguale.
Con PHP < 4.2.0 devi usare prima srand().
Leonardo
-- 
Avere studiato senza mettere in pratica e' inutile;
mettere in pratica senza avere studiato e' pericoloso.
                                                - Conphpucio

 caso ricarichi sempre la stessa pagina?
Cosa intendi con stampare? Cosa intendi con carico sempre la stessa pagina?
Arjuna
-- 
Homo sum, humani nihil a me alienum puto.
 22/04/2004 12.14.36

Cosa intendi con carico sempre la stessa pagina?
Che la prima volta il server ti manda una pagina, la seconda volta ti fa
vedere una cache senza chiedere niente al server.


 vedere una cache senza chiedere niente al server.
giustooo, ora provo e verifico...
-- 
Homo sum, humani nihil a me alienum puto.
 23/04/2004 1.20.24

 print date('d-m-Y H:i:s');
no no, non ci siamo... nonono...
controlla se vuoi... strano, veramente strano...
www.mrfantasy.it
-- 
Homo sum, humani nihil a me alienum puto.
 23/04/2004 1.26.38


:Provate a guardare gli ingredienti del famoso Labello che si usa per
:le labbra screpolate: Butirrospermum Parkii (sperma di maiale).