+ Rispondi alla Discussione
Risultati da 1 a 5 di 5

Classifica con somma punteggi

Ultimo Messaggio di massy il:
  1. #1
    User L'avatar di tarantallegra
    Data Registrazione
    Sep 2006
    Località
    Genova
    Messaggi
    11

    Classifica con somma punteggi

    Buongiorno a tutti,
    avrei bisogno di un piccolo aiuto nella scrittura di un comando php.

    Ho un sito xoops con un modulo per quiz (Myquiz). Vorrei aggiungere una classifica generale che ordini gli utenti iscritti sommando tutti i loro risultati ai quiz.

    I risultati vengono salvati in una tabella nel mio db mysql (viene registrato username, id, id del quiz e altre informazioni). Nella classifica generale mi interessa solo l'username e il punteggio. Così ho preparato una tabella myquiz_scoreboard nella quale ho messo due campi: username e score.

    Quando viene compilato il quiz, lo script inserisce il risultato anche in questa nuova tabella. Ora... Visto che grazie a precedenti impostazioni l'utente più rispondere ad ogni quiz una sola volta, vorrei aggiungere qualche riga che mi permetta di sommare il punteggio se l'username è già presente nella tabella myquiz_scoreboard.

    Esempio:

    tabella myquiz_scoreboard:

    username score

    chiara 5
    michela 8
    picaciu 4

    Se ora picaciu (che ha già risposto ad un quiz e ha totalizzato 4 punti... poverino...) compila un nuovo quiz e totalizza 6 punti, può lo script dire al db:
    guarda se l'username picaciu c'è già e in quel caso somma 6 al suo precedente score?

    Spero di essere stata chiara...

    Questo è il pezzo di script che ho aggiunto per registrare i risultati nella tabella scoreboard. è quello che penso andrà modificato...

    Codice:
    # inserisci nella classifica
            $ctime = time();
            if(!$xoopsDB->query("INSERT INTO ".$xoopsDB->prefix("myquiz_scoreboard")." VALUES ('$logname','$score')"))
            {
                    echo $xoopsDB->errno(). ": ".$xoopsDB->error(). "<br>";
                    return;
            }
    grazie

    Chiara

  2. #2
    User Attivo L'avatar di massy
    Data Registrazione
    Mar 2006
    Località
    Pico
    Messaggi
    1,020
    Ciao.

    Devi prima di tutto controllare se l'utente ha un punteggio.
    (magari fai la query e controlli che il valore di mysql_affected_rows() sia maggiore di 0)

    se no fai fare la query che hai segnalato,
    se sì fai un update aggiungendo al vecchio valore quello nuovo.


  3. #3
    User L'avatar di tarantallegra
    Data Registrazione
    Sep 2006
    Località
    Genova
    Messaggi
    11
    Ciao Massy,
    grazie mille per la risposta! Ho provato a cercare nel manuale php come fare quello che mi hai scritto... il mio problema è che non ho mai fatto niente di simile e che quel pezzo di script che sono riuscita a fare l'ho modificato a partire da uno esistente (sono stata la prima a stupirmi del fatto che funzionasse!).
    Saresti così gentile da scrivermi in pratica lo script da aggiungere?
    Grazie, scusa il disturbo
    Chiara

  4. #4
    User L'avatar di tarantallegra
    Data Registrazione
    Sep 2006
    Località
    Genova
    Messaggi
    11

    Risolto

    Se nel futuro cercando qualcosa di simile qualcuno arrivasse al mio post metto qui la soluzione che ho trovato.

    Codice:
    $ctime = time();
    $qry="SELECT score FROM ".$xoopsDB->prefix("myquiz_scoreboard")." WHERE username='$logname'";
    $res=mysql_query($qry);
    mysql_num_rows($res)>0 ? $rws=mysql_fetch_row($res) : $rws=0;
    
    if($rws) {
       $sommapunteggio=$rws[0]+$score;
       $qry2="UPDATE ".$xoopsDB->prefix("myquiz_scoreboard")." SET score='$sommapunteggio' WHERE 
    
    username='$logname'";
       mysql_query($qry2);
    } else (!$xoopsDB->query("INSERT INTO ".$xoopsDB->prefix("myquiz_scoreboard")." VALUES ('$logname','$score')"));
    Grazie a tutti
    Chiara

  5. #5
    User Attivo L'avatar di massy
    Data Registrazione
    Mar 2006
    Località
    Pico
    Messaggi
    1,020
    Grazie a te

+ Rispondi alla Discussione

Tag per Questa Discussione

^ Permessi di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  •  
  • Il codice BB è Attivato
  • Le faccine sono Attivato
  • Il codice [IMG] è Attivato
  • Il codice [VIDEO] è Attivato
  • Il codice HTML è Disattivato
  • Trackbacks Attivato
  • Pingback Attivato
  • Refback Attivato

SEO by vBSEO 3.6.0 PL2 ©2011, Crawlability, Inc.