Random Images

 Salve io ho necessità creare uno script che abbia come effetto quello di Randomizzare l'immagine e il testo ma per far questo mi interfaccio senza cambiare l'immagine ad ogni F5 del Browser, con mysql con uno script in php mi leggo le info necessarie ovvero immagine e titolo; la mia domanda è questa non essendo molto esperto di PHP c'è qualcuno che mi può servire ed aiutare a a realizzare questo effetto? :bye:

inviato 11 anni fa
EKELON77
X 0 X

Riporta la query che invii a MySQL per ottenere l'immagine ed il titolo

 :bye:

risposto 11 anni fa
Gianni Tomasicchio
X 0 X

Questo è l'intera pagina con dentro il codice per eseguire la query:

<? include "condb.php";

$selnew =  "select * from novita where idnew <> '0'  and newhome = 'si' order by titolo";

$querynew = mysql_query ($selnew,$connessione)

                or die ("<span class='red'>Non riesco ad eseguire la richiesta, torna indietro</span>");

?>

<html>

<head>

<meta name="keywords" content="videoteca, dvd, vhs, film, video, videoteca, home, hometheatre, videocassette, cooming soon, anteprima, programmazione, Cave, Via Pio XII,">

<meta name="description" content="Videoteca Fiorella, noleggio e acquisto di dvd e videocassette Cave">

<meta name="author" content="sito realizzato da SalvioniA Cave - www.asalvioni.net">

<title>Sito Videoteca</title>

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

</head>

<link href="style_AS.css" rel="stylesheet" type="text/css">

<body>

<table align="center" border="0">

   <tr>

      <td align="center" class="newstitle">Novità</td>

   </tr>

</table>

<?

  $valnew = mysql_fetch_array ($querynew);

   $idnew = $valnew ["idnew"];

   $titolo  = $valnew ["titolo"];

   $genere  = $valnew ["genere"];

   $foto    = $valnew ["foto"];

?>

<div align="center">

   <table border="0">

   <tr>

      <? if ($foto) { ?>

      <td width="145" valign="top">

         <a href="#" onclick="SelezScheda=window.open('scheda_mixed.php?selezscheda=<? echo $idnew ?>','SelezScheda','toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=no,width=720,height=600'); return false;"><img border="0" src="./areariservata/<? echo $foto ?>" alt="<? echo $titolo ?>"></a>

      </td>

   </tr>

   <tr>

      <td align="center" class="new"><? echo $titolo ?></td>

   </tr>

      <? } ?>

   </table>

</div>

<?

mysql_close ($connessione);

?>

</body>

</html>

Spero che ti sia tutto chiaro.

risposto 11 anni fa
EKELON77
X 0 X

Nello script che hai riportato è presente solo una query:

select * from novita where idnew <> '0'  and newhome = 'si' order by titolo

questa query restituisce tutti i films (?) che hanno il parametro newhome = 'si' e le ordina alfabeticamente per titolo

Lo script però prende solo il primo di questi film, lo si capisce dal fatto che l'istruzione "mysql_fetch_array", responsabile dell'estrazione dei film, viene eseguita solo una volta. Quindi il film che viene mostrato è quello che ha il primo titolo nell'ordine alfabetico.

Se vuoi mostrare un film a caso puoi sostituire la queri con questa

select * from novita where idnew <> '0' and newhome = 'si' ORDER BY RAND() LIMIT 1

 :bye:

P.S.: ho pensato che si tratti di film dal meta keywords

risposto 11 anni fa
Gianni Tomasicchio
X 0 X

It's OK O0, e io che mi scervellao attraverso  i forum che mi dicevano di realizzare un contatore e salvarmi il path delle immagini in un array o stringa per far girare la ruota.

Scusa l'ignoranza o forse anche l'ora la funzione RAND() so che cosa fa, ma la LIMIT e poi il parametro 1 a che a significare? :angel:

Cmq. Grazie mi hai risolto un bel problema in modo pulito sei davvero un GENIO.

risposto 11 anni fa
EKELON77
modificato 11 anni fa
X 0 X

grazie per i complimenti, troppo buono... :coolsmiley:

Poiché sei interessato ad avere un unico film non ha senso effettuare una query che te li restituisca tutti. La clausola LIMIT 1 significa "dammi solo un risultato"

 :bye:

risposto 11 anni fa
Gianni Tomasicchio
X 0 X

E' vero che funziona ma spesso carica duo volte la stessa immagine che dovrebbe corrispondere al primo record attivato dal back-office, se invece metto LIMIT a 2 con mysql_fetch_array(); accade che la medesima immagine viene ripètuta 2 volte credo.  ;)

risposto 11 anni fa
EKELON77
modificato 11 anni fa
X 0 X

immabine casuale non significa sempre diversa  :P

risposto 11 anni fa
Gianni Tomasicchio
X 0 X

Ok, questo è corretto, ma è anche vero che se metto a LIMIT con valore "n" mi ripeta/carica "n" volte l'immagine? :angel:

risposto 11 anni fa
EKELON77
X 0 X

no, "LIMIT n" fa si che ti vengano restituiti solo n risultati ad ogni visualizzazione ma comunque tu ne mostri uno solo. Quindi LIMIT 1 nel tuo caso evita uno spreco di memoria, rende lo script più efficiente, niente più.

 :bye:

risposto 11 anni fa
Gianni Tomasicchio
X 0 X

Quindi se utilizzo un ciclo while con mysql_fetch_array() dove sono inseriti 6 record a LIMIT devo impostare 6 per vederli cambiare tutti, oppure se metto 1 cambiano ugualmente?

L'IGNORANZA NON HA MAI FINE :lamo:

risposto 11 anni fa
EKELON77
X 0 X

Se usi un ciclo while darai la possibilità alla funzione mysql_fetch_array di estrarre tutti i risultati che la query ha prodotto. Ovviamente il numero di risultati restituiti sarà vincolato dalla clausola LIMIT.

Quindi se non usi un ciclo comunque un unico risultato vedrai, altrimenti se usi il ciclo vedrai tutti i risultati restituiti dalla query, che potranno essere limitati dalla clausola LIMIT.

 :bye:

risposto 11 anni fa
Gianni Tomasicchio
X 0 X

Dovrei non mettere la LIMIT o rendere la LIMIT dinamica tramite una funzione o script che conta i record.

Comunque Grazie della tua dispodibilità :) :bye:

risposto 11 anni fa
EKELON77
modificato 11 anni fa
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda