Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    Creare lista ordinabile

    Salve, vorrei sapere come poter creare una lista che è ordinabile tramite due bottoni + e -, mi spiego.

    Joomla permette l'ordinamento p.es. delle sezioni mediante due frecce su e giu

    Dato 1 [+][-] [1]
    Dato 2 [+][-] [2]
    Dato 3 [+][-] [3]
    Dato 4 [+][-] [4]

    Se si preme + la pagina si ricarica e l'ordine di un dato viene spostato di un livello superiore, viceversa se si preme il bottone -

    Sono riuscito a impostare per ogni dato inserito un ordine e visualizzo in una griglia disposti per ordine ascendente. Ora vorrei inserire i bottoni + e - e se si clicca su uno di essi venga riaggiornata la griglia. come potrei fare?

    Codice PHP:
    echo '<form action="elaborazione.php" method="post">
    <table>'
    ;
    $query "SELECT id, data, orderFROM table ORDER BY order ASC";
    $results mysql_query($query);
    while(
    $row mysql_fetch_array($results)) {
    echo 
    "<tr><td>" $row['data'] . "</td><td><input type="text" value=\"" $row['order'] . "\" /></td></tr>";
    }

    echo 
    '</table>
    </form>'

    La rovina del mondo sara' l'indifferenza. Ma chi se ne frega!!

  2. #2
    Ciao, devi agire direttamente sulla query al database.
    Puoi ordinare i dati in senso crescente e decrescente, per ogni colonna del database.
    In pratica, mettiamo che vuoi ordinare i tuoi dati in senso crescente o decrescente sulla base dell'id riga ecco cosa ti consiglio di fare:


    Codice PHP:
    // Recuperi dinamicamente il nome della pagina
    $nome_pagina $_SERVER['PHP_SELF'];

    // Per ogni colonna del database sulla base della quale vuoi ordinare i dati crei un link come questo

    echo "<a href=\"$nome_pagina?ord=id_rigac\" title=\"Ordinamento crescente\">+</a>ID RIGA<a href=\"$nome_pagina?ord=id_rigad\" title=\"Ordinamento decrescente\">-</a>";

    // Recupero con post il nome del campo del db sulla base del quale ordinare i dati e il tipo di ordinamento (crescente o decrescente)
    if(isset($_GET["ord"])){
         
    $get $_GET["ord"];
         if(
    $get == "id_rigac"){
              
    $ordinamento "id_riga ASC";
         }elseif(
    $get == "id_rigad"){
              
    $ordinamento "id_riga DESC";
         }
    }

    // Eseguo la query
    $query "SELECT id, data, orderFROM table ORDER BY $ordinamento"

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2000
    residenza
    Edinburgh
    Messaggi
    401
    Penso che lui voglia fare una cosa diversa...

    Personalmente ti consiglierei di usare dei links invece di un form

    Metti dei link ad una pagina tipo cambiaordine.php?act=up&num=3 che poi ti ridireziona alla pag con la lista

    Codice PHP:
    <?
    $num 
    = (int)$_GET['num'];
    $act $_GET['up'];
    if (
    $act == 'up')
       {
       if (
    $num 0)  // Non possiamo spingere in su il primo
          
    {
          
    // Update tabella
          
    }
       }
    elseif (
    $act == 'down')
       {
       if (
    $num $max)   // Dovrai trovare max in qualche modo
           
    {
           
    // Update tabella
           
    }
       }

    header("Location: paginalista.php");
    ?>
    Un'altra opzione potrebbe essere quella di cambiare l'ordine delle righe via Javascript (quindi client-side) e poi quando l'utente ha finito fare un submit del nuovo ordine. In questo modo eviti di sovraccaricare di richieste il DB (poi tutto dipende, ovviamente, da quanto spesso viene fatta questa cosa).

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.