Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2000
    Messaggi
    194

    Ordinamento dati DOPO averli estratti da Mysql

    Ciao a tutti, ho un problema su una classifica di utenti che acquisiscono dei punteggi che sono però salvati in 2 tabelle differenti.
    POSTO IL TUTTO COMMENTATO:

    // effettuo la query a DB e prendo i dati sommando i punteggi con
    //SUM (alias j) dalle 2 tabelle 'test e salva_score raggruppati per
    //username

    $select="SELECT username, SUM(punteggio) as j, score FROM test,salva_score WHERE salva_score.id_utente=test.id_utente GROUP BY username";
    $queryselect=mysql_query ($select);

    // In questa parte do un numero in classifica agli utenti partendo
    // da ZERO ed etraggo i dati dal DB

    $contariga = mysql_num_rows($queryselect);
    $i = 0;
    while ($elenco=mysql_fetch_assoc($queryselect))
    {
    $utente=$elenco[username];
    $punteggio=$elenco[j];
    $score=$elenco[score];

    // Ora che ho etratto i dati che mi interessano mi serve che il
    // PUNTEGGIO e lo SCORE siano sommati.
    $totale = ($punteggio + $score);
    $i = $i + 1;

    // Faccio vedere i dati sula pagina
    echo "$i - $utente - $totale ($punteggio + $score)</td>";
    }

    E' PROPRIO ORA CHE SORGE IL MIO PROBLEMA DI ORDINAMENTO...
    Dato che il $totale è un valore calcolato come faccio a far si che la classifica invece sia proprio ordinata per questo valore???

    Se lo faccio da query su Mysql con ORDER BY (in base alle mie conoscenze) posso solo ordinare per singoli valori (j e score) ma come faccio se invece mi interessa averlo per $totale???

    Spero di essere stato chiaro...
    Grazie a chiunque vorrà darmi una mano...

  2. #2
    Metti i risultatii in un array.

    arsort(array) - ordina l'array con valori decrescenti e mantiene la relazione chiave/valore
    asort(array) - ordina l'array con valori crescenti e mantiene la relazione chiave/valore
    rsort(array) - ordina l'array con valori decrescenti
    sort(array) - ordina l'array con valori crescenti

  3. #3
    calcola il valore con mysql e ordina li

    SELECT username, SUM(punteggio) + score as punti FROM test,salva_score WHERE salva_score.id_utente=test.id_utente GROUP BY username ORDER BY punti

    poi il numero della classifica lo aggiungi nel ciclo di visualizzazione

  4. #4
    Utente di HTML.it
    Registrato dal
    Mar 2000
    Messaggi
    194
    Cavolo!
    Non pensavo si potesse fare la somma direttamente nella query:

    SELECT username, SUM(punteggio) + score as punti FROM test,salva_score WHERE salva_score.id_utente=test.id_utente GROUP BY username ORDER BY punti

    Vi ringrazio per le dritte!
    Ciao
    Andrea

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.