+ Rispondi alla Discussione
Risultati da 1 a 6 di 6

Ordinamento dinamico degli elementi visualizzati

Ultimo Messaggio di html5today il:
  1. #1
    Utente Premium L'avatar di felino
    Data Registrazione
    Nov 2009
    Località
    Acicatena - Catania
    Messaggi
    1,786
    Aggiungi felino su Facebook Aggiungi felino su Linkedin

    Ordinamento dinamico degli elementi visualizzati

    Sera!

    Ho realizzato un semplicissima pagina PHP con la quale visualizzo i record presenti nel database, supponiamo:
    Codice PHP:
    mysql_query("SELECT * FROM tabella ORDER BY rand()"); 
    All'utente, vorrei dare la possibilità di cambiare il tipo di ordinamento es.
    - ORDER BY id DESC
    - ORDER BY price
    - ORDER BY name
    etc...

    Come faccio a realizzarlo senza che la pagina venga ricarica e quindi con un refresh della visualizzazione degli elementi secondo l'ordinamento scelto?

    Grazie.

  2. #2
    Utente Premium
    Data Registrazione
    Sep 2007
    Località
    Borgo Stazione
    Messaggi
    123
    Ciao, Felino.

    Permettimi di notare come questo thread sia estremamente collegato con il tuo precedente.

    Ridescrivendo il problema, tu vorresti caricare in una sola chiamata tutte le voci che ti interessa visualizzare, poi lasciare al client la possibilità di effettuare il riordino e il paging? Sarebbe estremamente efficace l'utilizzo, ma se hai una lista lunga qualche migliaio di righe il problema sarebbe che poi si allunga il tempo di caricamento. Posto in questi termini non è comunque un problema PHP.

    Diverso è il discorso se lo vuoi fare in Ajax: immagina di aggiornare per ogni comando non tutta la pagina ma i soli dati da visualizzare in un determinato momento.

    A te la scelta.

  3. #3
    Utente Premium L'avatar di felino
    Data Registrazione
    Nov 2009
    Località
    Acicatena - Catania
    Messaggi
    1,786
    Aggiungi felino su Facebook Aggiungi felino su Linkedin
    Si diciamo di si...io voglio dare la possibilità di avere:
    - una paginazione degli elementi che devo visualizzare con l'opzione di default, cioè ORDER BY ID DESC;
    - la possibilità di effettuare un ordinamento degli elementi per prezzo, nome, etc...mantenendo sempre la paginazione presente.

  4. #4
    Utente Premium L'avatar di felino
    Data Registrazione
    Nov 2009
    Località
    Acicatena - Catania
    Messaggi
    1,786
    Aggiungi felino su Facebook Aggiungi felino su Linkedin
    Qualche suggerimento in merito alla realizzazione?
    Anche un bozza di codice o un esempio sarebbe molto utile.

    Grazie.

  5. #5
    Utente Premium
    Data Registrazione
    Sep 2007
    Località
    Borgo Stazione
    Messaggi
    123
    Purtroppo non ho niente di pronto.

    Se vuoi fare l'ordinamento da mysql allora la soluzione è Ajax.

    Devi organizzare la tua pagina in due parti: nella principale metti le chiamate ai css e javascript, i comandi e tutto quanto deve rimanere comunque visualizzato, la secondaria genererà il markup della lista visualizzata di volta in volta.

    Quindi in javascript provvedi a ricaricare di volta in volta la parte variabile. Per questo puoi utilizzare le funzioni previste in librerie come jQuery o Prototype.

    So che non ti ho detto molto, ma spero che ti sia utile.

  6. #6
    Utente Premium L'avatar di html5today
    Data Registrazione
    Dec 2010
    Località
    Roma
    Messaggi
    153
    Se tu non vuoi perdere la paginazione (ma ti va bene ricaricare la pagina) basta che metti il numero della pagina in cui ti trovi nel link che ricarica la pagina con un nuovo criterio di ordinamento e ricarichi la pagina.

    Insomma una roba del genere:
    Codice HTML:
    <a href="pagina.php?order=nome&start=1">ordina per nome</a> | <a href="pagina.php?order=rand&start=1">ordina a caso</a>
    e poi nel tuo script "pagina.php" avrai una roba tipo
    Codice PHP:
    if ($_GET['order'] == 'nome')
    {
        
    $orderby 'nome';
    }
    // ... le altre possibilità di ordinamento ...
    else
    {
        
    $orderby 'RAND()';
    }
    // ipotizzando che vuoi mostrare 20 record per "pagina"
    mysql_query('SELECT * FROM tabella ORDER BY ' $orderby ' LIMIT ' intval($_GET['start'] * 20) . ', 20'); 
    HTH, ciao!

+ Rispondi alla Discussione

Tag per Questa Discussione

^ Permessi di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  •  
  • Il codice BB è Attivato
  • Le faccine sono Attivato
  • Il codice [IMG] è Attivato
  • Il codice [VIDEO] è Attivato
  • Il codice HTML è Disattivato
  • Trackbacks Attivato
  • Pingback Attivato
  • Refback Attivato

SEO by vBSEO 3.6.0 PL2 ©2011, Crawlability, Inc.