• User Attivo

    Mostrare a video gli utenti piu' votati

    Salve a voi,
    mi sto scervellando su come poter fare per mostrare nella index del sito gli utenti piu' votati...
    Parto con la situazione script tabelle...
    Per i voti ho una tabella chiamata "voti" con 4 campi
    "id" di tipo INT auto_increment con chiave primaria
    "nick_votoinviante" in cui mi salvo il nickname di chi invia il voto
    "nick_votoricevente"in cui mi salvo il nickname di chi riceve il voto
    "votoricevuto"in cui mi salvo il valore del voto ricevuto

    Ho creato poi un abbozza di pagina prova per poter quantomeno cominciare a vedere qualche risultato anche aimè non proprio soddisfacente...
    [php]
    <?
    //Apro la sessione e...
    session_start();

    //mi connetto al datase
    $link = mysql_connect("$db_host", "$db_database", "$db_username", "$db_password") or die("Errore connessione: ". mysql_error());
    //seleziono il database
    mysql_select_db('my_italiawebchat') or die("Errore apertura database: " . mysql_error());
    //seleziono i campi da visualizzare per singolo utente
    $strsql="SELECT id,nick_votoricevente,votoricevuto FROM voti ";

    $rs=@mysql_query("$strsql",$link) or die("Errore query database: " . mysql_error());
    //faccio un ciclo while
    while ($riga = mysql_fetch_array($rs)) {

    $str_nickvotoricevente = $riga['nick_votoricevente'];
    $str_votoricevuto = $riga['votoricevuto'];

    $voti = mysql_numrows($rs);

    echo"
    $str_nickvotoricevente - voti- $voti";

    }//qui chiudi il while

    ?>
    [/php]A video mi stampa il tutto cosi'

    carlitos voti:6
    morgana voti:6
    carlo voti:6
    moragana voti:6
    carlitos voti:6
    morgana voti:6
    😢
    Non ho capito se modificare la tabella..forse non va bene per come è impostata per ciò che voglio fare io...forse sto sbagliando tutto..!io vorrei che mi visualizzasse per esempio

    carlitos voti:5
    moragana voti:7
    carlo voti:9
    ect..
    quantomeno riuscire a fare ciò per poi proseguire col mostrare magari solo gli utenti che hanno ricevuti piu' di 50 voti....
    Vi chiedo lumi sono ore ed ore che penso su come fare ma nulla..intanto il gallo canta:D


  • User Attivo

    Ciao, per prima cosa mysql_numrows ti mostra il numero dei record della tua query ed è per questo che hai sempre 6 come risultato. Per fare quello che tu chiedi devi cambiare la query, non ricordo bene la sintassi ma dovrebbe essere così:

    
    SELECT id,nick_votoricevente,SUM(votoricevuto) 'somma_voti' FROM voti GROUP BY nick_votoricevente
    
    

    e dentro il while aggiungi questa riga:

    
    $str_somma_voti = $riga['somma_voti'];
    
    

  • User Attivo

    Ciao;)
    Grazie mille ci siamo quasi!!
    C'è solo un piccolo problemino[PHP]

    <?
    //Apro la sessione e...
    session_start();

    //mi connetto al datase
    $link = mysql_connect("$db_host", "$db_database", "$db_username", "$db_password") or die("Errore connessione: ". mysql_error());
    //seleziono il database
    mysql_select_db('my_italiawebchat') or die("Errore apertura database: " . mysql_error());
    //seleziono i campi da visualizzare per singolo utente
    $strsql="SELECT id,nick_votoricevente,SUM(votoricevuto) 'somma_voti' FROM voti GROUP BY nick_votoricevente";

    $rs=@mysql_query("$strsql",$link) or die("Errore query database: " . mysql_error());
    //faccio un ciclo while
    while ($riga = mysql_fetch_array($rs)) {
    $str_somma_voti = $riga['somma_voti'];
    $str_nickvotoricevente = $riga['nick_votoricevente'];
    $str_votoricevuto = $riga['votoricevuto'];

    $colore="FF99FF";

    $voti = mysql_numrows($rs);

    echo"

    <div id="nick"><font color="#".$colore."" size ="6" face="Comic Sans MS">$str_nickvotoricevente</font>voti $str_somma_voti</div>";

    }//qui chiudi il while

    ?>
    [/PHP]
    Allora ora fortunatamente non mi ripete piu' nick trovati nello stesso campo...e mi da

    carlitos:voti 18
    carlo:voti 10
    morgana:voti 17

    Si dovrebbe fare questa ulteriore modifica...
    carlitos ha ricevuto in tutto 2 voti con votazione 8 e 10,ho notato che nella query mi fa la somma 8+10 invece io vorrei che non facesse la somma ma che mi desse 2 cioè il totale dei voti...e possibile farlo?
    Ovviamente il fatto della somma potrebbe servirmi in seguito magari per fare una media voto realtivo ad ogni utente..


  • User

    Prova a sostituire nella query COUNT a SUM e fammi sapere.


  • User Attivo

    Perfetto:DFunziona..!!
    Grazie mille senza di voi non ci sarei mai arrivato..!!!


  • User Attivo

    Sto cercando di fare in modo di mostrare solo gli utenti che hanno ricevuto diciamo piu' di 2 voti...ma non riesco a completare la query

    [PHP]
    //seleziono solo utenti che hanno ricevuto piu' di 2 voti
    $strsql="SELECT id,nick_votoricevente,COUNT(votoricevuto) 'somma_voti' WHERE votoricevuto > 2 FROM voti GROUP BY nick_votoricevente";

    [/PHP]
    Purtroppo mi da questo errore

    Errore query database: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE votoricevuto > 2 FROM voti GROUP BY nick_votoricevente' at

    :mmm:


  • ModSenior

    [php]
    $strsql="SELECT id,nick_votoricevente,COUNT(votoricevuto) as somma_voti FROM voti WHERE somma_voti > 2 GROUP BY nick_votoricevente";
    [/php]


  • User Attivo

    Ciao thedarkita:)
    subito dopo che ho postato il problema ho risolto cosi'

    [PHP]
    $strsql="SELECT id,nick_votoricevente,COUNT(votoricevuto) 'somma_voti'FROM voti WHERE votoricevuto >='2' GROUP BY nick_votoricevente";
    [/PHP]


  • User Attivo

    la mia query non funziona piu'..
    inserendo la query che mi hai dato te invece da questo errore...

    Errore query database: Unknown column 'somma_voti' in 'where clause'

    ho fatto cosi poi'
    [PHP]

    $strsql = "SELECT id, nick_votoricevente, COUNT(votoricevuto) AS votoricevuto
    FROM voti
    WHERE votoricevuto >= 2
    GROUP BY nick_votoricevente";
    [/PHP]
    Funziona solo che mi visualizza pure chi ha ricevuto 1 voto...:?


  • ModSenior

    Sicuro che stai eseguendo quella query?
    Perchè del campo somma_voti nella query non se ne parla...


  • User Attivo

    Ho modificato di nuovo...
    [PHP]
    <?
    //Apro la sessione e...
    session_start();

    //mi connetto al datase
    $link = mysql_connect("$db_host", "$db_database", "$db_username", "$db_password") or die("Errore connessione: ". mysql_error());
    //seleziono il database
    mysql_select_db('my_italiawebchat') or die("Errore apertura database: " . mysql_error());
    //seleziono i campi da visualizzare per singolo utente
    $strsql = "SELECT id, nick_votoricevente, COUNT(votoricevuto) AS somma_voti
    FROM voti
    WHERE somma_voti > 2
    GROUP BY nick_votoricevente";

    $rs=@mysql_query("$strsql",$link) or die("Errore query database: " . mysql_error());
    //faccio un ciclo while
    while ($riga = mysql_fetch_array($rs)) {
    $str_somma_voti = $riga['somma_voti'];
    $str_nickvotoricevente = $riga['nick_votoricevente'];
    $str_votoricevuto = $riga['votoricevuto'];

    $colore="FF99FF";

    $voti = mysql_numrows($rs);

    echo"

    <div id="nick"><font color="#".$colore."" size ="6" face="Comic Sans MS">$str_nickvotoricevente</font>voti $str_somma_voti</div>";

    }//qui chiudi il while

    ?>

    [/PHP]
    Mi da sempre questo errore

    Errore query database: Unknown column 'somma_voti' in 'where clause'

    Tengo aprecisare che il campo somma_voti nella mia tabella voti non esiste...dipende da quello..?