• User Attivo

    Ricavare riga di mysql

    Ciao a tutti,

    Sto realizzando un sito che ha dei concorsi dove gli utenti votano

    Vorrei mostrare la posizione sul podio in tempo reale.

    Vi posto un fac simile della tabella che ho creato

    id nome voti
    1 pippo 5
    2 pluto 10
    3 paperino 3

    Con SELECT * FROM nome_tabella ORDER BY voti DESC posso creare la classifica.

    Esiste pero un modo per stampare a video solo la posizione?

    Nel senso, nella scheda di pippo vorrei scrivere: Sei 2° in classifica.

    Pensavo di farlo ricavando la posizione della riga di pippo in base all'ordine che ho impostato nella query.

    Si può? Esiste una funzione mysql che mi dice in quale posizione ho trovato pippo?

    Si può fare senza dover ricalcolare e salvare da qualche parte la posizione ogni volta che vien fatto un voto?

    GRazie
    Ciao


  • User Attivo

    Ciao, vedi se ti va bene una cosa del genere
    [PHP]$query_uno = mysql_query("SELECT * FROM tabella order by voto desc LIMIT 4");
    $riga=mysql_num_rows($query_uno);
    for($i=1; $i<$riga; $i++)
    {
    $result=mysql_fetch_assoc($query_uno);
    echo"Mario sei "." $i "." con "." $result[voto]<br>";
    }
    [/PHP]
    Ciao da danny


  • User Attivo

    Ciao, prova anche questa forse è quella che fa al caso tuo
    [PHP]$query_uno = mysql_query("SELECT * FROM tabella order by voto desc LIMIT 4");
    $posto=array('primo','secondo','terzo');
    $conta=count($posto);
    for($i=0; $i<$conta; $i++)
    {
    $result=mysql_fetch_assoc($query_uno);
    echo"Mario sei "." $posto* "." con "." $result[voto] "." voti<br>";
    }[/PHP]
    Ciao da danny


  • User Attivo

    Non ho capito bene bene...

    Da dove arriva l'array? io potre averne anche centinaia (tipo sei il 127°) non diventa pesantino...

    Poi mi par di aver capito che cosi mi stampa tutta la lista io vorrei solo quello di mario...

    Ho capito bene o mi son perso qualcosa?

    Nel frattempo, questa notte, pensavo di lanciare in while la query e all'interno del while mettere una variabile tipo $conta ++; poi con un if verificare quando trovo l'id di mario. Se trovo l'id di mario trasferisco $conta in una nuova variabile che andrà a stampare la posizione

    Un modo un pò basilare per fare la cosa, mi preoccupa un pò il fatto che anche se mario è il primo il while comunque continua a girare fino alla fine, contando, girando e sprecando risorse...

    Voi cosa ne dite? Possa diventare un problema serio in futuro...


  • User Attivo

    Ciao, avevo pensato che ti riferissi solo ai primi 3 classificati.
    Penso che faccia faccia al caso tuo il primo esempio, lui conta tutte le righe presenti nella tabella ed in base al voto piu alto ti stampa se sei primo o ultimo, per quanto riguarda la pesantezza non mi preoccuperei stiamo parlando di pochi byte.
    Ciao da danny