Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2012
    Messaggi
    8

    Ordinare tabella in base alle preferenze dell'utente.

    Salve a tutti!Premetto che non so se stia postando nella sezione giusta,ma volevo chiedere se potevate aiutarmi con questo problema.
    Praticamente partendo dall'esempio di questo sito http://italia.yourtopia.net/ dovrei fare una cosa del genere con un mio database.Ho 150 paesi che devo ordinare in una classifica in base al peso che danno gli utenti ai vari valori.Valori simili a quelli di questo sito.Ovviamente trascurando la parte grafica e tutto il resto,volevo sapere se potevate aiutarmi a capire il modo impiegato da questo sito o in generale se c'è qualche script..tranci di codice da appiccicare nella pagina..non so.. Conosco soltanto i rudimenti dell sql e del php ma mi serve solo che mi indirizziate su che strada prendere

    Grazie in anticipo!

  2. #2
    Non ho capito molto quello che ti serve.... ad essere sinceri.
    Ad ogni modo, il ragionamento che segue il sito che hai postato come esempio è relativamente semplice.
    La pagina di front-end prevede una interazione con l'utente che esprime una sorta di voto a delle questioni.
    Tale voto viene registrato in un apposito campo della tabella.
    In estrapolazione dei dati ordini in base al numero di voti raggiunti per una singola tabella.

    Tornando all'esempio da te linkato, hai una form (lì rappresentata con degli slider per aumentare o diminuire il "voto") che ti chiede di esprimere il tuo giudizio su alcuni argomenti.
    Molto probabilmente sarà interfacciata a due tabelle del DB.
    La prima conterrà le domande da presentare agli utenti, la seconda conterrà il risultato dei singoli voti.
    Probabilmente sarà strutturata come segue:

    codice:
    // TABELLA 1: Domande
        id INT UNSIGNED AUTO_INCREMENT
        domanda TEXT
    
    // TABELLA 2: risposte
        id INT UNSIGNED AUTO_INCREMENT
        id_domanda INT UNSIGNED
        voto INT
        luogo VARCHAR
    Quando l'utente muove lo slider e preme "salva", verrà aggiornata la seconda tabella.
    Ogni domanda (della prima tabella) ha un ID, che viene salvato (come riferimento) nella seconda tabella nel campo ID_DOMANDA.
    Insieme a questo, si salva il numero corrispondente al voto nella specifica colonna della seconda tabella, e (da quello che ho capito) anche le coordinate geografiche relative al luogo da cui si è espresso il proprio parere.

    Quando si mostrano i risultati del voto, si collegano le due tabelle - mettendole in relazione per TAB1.id e TAB2.d_domanda - e si mostrano i risultati ordinati secondo il metodo che hai prescelto!

    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2012
    Messaggi
    8
    No no aspetta,non mi sono spiegato bene o può essere che non ho capito la tua risposta
    Facciamo da zero.Ad esempio metti che ho 10 squadre di calcio in un database.Ogni una con i relativi Punti,gol fatti,gol subiti,e numero infortuni. Di base sono ordinate rispetto ai punti.Io devo fare in modo che l'utente possa ordinare scegliendo anche gli altri fattori.

    Quindi ad esempio di base il milan è primo ai punti.Ma se l'utente aumenta il "peso" degli infortuni,il milan scende terzo e sale in prima posizione il palermo. Ma il palermo non sale in prima posizione semplicemente perchè ho ordinato la lista in base al numero di infortuni,ma anche in base al numero di punti in campionato.

    Per fare un esempio spicciolo sulle regioni di prima,Immagina che la sicilia è 20ma su 20 per l'occupazione e 1ma per l'ambiente.Se scelgo come criteri di classifica ENTRAMBI questi aspetti la sicilia deve uscire tipo decima. Se poi posso scegliere anche "il valore di incidenza dei criteri"(gli slider di prima) allora se non alzo a manetta l'ambiente,ma lo alzo di una tacca,la sicilia è 15ma.Dovrebbe starci una specie di moltiplicatore dietro quelle leve.Lo so è un macello ma se si rivede bene quel sito si capisce tutto!Li come alzi o abbassi le levette cambia la classifica e i dataset che ci stanno dietro sono solo valori numerici tipo
    Disoccupazione | Qualitàdellavita |etc etc
    Trentino 15.3 30.4
    Lazio 22.3 21.8

    Roba così

    Perdonami probabilmente ho incasinato ancora di più

  4. #4
    Infatti: con la pagina che mi avevi linkato, ho pensato ti servisse tutt'altro.... peraltro, credo sia pure più semplice fare quello che dici te!

    Allora, partiamo dalla tabella e ragiona per step successivi: non incasinare da subito le query e le funzionalità della pagina.
    La tua tabella sarà del tipo:
    codice:
    id INT UNSIGNED NOT NULL AUTO_INCREMENT
    squadra VARCHAR(100)
    punti INT UNSIGNED NOT NULL DEFAULT 0
    gol_fatti INT UNSIGNED NOT NULL DEFAULT 0
    gol_subiti INT UNSIGNED NOT NULL DEFAULT 0
    infortuni INT UNSIGNED NOT NULL DEFAULT 0
    // eccetera
    La query di base, quella che farai vedere per prima ai tuoi utenti, può essere del tipo:
    codice:
    SELECT 
       squadra, 
       punti, 
       gol_fatti, 
       gol_subiti, 
       infortuni
    FROM
       nome_tabella
    ORDER BY
       punti DESC,
       squadra ASC
    Quello che fa la query è restituire i campi specificati in SELECT e restituirli in ordine di punti decrescenti (dal maggiore al minore) e di ordine alfabetico crescente (a parità di punti la squadra la cui iniziale è A verrà mostrata prima di quella con iniziale B).

    Quello che potranno fare i tuoi utenti sarà modificare l'ordine, per cui devi rendere dinamica la parte ORDER BY della query.
    Farai tanti link quante sono le possibilità di ordine che vuoi permettere ai tuoi utenti.
    La pagina che intercetta il link farà in modo di modificare dinamicamente la query e di restituirne il risultato.

    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2012
    Messaggi
    8
    Si così dovrebbe andare!
    Grazie mille alcio sei stato gentilissimo!

  6. #6
    La sua soddisfazione è il nostro miglior premio!
    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

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.