- Home
- Categorie
- Coding e Sistemistica
- PHP
- Mostrare a video gli utenti piu' votati
-
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 ricevutoHo 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 esempiocarlitos 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
-
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'];
-
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 dacarlitos:voti 18
carlo:voti 10
morgana:voti 17Si 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..
-
Prova a sostituire nella query COUNT a SUM e fammi sapere.
-
Perfetto:DFunziona..!!
Grazie mille senza di voi non ci sarei mai arrivato..!!!
-
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 erroreErrore 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
-
[php]
$strsql="SELECT id,nick_votoricevente,COUNT(votoricevuto) as somma_voti FROM voti WHERE somma_voti > 2 GROUP BY nick_votoricevente";
[/php]
-
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]
-
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...:?
-
Sicuro che stai eseguendo quella query?
Perchè del campo somma_voti nella query non se ne parla...
-
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 erroreErrore 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..?