Joomla.it Forum
Non solo Joomla... => Database => : paskuale.it 16 Sep 2011, 12:06:50
-
Salve ho una tabella contenente gli id_user e relativi punteggi di un gioco, volendo mostrare ad ogni singolo utente la propria posizione una volta ordinata in maniera decrescente la query come posso impostarla ?
grazie
-
non ho capito... vuoi tutti i punteggi o solo quello dello specifico utente o che?
ciao,
marco
-
Solo di un utente, (dopo il login) nel proprio pannello ...
grazie ;)
-
io farei così:
$user = JFactory::getUser();
$db =& JFactory::getDBO();
$query = "SELECT * FROM `#__tabella_punteggi` WHERE `id_user` = {$user->id}";
$db->setQuery( $query );
$row = $db->loadObject();
$row è un oggetto e contiene tutti i campi della tabella (es: $row->id_user), ovviamente è meglio verificare che l'utente sia loggato, altrimenti la query non restituirà niente.
ps: se devi prendere un singolo valore, a che serve ordinare la tabella?
ciao,
marco
-
Eh no ... così prendo il punteggio, a me serve la posizione nel ranking tra tutti gli utenti ... voglio sapere se è primo decimo ... centesimo ... o altro ..
grazie
-
ecco perché non capivo... :(
due strade: o prendi tutto il record set (ordinato) e conti gli elementi finché non trovi lo id_user, o, dato il punteggio dell'utente conti quanti ne ha davanti. nel secondo caso, aggiungi al codice:
$query = "SELECT COUNT(*) as position FROM `#__tabella_punteggi` WHERE `punteggio` > {$row->punteggio}";
$db->setQuery( $query );
$row = $db->loadObject();
ovviamente la posizione è $row->position + 1.
il secondo metodo è preferibile se vi sono molti utenti. anche in questo caso non è necessario ordinare la tabella, ma sarebbe meglio se punteggio fosse un indice.
ps: a seconda della versione di mysql potresti fare anche una sola query.
ciao,
marco
-
Grazie infinite, ho usato le 2 query a catena come mi hai consigliato, e poi incremento il valore finale di uno x avere il dato.
ciao ;)