Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it L'avatar di Frankos
    Registrato dal
    Nov 2002
    Messaggi
    505

    Riordinare una classifica dopo un cambiamento

    Ciao a tutti,

    una domanda,
    in una tabella ho una classifica di hit parade con 10 posizioni.
    Il numero di posizioni non cambia mai, sono sempre 10.
    Quando voglio aggiornare la classifica attualmento aggiorno la posizione di ogni record.
    Esiste un modo per poter aggiornare automaticamente le posizioni quando ne cambio una di queste?
    Per esempio se la posizione 5 diventa posizione 3, automaticamente la precedente 3 diventa 4 e la precedente 4 diventa 5, le altre restano invariate.

    Grazie
    Ciao
    Sempre più in alto...
    www.webdition.com

  2. #2
    Utente di HTML.it L'avatar di Frankos
    Registrato dal
    Nov 2002
    Messaggi
    505
    Nessun suggerimento?
    Sempre più in alto...
    www.webdition.com

  3. #3
    Utente di HTML.it L'avatar di Frankos
    Registrato dal
    Nov 2002
    Messaggi
    505
    Sempre più in alto...
    www.webdition.com

  4. #4
    Si tratta di più record oppure le posizioni nel DB sono su un unico record?

    Se così è (seconda soluzione prospettata), potresti utilizzare un'array.

    Ma serve sapere come è organizzata in base dati la struttura delle informazioni.
    Provare paura per un qualcosa che ti possa capitare nel futuro non ti evita quell'evento,ti fa soltanto vivere un presente sbagliato!

  5. #5
    Utente di HTML.it L'avatar di Frankos
    Registrato dal
    Nov 2002
    Messaggi
    505
    Ciao Maximum

    Si tratta di più record, poiché ogni record può essere cambiato indipendentemente.
    In pratica nel mio database MySQL ho la tabella "Hit parade".
    In questa tabella ho i campi :

    posizione
    titolo
    interprete
    recensione

    Nella mia gestione ho una tabella contenente tanti form quanti sono i record (nel mio caso sempre 10 essendo una hit parade).
    In ogni form ho un pulsante che mi permette di accedere a una pagina dove cambio tutte le informazioni del record, questo solo nel caso in cui debba cambiare tutte le informazione.
    Nello stesso form ho anche una select (con le posizioni da 1 a 10) che mi permette di aggiornare solamente la posizione della canzone.
    Ovviamente tutte le altre posizioni non mi cambiano e così, a meno che non cambi in questo modo tutte le posizioni, queste restano com'erano prima e mi ritrovo ad avere 2 volte la stessa posizione.

    Spero che la descrizione sia chiara.
    Sempre più in alto...
    www.webdition.com

  6. #6
    Io penso che un buon database come MySql (che dovrò decidermi ad imparare a usare) possa avere una funzione nativa per aggiornare le posizioni dei record in un caso come il tuo, peraltro interessante.

    Penso anche che se inserissi i (in fondo solo dieci) records in un array ne potresti gestire le posizioni più comodamente.

    Lavorando con Access, farei

    codice:
    titolo = request.form("titolo")
    nuova = request.form("posizione")
    
    sql1 = "select posizione from [Hit parade] where titolo = '"&titolo&"'"
    set rs1 = server.createobject("ADODB.recordset")
    rs1.open sql1, conn, 3, 3
    
    vecchia = rs1("posizione")
    
    rs1.close
    set rs1 = nothing
    
    sql2 = "select * from [Hit parade] where posizione between "&nuova&" and ("&vecchia&"+1)"
    set rs2 = server.createobject("ADODB.recordset")
    rs2.open sql2, conn, 3, 3
    
    do until rs2.eof
    
    sql3 = "update [Hit parade] set posizione = "&rs2("posizione")&"+1 where titolo = '"&rs2("titolo")&"'"
    conn.execute(sql3)
    
    rs2.movenext
    loop
    
    rs2.close
    set rs2 = nothing
    
    sql4 = "update [Hit parade] set posizione = "&nuova&" where titolo = '"&titolo&"'"
    conn.execute(sql4)
    A parte i 50 errori che ci saranno, il concetto é:

    - recuperare dal form il titolo e la sua nuova posizione
    - recuperare dal database i titoli la cui posizione è compresa tra la vecchia (esclusa) e la nuova (compresa) del titolo in questione
    - aggiornarli tutti aumentando di 1 il valore del loro campo posizione
    - infine aggiornare il titolo recuperato, cambiando la sua posizione nel nuovo valore.

    Il campo posizione nell'esempio è numerico, titolo è testo.

    Bisogna gestire il caso in cui la nuova posizione sia più bassa della vecchia ( nell'esempio la nuova è più alta della vecchia) ma è questione di un if, e inoltre bisogna gestire il caso in cui il titolo sia una new entry, nel qual caso il titolo al numero 10 uscirebbe di classifica.
    E' nato www.lombardiamotori.it

    www.universocase.it: il primo portale italiano di annunci immobiliari gratuiti e autogestiti!

  7. #7
    Utente di HTML.it L'avatar di Frankos
    Registrato dal
    Nov 2002
    Messaggi
    505
    E' una soluzione interessante.
    Provo a lavorarci sopra, prevedendo i diversi casi possibili


    Grazie teorema55
    Sempre più in alto...
    www.webdition.com

  8. #8
    Buon divertimento.

    E' nato www.lombardiamotori.it

    www.universocase.it: il primo portale italiano di annunci immobiliari gratuiti e autogestiti!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.