Visualizzazione risultati 1 fino 6 di 6

Discussione: Creare Classifica Php+Mysql

  1. #1
    L'avatar di factory666
    factory666 non è connesso Utente giovane
    Data registrazione
    21-07-2007
    Messaggi
    55

    Predefinito Creare Classifica Php+Mysql

    Salve ragazzi,
    Dovrei creare una classifica di questo tipo:
    (Ho cercato nel forum, cè qualcosa di simile, ma nulla che fa al caso mio!)

    Codice:
    -----------------------------------------------
      ID | Username |    email       | Punti
    ----------------------------------
       1 | Caio     |  boh@fg.it   |  30
    ----------------------------------
       2 | Sempr    |  buh@gf.it   |  15
    ----------------------------------
       3 | Tizio    |  bla@fd.it    |   10
    -----------------------------------------------
    In cui, gli ID rimangono invariati, ma cambia la posizione di ogni utente in base al punteggio che ha... (dal più alto al più basso... come nell'esempio) e che si aggiorni automaticmente!

    La tabella già l'ho creata:

    Codice:
    CREATE TABLE classifica (
      id int(11) NOT NULL auto_increment,
      Username varchar(50) NOT NULL,
      email varchar(50) NOT NULL,
      punti int(11) NOT NULL,
      PRIMARY KEY  (id)
    )
    E ho creato anche il form per aggiungere i dati al database.


    L'unico problema purtroppo e che non so come fare per inviare alla tabella il punteggio per ogni utente.... mi spiego meglio...
    Voglio far in modo, ad esempio, che a ogni login effettuato, il punteggio dell'utente aumenta di 1 punto! Ovviamente tenendo in considerazione la data di accesso al database in modo da poter ottenere il punto solo una volta al giorno! (quindi bisogna inserire anche il campo "Data" nella tabella?)
    Preferibilmente, in caso di punteggio uguale, ricorrere alla data come punto di riferimento

    Spero in un vostro aiuto!
    Perpiacere aiutatemi
    Ultima modifica di factory666 : 14-10-2011 alle ore 15.43.44


  2. #2
    L'avatar di factory666
    factory666 non è connesso Utente giovane
    Data registrazione
    21-07-2007
    Messaggi
    55

    Predefinito

    Ragazzi nessuno riesce a darmi una mano?? vi serve qualche dettaglio che non ho scritto? fatemi sapere perpiacere, è urgente


  3. #3
    L'avatar di memai
    memai non è connesso Utente
    Data registrazione
    10-02-2010
    Residenza
    Bergamo
    Messaggi
    175

    Predefinito

    Codice PHP:
    //puoi usare questo per leggere la classifica dal punteggio più alto al più basso
    $contenuti=mysql_query("SELECT * FROM classifica ORDER BY punti DESC");
    $righe=mysql_num_rows($contenuti);
    $x=0;
    while(
    $leggo=mysql_fetch_assoc($contenuti)){
    $x++;

    echo
    $leggo['username']." ha fatto ".$leggo['punti']." punti!<br/>";

    }
    //per il login
    //a patto che il valore del username con cui ti logghi sia racchiuso nella variabile $username
    Codice PHP:
    $result=mysql_query("SELECT punti FROM classifica WHERE username='$username'") or die(mysql_error());
    while(
    $punteggio=mysql_fetch_assoc($result)){
    $punti=$punteggio['punti'];
    }
    //aggiorni il campo punti dove l'username è quello con cui ti logghi
    mysql_query("Update classifica SET punti =$punti+1 WHERE username='$username'");

    }
    Per la data che ovviamente devi averla nella tabella
    puoi fare:

    Codice PHP:
    //se salvi la data con la funzione now() ti è facile perchè puoi fare semplicemente:
    $adesso=now();
    if(
    $data_salvata==$adesso){
    //nessun cambiamento nel database
    }
    else{
    //aggiungi di un punto
    }
    Notte bistecca, ho l'acquolina in bocca e 'sta sera c'è, carne di manzo per me!

  4. #4
    L'avatar di factory666
    factory666 non è connesso Utente giovane
    Data registrazione
    21-07-2007
    Messaggi
    55

    Predefinito

    Grazie!!! il prima posibile provo e ti faccio sapere se riscontro qualche problema!


  5. #5
    L'avatar di factory666
    factory666 non è connesso Utente giovane
    Data registrazione
    21-07-2007
    Messaggi
    55

    Predefinito

    Ok ho provato il codice che mi hai scritto!
    Funziona tutto correttamente! Tranne una cosa! (per lo meno io non sono risucito a farla funzionare)
    -La verifica della data salvata nel database dell'ultimo login con quella attuale

    Praticamente, mi salva lo stesso il punteggio +1 ma non mi verifica la data... forse il mio codice è errato dato che nn ho usato la funzione now()
    (voglio far in modo che il punto lo dia solo 1 volta al giorno verificando la data salvata nel database dell'ultimo login, sostituisca nel campo la vecchia data cn la nuova, e che in caso di punteggio uguale mi ordini gli utenti in base a chi ha ottenuto prima il punteggio... quindi oltre alla data necessito pure di ore e minuti giusto?)

    Login.php
    Codice:
    	// INIZIO MODIFICHE CLASSIFICA
    	//se salvi la data con la funzione now() ti è facile perchè puoi fare semplicemente:
    	$adesso= date("Y-m-d");
    if($adesso==$date){
    //nessun cambiamento nel database
    echo "Oggi già è stato effettutao un login, il tuo punto già ti è stato assegnato!";
    }
    else{
    //aggiorni il campo punti dove l'username è quello con cui ti logghi
    mysql_query("Update users SET date =$adesso WHERE username='$username'");
    
    	$result=mysql_query("SELECT punti FROM users WHERE username='$username'") or die(mysql_error());
    while($punteggio=mysql_fetch_assoc($result)){
    $punti=$punteggio['punti'];
    }
    mysql_query("Update users SET punti =$punti+1 WHERE username='$username'");
    }  
    
    
    
    
    // FINE MODIFICHE CLASSIFICA
    Nel database mi esce sempre: date: 0000-00-00 (tenendo in cosiderazione che nella tabella ho un casino di campi in realtà (email, username, password, data registrazione, id, date login e punti)

    Poi ad esempio, come faccio a far comparire solo i primi dieci in classifica nella pagina classifica.php?

    Cn il codice che mi hai scritto sopra se nn erro, mi escono tutti gli utenti! se avessi già un minimo di 200 utenti sarebbe un casino :S

    Grazie per l'aiuto! Volevo riuscirci senza disturbare + di tanto, ma nada! :S mi disp

    EDIT

    Ok per il limite di visualizzazione ho usato la funzione LIMIT

    Codice:
    $contenuti=mysql_query("SELECT * FROM classifica ORDER BY punti DESC LIMIT 10");
    Ultima modifica di factory666 : 19-10-2011 alle ore 16.20.42


  6. #6
    L'avatar di memai
    memai non è connesso Utente
    Data registrazione
    10-02-2010
    Residenza
    Bergamo
    Messaggi
    175

    Predefinito

    usando la funzione date() ti salva sempre con 00000-00-0000?
    Se si io ti consiglio di provare a utilizzare la funzione now() che ti salva la data corrente nel momento in cui riceve input

    COSA DIAMINE HO SCRITTO?? per favore la roba della lettura del punteggio lasciala stare che è una puttanata non so cosa mi era preso:

    Codice PHP:
    $contenuti=mysql_query("SELECT * FROM classifica ORDER BY punti DESC LIMIT 0,10");
    while(
    $leggo=mysql_fetch_assoc($contenuti)){
    echo
    $leggo['username']." ha fatto ".$leggo['punti']." punti!<br/>"; }
    }


    }
    Senza né la dfunzzione per contare le righe nè la variabile $x là la ho aperta e potenziata senza farne niente -.-""""""" (coglione sono)
    Notte bistecca, ho l'acquolina in bocca e 'sta sera c'è, carne di manzo per me!

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •