Forum Flash, Actionscript, PHP e MySQL
Chiamata multipla di query

 
Nuovo Topic   Rispondi    Forum Flash, Actionscript, PHP e MySQL » PHP
Precedente  Successivo 
Autore Messaggio
Eugene
principiante
principiante


Età: -1969
Registrato: 08/09/06 14:48
Messaggi: 60
Località: Dagobah

MessaggioOggetto: Chiamata multipla di query
Inviato: 14.12.09 | 22:46
Rispondi citando

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
Profilo Messaggio privato   HomePage MSN Messenger Skype
Sponsor
Eugene
principiante
principiante


Età: -1969
Registrato: 08/09/06 14:48
Messaggi: 60
Località: Dagobah

MessaggioOggetto:
Inviato: 15.12.09 | 13:12
Rispondi citando

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
Profilo Messaggio privato   HomePage MSN Messenger Skype
Coach
amministratore
amministratore


Età: -1981
Registrato: 31/01/03 13:50
Messaggi: 4546
Località: Verona

MessaggioOggetto:
Inviato: 15.12.09 | 13:18
Rispondi citando

Ciao Eugene Mr. Green

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
Profilo Messaggio privato [ Nascosto ] HomePage Yahoo Messenger MSN Messenger Skype
Coach
amministratore
amministratore


Età: -1981
Registrato: 31/01/03 13:50
Messaggi: 4546
Località: Verona

MessaggioOggetto:
Inviato: 15.12.09 | 13:18
Rispondi citando

Azz, hai risposto mentre ti rispondevo fagiano
____________________________________________________________


Il Forum è uno strumento di condivisione, oltre a fare DOMANDE, si possono anche dare RISPOSTE!
Torna in cima
Profilo Messaggio privato [ Nascosto ] HomePage Yahoo Messenger MSN Messenger Skype
Eugene
principiante
principiante


Età: -1969
Registrato: 08/09/06 14:48
Messaggi: 60
Località: Dagobah

MessaggioOggetto:
Inviato: 15.12.09 | 13:40
Rispondi citando

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
Profilo Messaggio privato   HomePage MSN Messenger Skype
Mostra prima i messaggi di:   
Nuovo Topic   Rispondi    Forum Flash, Actionscript, PHP e MySQL » PHP Tutti i fusi orari sono GMT + 2 ore
Pagina 1 di 1

Discussioni Simili
Topic Autore Forum Risposte Ultimo Messaggio
Nessun nuovo messaggio lightbox chiamata da flash webdj Flash Generale 10 17.07.09 | 19:36 Leggi gli ultimi messaggi
mesk8
Nessun nuovo messaggio Query SQL fedyfausto PHP 11 25.02.09 | 14:08 Leggi gli ultimi messaggi
rocco.mod
Nessun nuovo messaggio query e variabili mai PHP 6 20.01.04 | 15:16 Leggi gli ultimi messaggi
dioz
Nessun nuovo messaggio problemi di query p4r4n0|c ActionScript & Server Side 6 15.03.05 | 21:04 Leggi gli ultimi messaggi
Coach
Nessun nuovo messaggio Usare variabili in una query SQL fedyfausto PHP 1 03.03.09 | 16:55 Leggi gli ultimi messaggi
Coach



 
Vai a:  
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



Powered by phpBB © 2001, 2002 phpBB Group - phpBB SEO Designed by coachdesign - © 2003-2005