Un Evento Unico. 5 Sale. 27 Interventi. SEO, SOCIAL, E-Commerce, Mobile, Turismo.
CLICCA QUI e SCOPRI DI PIù X Chiudi
 
Forum GT: Condividiamo idee e conoscenza Forum GT: Condividiamo idee e conoscenza


Condividi questo contenuto nei Social Network:
Ti stiamo aspettando: Registrati subito e gratis. Entra a far parte di una delle comunità più attive in Italia. Se hai dimenticato i tuoi dati li puoi recuperare subito.


Vai indietro   Forum per Webmaster: Condividiamo Idee e Conoscenza > Sviluppo e Gestione siti web > Php - Mysql
Benvenuto! Forum Regole FAQ Lista utenti Calendario Segna come letti


Rispondi
 
LinkBack Strumenti di discussione
Vecchio 24-09-06, 18:28   #1 (permalink)
User
 
L'avatar di tarantallegra
 
Data di registrazione: Sep 2006
Ubicazione: 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
tarantallegra non in linea   Rispondi citando
Vecchio 24-09-06, 18:33   #2 (permalink)
User Attivo
 
L'avatar di massy
 
Data di registrazione: Mar 2006
Ubicazione: Pico
Messaggi: 1,014
Invia un messaggio tramite ICQ a massy
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.

__________________
Manie Grafiche
massy non in linea   Rispondi citando
Vecchio 24-09-06, 20:38   #3 (permalink)
User
 
L'avatar di tarantallegra
 
Data di registrazione: Sep 2006
Ubicazione: 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
tarantallegra non in linea   Rispondi citando
Vecchio 26-09-06, 21:24   #4 (permalink)
User
 
L'avatar di tarantallegra
 
Data di registrazione: Sep 2006
Ubicazione: 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
tarantallegra non in linea   Rispondi citando
Vecchio 27-09-06, 03:49   #5 (permalink)
User Attivo
 
L'avatar di massy
 
Data di registrazione: Mar 2006
Ubicazione: Pico
Messaggi: 1,014
Invia un messaggio tramite ICQ a massy
Grazie a te
__________________
Manie Grafiche
massy non in linea   Rispondi citando
Rispondi
Tags: , ,



Strumenti di discussione

Regole di scrittura
Non puoi postare nuove discussioni
Non puoi rispondere alle discussioni
Non puoi allegare file
Non puoi editare i tuoi post

BB code is Attivo
smilies è Attivo
[IMG] il codice è Attivo
Il codice HTML è Disattivato
Trackbacks are Attivo
Pingbacks are Attivo
Refbacks are Disattivato
Vai al forum



Tutti gli orari sono GMT +3. Attualmente sono le 15:36.




Forum GT - © 2004-2009 GT idea S.r.l P.iva 02418200800 - Privacy/Disclaimer

SEO by vBSEO 3.2.0 ©2008, Crawlability, Inc.