|
Forum Flash, Actionscript, PHP e MySQL
|
|
|
|
|
|
| Autore |
Messaggio |
Eugene
principiante


Età: -1969
Registrato: 08/09/06 14:48
Messaggi: 60
Località: Dagobah
|
Oggetto: Chiamata multipla di query
Inviato: 14.12.09 | 22:46 |
|
|
Buonasera.
Questo il mio problema.
Ho una tabella nella quale ogni record contiene dati relativi ad un CD musicale (titolo, autore, ecc.). Tra questi è presente anche il valore booleano "attivo".
Tramite apposito codice vengono contati i record presenti nella tabella e viene scelto un numero casuale (random_call).
Dal momento che il record selezionato potrebbe essere non attivo (ovvero attivo==FALSE) faccio una verifica (random_cd_check).
Nel caso in cui l'esito sia positivo, si procede con l'esecuzione del codice, diversamente viene ripetuta la procedura dall'inizio.
Questo il codice:
| Codice: | <?PHP
function random_call($db){
$query_random_cd = "SELECT * FROM compactdisc";
$ris_random_cd = mysql_query($query_random_cd,$db) or die("Errore nella query cd random: ".mysql_error());
$number=mysql_num_rows($ris_random_cd);
$rand_number = mt_rand (1,$number);
$numerello = random_cd_check($rand_number,$db);
echo "numero fortunello funzione random ".$numerello."\n";
return $numerello;
}
//
function random_cd_check($rand_number,$db){
$query_check_random_cd = "SELECT * FROM compactdisc WHERE compactdisc.id='$rand_number' AND compactdisc.attivo=TRUE";
$ris_check_random_cd = mysql_query($query_check_random_cd,$db) or die("Errore nella query check cd random: ".mysql_error());
$check_random_cd_total=mysql_num_rows($ris_check_random_cd);
if ($check_random_cd_total>=1){
echo "cd attivo!\n";
echo "numero fortunello funzione check ".$rand_number."\n";
return $rand_number;
}else{
echo "cd non attivo!\n";
random_call($db);
}
}
//
$numerello = random_call($db);
echo "numero fortunello ".$numerello."\n";
?> |
Dopo una serie di modifiche e tentativi, ho dedotto che il problema risieda in queste righe:
| Codice: | <?PHP
$numerello = random_cd_check($rand_number,$db);
echo "numero fortunello funzione random ".$numerello."\n";
return $numerello;
?> |
Questo echo, infatti, non visualizza solo $numerello ricevuto dalla chiamata della funzione random_cd_check (quindi quello corrispondente al record attivo) bensì viene ripetuto per ogni query effettuata, anche quelle che hanno avuto esito negativo.
Se prima del record attivo ne sono stati selezionati casualmente 12 non attivi, il comando echo verrà ripetuto 12 volte anche se solo la prima visualizzazione avrà un valore (ovvero quello ricevuto dalla funzione random_cd_check) poichè gli echo vengono visualizzati in ordine inverso.
Proprio per questo return $numerello non restituisce assolutamente nulla poichè darà l'esito della prima query (il cui esito, nei test che sto effettuando, è quasi sempre negativo poichè tra i record presenti solo uno è attivo, proprio per verificare l'efficienza del codice).
Mi rendo conto di non aver esposto la faccenda nel più chiaro dei modi, mi auguro tuttavia qualcuno riesca a capirci qualcosa e sia in grado di darmi una mano.
Grazie e buona serata. ____________________________________________________________ <-- Fare. O non fare. Non c'è provare. -->
www.yodastudio.com
segui YODA Studio su facebook
Ultima modifica di Eugene il 15.12.09 | 13:37, modificato 1 volta in totale |
|
| Torna in cima |
|
|
Sponsor
|
|
 |
Eugene
principiante


Età: -1969
Registrato: 08/09/06 14:48
Messaggi: 60
Località: Dagobah
|
Oggetto:
Inviato: 15.12.09 | 13:12 |
|
|
Tutto risolto.
Con il codice:
| Codice: | <?PHP
function random_call($db){
$query_random_cd = "SELECT * FROM compactdisc WHERE compactdisc.attivo=TRUE ORDER BY rand()";
$ris_random_cd = mysql_query($query_random_cd,$db) or die("Errore nella query cd random: ".mysql_error());
$number = mysql_fetch_array($ris_random_cd);
echo "La casualità ha prodotto il seguente risultato: ".$number['id'];
$selected_number = $number['id'];
return $selected_number;
}
?> |
seleziono casualmente un record tra quelli attivi, dopodichè ne estraggo l'ID, che è il valore che a me serve. In questo modo funziona anche in caso di ID non consecutivi, meglio di quanto sperassi.
Buona giornata. ____________________________________________________________ <-- Fare. O non fare. Non c'è provare. -->
www.yodastudio.com
segui YODA Studio su facebook
Ultima modifica di Eugene il 15.12.09 | 13:38, modificato 1 volta in totale |
|
| Torna in cima |
|
|
Coach
amministratore


Età: -1981
Registrato: 31/01/03 13:50
Messaggi: 4546
Località: Verona
|
Oggetto:
Inviato: 15.12.09 | 13:18 |
|
|
Ciao Eugene
In poche parole, vuoi prendere un CD random, ma solo tra quelli attivi giusto?
Non è che potresti allegare l'SQL della tabella? Credo ti basti una semplice query :)
P.S: se le porzioni di codice le inserisci tra tag PHP, il codice si colora :) ____________________________________________________________
Il Forum è uno strumento di condivisione, oltre a fare DOMANDE, si possono anche dare RISPOSTE! |
|
| Torna in cima |
|
|
Coach
amministratore


Età: -1981
Registrato: 31/01/03 13:50
Messaggi: 4546
Località: Verona
|
Oggetto:
Inviato: 15.12.09 | 13:18 |
|
|
Azz, hai risposto mentre ti rispondevo  ____________________________________________________________
Il Forum è uno strumento di condivisione, oltre a fare DOMANDE, si possono anche dare RISPOSTE! |
|
| Torna in cima |
|
|
Eugene
principiante


Età: -1969
Registrato: 08/09/06 14:48
Messaggi: 60
Località: Dagobah
|
Oggetto:
Inviato: 15.12.09 | 13:40 |
|
|
Nessun problema, adesso so come colorare il codice PHP!
Comunque il tuo consiglio era corretto.
Grazie e buona giornata. ____________________________________________________________ <-- Fare. O non fare. Non c'è provare. -->
www.yodastudio.com
segui YODA Studio su facebook |
|
| Torna in cima |
|
|
|
|
Non puoi inserire nuovi Topic in questo forum Non puoi rispondere ai Topic in questo forum Non puoi modificare i tuoi messaggi in questo forum Non puoi cancellare i tuoi messaggi in questo forum Non puoi votare nei sondaggi in questo forum Non puoi allegare files in questo forum Non puoi downloadare gli allegati in questo forum
|
|