Back to top

Autore Topic: Consiglio su Query.  (Letto 1771 volte)

Offline paskuale.it

  • Esploratore
  • **
  • Post: 166
    • Mostra profilo
Consiglio su Query.
« il: 16 Set 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

Offline mmleoni

  • Global Moderator
  • Instancabile
  • *****
  • Post: 5547
  • Sesso: Maschio
  • Just another *nix coder/sysadmin...
    • Mostra profilo
Re:Consiglio su Query.
« Risposta #1 il: 16 Set 2011, 12:22:32 »
non ho capito... vuoi tutti i punteggi o solo quello dello specifico utente o che?

ciao,
marco

mmleoni web consulting - creazione siti web aziendali ed e-commerce avanzati - sviluppo moduli e componenti Joomla

Offline paskuale.it

  • Esploratore
  • **
  • Post: 166
    • Mostra profilo
Re:Consiglio su Query.
« Risposta #2 il: 16 Set 2011, 12:28:50 »
Solo di un utente, (dopo il login) nel proprio pannello ...

grazie  ;)

Offline mmleoni

  • Global Moderator
  • Instancabile
  • *****
  • Post: 5547
  • Sesso: Maschio
  • Just another *nix coder/sysadmin...
    • Mostra profilo
Re:Consiglio su Query.
« Risposta #3 il: 16 Set 2011, 12:37:07 »
io farei così:

Codice: [Seleziona]
$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

mmleoni web consulting - creazione siti web aziendali ed e-commerce avanzati - sviluppo moduli e componenti Joomla

Offline paskuale.it

  • Esploratore
  • **
  • Post: 166
    • Mostra profilo
Re:Consiglio su Query.
« Risposta #4 il: 16 Set 2011, 12:41:27 »
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

Offline mmleoni

  • Global Moderator
  • Instancabile
  • *****
  • Post: 5547
  • Sesso: Maschio
  • Just another *nix coder/sysadmin...
    • Mostra profilo
Re:Consiglio su Query.
« Risposta #5 il: 16 Set 2011, 12:54:08 »
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:

Codice: [Seleziona]
$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

mmleoni web consulting - creazione siti web aziendali ed e-commerce avanzati - sviluppo moduli e componenti Joomla

Offline paskuale.it

  • Esploratore
  • **
  • Post: 166
    • Mostra profilo
[SOLVED] Consiglio su Query (ranking).
« Risposta #6 il: 16 Set 2011, 13:48:52 »
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  ;)



 



Web Design Bolzano Kreatif