Visualizzazione risultati 1 fino 17 di 17

Discussione: [PHP e/o MySql] Creare una classifica che si ordina in base ai punti di una colonna

  1. #1
    Guest

    Predefinito [PHP e/o MySql] Creare una classifica che si ordina in base ai punti di una colonna

    Ciao a tutti.
    Dovrei creare una classifica di questo tipo:
    Codice:
    ----------------------------------
      ID | Pilota | Team | Punti
    ----------------------------------
       1 | Tizio  |  bla |  10
    ----------------------------------
       2 | Caio   |  boh |   8
    ----------------------------------
       3 | Sempr  |  buh |   5
    ----------------------------------
    Ogni tot di giorni devo aggiornare la classifica, modificando solo i punti. Vorrei che automaticamente si ordinasse in base ai punti.
    Ad esempio se Caio avrà 30 punti e Sempr ne avrà 15, la classifica cambierà automaticamente così:
    Codice:
    ----------------------------------
      ID | Pilota | Team | Punti
    ----------------------------------
       1 | Caio  |  boh |  30
    ----------------------------------
       2 | Sempr |  buh |  15
    ----------------------------------
       3 | Tizio |  bla |   10
    ----------------------------------
    Quindi io modifico solo i punti, mentre la colonna ID rimane invariata, le colonne "Pilota" e "Team" varieranno in base al punteggio (però "Caio" sarà sempre associato a "boh", "Sempr" a "buh" e "Tizio" a "bla")...
    L'unica colonna che io andrò a modificare sarà la colonna dei punti, e vorrei fare in modo di cambiarli attraverso un form inviando i dati o nel database o in un file .txt

    Dagli esempi penso che si capisce bene cosa intendo fare... Idee?

  2. #2
    Guest

    Predefinito

    Ciao...
    Sai il php vero?

  3. #3
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,067

    Predefinito

    Citazione Originalmente inviato da thedownworld Visualizza messaggio
    Ciao...
    Sai il php vero?


    ..Comunque, perché modificare la tabella? Cioè non potresti semplicemente ordinarle durante la lettura nella query con ORDER BY?

    ad esempio:

    Codice PHP:
    $r = mysql_query('SELECT * FROM tabella ORDER BY Punti DESC');
    ??

    Ciao!
    Ultima modifica di alemoppo : 14-03-2010 alle ore 23.42.12

  4. #4
    Guest

    Predefinito

    Citazione Originalmente inviato da alemoppo Visualizza messaggio
    Comunque, perché modificare la tabella? Cioè non potresti semplicemente ordinarle durante la lettura nella query con ORDER BY?
    Ciao alemoppo.
    Allora io creo una tabella sul database:
    Codice:
    CREATE TABLE classifica (
      id int(11) NOT NULL auto_increment,
      piloti varchar(50) NOT NULL,
      team varchar(50) NOT NULL,
      punti int(11) NOT NULL,
      PRIMARY KEY  (id)
    )
    Poi dovrei caricare i dati all'interno della tabella e per iniziare posso scriverli manualmente (vado a scrivere solo "id", "piloti" e "team", lasciando vuoto o metto 0 nei "punti"):
    Codice:
    INSERT INTO `classifica` (`id`, `piloti`, `team`, `punti`) VALUES
    (1 , 'Tizio', 'team numero1', 0),
    (2 , 'Caio', 'team numero2', 0),
    (3 , 'Sempronio', 'team numero3', 0);
    Fin qui è ok?

    Poi devo aggiornare i punti ogni tot di giorni e quindi per non andare a modificare il database, volevo creare un form da cui inviare direttamente al database il numero dei punti. (Come?)

    E la classifica deve aggiornarsi in base ai punti e quindi penso che la parte che hai scritto sia quella che mi serve...
    Ultima modifica di musicanapoli : 15-03-2010 alle ore 00.19.12

  5. #5
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,067

    Predefinito

    Per aggiornare, presupponendo che il form sia di tipo post, dovresti fare una cosa come:

    Codice PHP:
    <?php
    if(!(isset($_POST['nome']) && isset($_POST['team']) && isset($_POST['punti'])))
    die(
    'errore: non sono presenti tutti i dati!'); //messaggio di errore...

    /*connessione al database*/
    $db = mysql_connect('localhost','musicanapoli','');
    if(
    $db == FALSE)
    die(
    'Errore: impossibile connettersi al database!'); //messaggio di errore
    if(!mysql_select_db('my_musicanapoli'))
    die(
    'Errore: impossibile accedere al database!');

    $ris = mysql_query("INSERT INTO classifica (nome,team,punti) VALUES('".$_POST['nome']."','".$_POST['team']."','".$_POST['punti']."')");

    if(!
    $ris)
    die(
    'Errore: impossibile aggiungere valori nel database!');

    mysql_close($db);
    ?>
    Per visualizzare i dati secondo il punteggio, devi fare una cosa del genere:


    Codice PHP:
    <?php
    /*connessione al database*/
    $db = mysql_connect('localhost','musicanapoli','');
    if(
    $db == FALSE)
    die(
    'Errore: impossibile connettersi al database!'); //messaggio di errore
    if(!mysql_select_db('my_musicanapoli'))
    die(
    'Errore: impossibile accedere al database!');

    $ris = mysql_query("SELECT * FROM tabella ORDER BY Punti DESC");

    $ris = mysql_fetch_row($ris);

    foreach(
    $ris as $valore)
    echo
    $valore.'<br />';

    mysql_close($db);
    ?>
    EDIT: scusa, forse il secondo non va bene.... Adesso devo andare; poi domani te lo aggiorno, a meno che non lo faccia prima un altro utente

    Ciao!
    Ultima modifica di alemoppo : 15-03-2010 alle ore 00.32.12

  6. #6
    Kevinoo non è connesso Utente giovane
    Data registrazione
    14-05-2007
    Residenza
    Burano (Venezia)
    Messaggi
    94

    Predefinito

    Citazione Originalmente inviato da musicanapoli Visualizza messaggio

    Poi devo aggiornare i punti ogni tot di giorni e quindi per non andare a modificare il database, volevo creare un form da cui inviare direttamente al database il numero dei punti. (Come?)
    Il form lo crei con il semplice HTML. Dopo di ché crei un'altra pagina (anche la stessa) con il linguaggio PHP che è capace di prendere il valore delle variaibili passate usando il form e le salverai attraverso una query nel database.

    Codice:
    <FORM action="elabora.php" METHOD="POST">
    scrivi qui:<INPUT type="text" name="campo1">
    </FORM>
    Codice PHP:
    <?php
    echo "questo è quello che hai scritto nel campo: ". $_POST['campo1'];
    ?>
    Al posto di quell'echo, nella pagina in php dovrai eseguire la connessione al database, ed poi eseguire la query. Su internet ci sono migliaia di guide per farlo.
    "sempre avanti mai indietro, nemmeno per prendere la rincorsa!"

    Associazione Vogaepara Burano

  7. #7
    Guest

    Predefinito

    Grazie ad entrambi per la risposta.
    @alemoppo:
    il secondo codice non va, mi estrapola solo la riga del punteggio più alto...Ho provato anche ad impostare il limit a 3, ma estrapola solo un valore.

    Invece lo script per inviare dati al database, lo provo più tardi.

  8. #8
    L'avatar di mycarlo
    mycarlo non è connesso Utente attivo
    Data registrazione
    06-10-2009
    Residenza
    $this->s50
    Messaggi
    467

    Predefinito

    Il secondo codice:
    Codice PHP:
    <?php
    /*connessione al database*/
    $db = mysql_connect('localhost','musicanapoli','');
    if(
    $db == FALSE)
    die(
    'Errore: impossibile connettersi al database!'); //messaggio di errore
    if(!mysql_select_db('my_musicanapoli'))
    die(
    'Errore: impossibile accedere al database!');

    $ris = mysql_query('SELECT * FROM tabella ORDER BY punti DESC');

    while(
    $r = mysql_fetch_assoc($ris)) {
    echo
    $r['piloti'], ' - ', $r['team'], '<br />'; // stampa i dati come vuoi, questo è solo un esempio
    }

    mysql_close($db);
    ?>

  9. #9
    Guest

    Predefinito

    Secondo me dovrebbe essere cosi il codice....

    Codice PHP:
    <?php

    /*connessione al database*/
    $db = mysql_connect('localhost','musicanapoli','');

    if(
    $db == FALSE)
    die(
    'Errore: impossibile connettersi al database!'); //messaggio di errore
    if(!mysql_select_db('my_musicanapoli'))
    die(
    'Errore: impossibile accedere al database!');

    $ris = mysql_query("SELECT * FROM tabella ORDER BY Punti DESC");

    while(
    $dati=mysql_fetch_array($ris)){

    echo
    $dati['piloti'].' | '. $dati['team'].' | '. $dati['punti'].'<br />';

    }

    mysql_close($db);

    ?>

  10. #10
    L'avatar di mycarlo
    mycarlo non è connesso Utente attivo
    Data registrazione
    06-10-2009
    Residenza
    $this->s50
    Messaggi
    467

    Predefinito

    Citazione Originalmente inviato da zomer Visualizza messaggio
    Secondo me dovrebbe essere cosi il codice....
    In pratica hai usato mysql_fetch_array al posto di mysql_fetch_assoc
    mysql_fetch_array = mysql_fetch_assoc + mysql_fetch_row senza il secondo parametro (di default è MYSQL_BOTH).

  11. #11
    Guest

    Predefinito

    Perfetto, ora funziona. Danke!

    Ho provato anche ad inviare i dati al database, ed anche quello funziona.
    Solo che io non volevo inviare tutti i dati...

    In pratica io nel database ho già caricato tutti i campi "pilota" e "team", io dovrei aggiornare solamente i "punti" dei piloti già creati... Come faccio ad aggiornare ogni campo "punti" di ogni riga (utilizzando sempre un form)?

  12. #12
    L'avatar di Xsescott
    Xsescott non è connesso AlterGuru
    Data registrazione
    08-02-2004
    Messaggi
    1,413

    Predefinito

    Alter table ?

    edit: scusami, volevo dire UPDATE :P

    UPDATE tab SET campo='ilvalorechevogliomodificare' WHERE campocercato='valore'
    Ultima modifica di Xsescott : 16-03-2010 alle ore 23.59.05
    "Quando il potere dell'amore supererà l'amore per il potere il mondo conoscerà la pace" Jimmy Hendrix


    [ Richiesta: http://www.unibologna.eu/ ] --> [Risposta: http://www.magazine.unibo.it/Magazin...al_Portale.htm Morale] -->[ http://www.anti-phishing.it/news/art...s.13062007.php ]
    consoliwebsite.altervista.org

  13. #13
    Guest

    Predefinito

    Citazione Originalmente inviato da Xsescott Visualizza messaggio
    Alter table ?

    edit: scusami, volevo dire UPDATE :P

    UPDATE tab SET campo='ilvalorechevogliomodificare' WHERE campocercato='valore'
    Ho cancellato il contenuto del mio messaggio perchè avevo capito male...


    Nel form vorrei questo:
    Codice HTML:
    <FORM action="edit-punti.php" METHOD="POST">
    ID:<INPUT type="text" name="id">
    Punti:<INPUT type="text" name="punti">
    <input type="submit" value="Invio">
    </FORM>
    Non ho capito bene come modificare questo:
    Codice PHP:
    <?php
    if(!(isset($_POST['nome']) && isset($_POST['team']) && isset($_POST['punti'])))
    die(
    'errore: non sono presenti tutti i dati!'); //messaggio di errore...

    /*connessione al database*/
    $db = mysql_connect('localhost','musicanapoli','');
    if(
    $db == FALSE)
    die(
    'Errore: impossibile connettersi al database!'); //messaggio di errore
    if(!mysql_select_db('my_musicanapoli'))
    die(
    'Errore: impossibile accedere al database!');

    $ris = mysql_query("INSERT INTO classifica (nome,team,punti) VALUES('".$_POST['nome']."','".$_POST['team']."','".$_POST['punti']."')");

    if(!
    $ris)
    die(
    'Errore: impossibile aggiungere valori nel database!');

    mysql_close($db);
    ?>
    con UPDATE tab SET [...]
    Ultima modifica di musicanapoli : 17-03-2010 alle ore 01.57.47

  14. #14
    L'avatar di Xsescott
    Xsescott non è connesso AlterGuru
    Data registrazione
    08-02-2004
    Messaggi
    1,413

    Predefinito

    Codice HTML:
    <FORM action="edit-punti.php" METHOD="POST">
    ID:<INPUT type="text" name="id">
    Punti:<INPUT type="text" name="punti">
    <input type="submit" value="Invio">
    </FORM>
    Non ho capito bene come modificare questo:
    Codice PHP:
    <?php
    if(!($id=isset($_POST['id'])) && !($punti=isset($_POST['punti'])))
    die(
    'errore: non sono presenti tutti i dati!'); //messaggio di errore...

    /*connessione al database*/
    $db = mysql_connect('localhost','musicanapoli','');
    if(
    $db == FALSE)
    die(
    'Errore: impossibile connettersi al database!'); //messaggio di errore
    if(!mysql_select_db('my_musicanapoli'))
    die(
    'Errore: impossibile accedere al database!');

    $ris = mysql_query("UPDATE classifica SET Punti = '$punti' WHERE ID = '$id' );

    if(!
    $ris)
    die('Errore: impossibile aggiungere valori nel database!');

    mysql_close(
    $db);
    ?>
    "Quando il potere dell'amore supererà l'amore per il potere il mondo conoscerà la pace" Jimmy Hendrix


    [ Richiesta: http://www.unibologna.eu/ ] --> [Risposta: http://www.magazine.unibo.it/Magazin...al_Portale.htm Morale] -->[ http://www.anti-phishing.it/news/art...s.13062007.php ]
    consoliwebsite.altervista.org

  15. #15
    Guest

    Predefinito

    @Xsescott
    Avevo già provato in questo modo, ma mi da pagina bianca (edit, giustamente!)...
    (ps. mancano le virgolette " di chiusura nel mysql_query).

    Edit.

    Ho fatto queste prove:

    ID=1 punti=150 ... il risultato è che nel database all'ID numero 1 corrispondono punti 0 (originariamente erano 25)
    ID=2 punti=30 ... il risultato nel database non cambia (originariamente erano 20 punti e rimangono 20)

    EDIT 2

    Ho trovato la soluzione.
    Ho modificato lo script in questo modo ed ora funziona:
    Codice PHP:
    <?php
    if(!(isset($_POST['punti']) && isset($_POST['id'])))
    die(
    'errore: non sono presenti tutti i dati!'); //messaggio di errore...

    /*connessione al database*/
    $db = mysql_connect('localhost','username','password');
    if(
    $db == FALSE)
    die(
    'Errore: impossibile connettersi al database!'); //messaggio di errore
    if(!mysql_select_db('namedb'))
    die(
    'Errore: impossibile accedere al database!');

    $ris = mysql_query("UPDATE classifica SET punti = '$_POST[punti]' WHERE id = '$_POST[id]'");

    if(!
    $ris)
    die(
    'Errore: impossibile aggiungere valori nel database!');

    mysql_close($db);
    ?>
    Ultima modifica di musicanapoli : 17-03-2010 alle ore 19.53.30

  16. #16
    Guest

    Predefinito

    ciao uso questo codice è esatto?
    Codice PHP:
    $ris = mysql_query('SELECT * FROM tb_username ORDER BY punti DESC');


    while(
    $r = mysql_fetch_assoc($ris)) {
    echo
    $r['username'], ' - ', '<br />';
    }

    dove dice tb_username ho messo il nome della mia tabella
    e non tabella come nel codice sopra
    all intero ho sia "punti" che "username"

    ovviamente prime mi connetto al db in modo esatto non mi esce l errore

    perche non mi stampa avideo gli user e i punti ? non mi esce niente quando apro la pagina

    sbagliavo a mettere la tb_username era tb_users

    solo che adesso mi stampa la lista degli user seguiti dal trattino ma i punti no e non li metti in ordine ovviamente potete aiutarmi?
    Ultima modifica di brushpts : 15-11-2011 alle ore 01.34.51

  17. #17
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,067

    Predefinito

    apri una tua discussione sull'argomento. Non riesumare vecchi topic!

    Comunque:

    solo che adesso mi stampa la lista degli user seguiti dal trattino ma i punti no e non li metti in ordine ovviamente potete aiutarmi
    Gli hai detto di scrivere gli username seguiti dal trattino ordinati per punteggio:
    Codice PHP:
    echo $r['username'], ' - ', '<br />';

    Ciao!
    Ultima modifica di alemoppo : 15-11-2011 alle ore 01.52.16

Tags for this Thread

Regole di scrittura

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