Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it L'avatar di semolino
    Registrato dal
    Nov 2004
    Messaggi
    1,499

    Riordinare i record dopo essere stati estratti

    Estraggo dei dati che vengono stampati uno sotto l'altro.
    Il cliente vorrebbe avere dei campi testo (uno per ogni record) in modo tale da mettere delle numerazioni e poi, dopo aver inviato il form, inserisco quei valori all'interno del database. Su questi numeri imposto l'ordine di estrazione.
    Come posso realizzare una cosa del genere? C'è un modo più semplice?

  2. #2
    Utente di HTML.it L'avatar di semolino
    Registrato dal
    Nov 2004
    Messaggi
    1,499
    Dunque ho impostato un form in questo modo.
    Codice PHP:
    echo "<form name=\"modifica\" method=\"post\" action=\"".$_SERVER['PHP_SELF']."\">
                     <input name=\"cosafaccio\" type=\"hidden\" value=\"riordina\" />"
    ;
                    while (
    $row mysql_fetch_array($sort)) {
                    echo 
    "<input name=\"id_art\" type=\"hidden\" value=\"".$row['id_art']."\" />
                     "
    .$row['titolo']."<input value=\"ordine_".$row['id_art']."\" type=\"text\" name=\"ordine\" size=\"3\" />
                    }

                     echo "
    <input type=\"image\" src=\"$arrow\" width='12' name=\"ordina\" value=\"ordina\" alt=\"Riordina\" /></form>
    "

    Ora quando invio dovrei memorizzare in un Array tutti i valori di <input value=\"ordine_".$row['id_art']."\">?

    In questo modo, con l'id, potrei capire a quale record si riferisce.
    Però come imposto il SET del campo all'interno del DB?
    Devo cercare ongi riga con qull'ID ed inserire il valore del campo di riferimento.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    595
    Il modo migliore è che ci sia un campo "ordervalue" all'interno della tabella
    Io uso questo modo per la visualizzazione dei moduli nel CMS che sto costruendo... un campo "ordervalue" che mi dice appunto quale è il modulo da visualizzare prima (ad esempio in un elenco di moduli presente sulla colonna: login,mainmenu ecc); questo mi consente di modificare l'ordine senza dover toccare le pagine aggiungendo semplicemnte "order by ordervalue" al query che estrae i moduli da visualizzare

    Se per qualche motivo non ti è possibile aggiungere un campo alla tabella, puoi crearne un'altra
    Ti faccio un esempio

    Tabella prodotti
    id
    descrizione
    prezzo

    Tabella ordinevisualizzazione
    id_prodotto
    ordervalue

    Query per selezionare i prodotti nell'ordine indicato nella seconda tabella

    "SELECT * from prodotti as P, ordinevisualizzazione as O WHERE O.id_prodotto = P.id ORDER BY O.ordervalue"

    In questo modo, aggiornando il valore di "ordervalue" sulla tabella "ordinevisualizzazione" cambi la sequenza di visualizzazione senza toccare altro

  4. #4
    Utente di HTML.it L'avatar di polinet
    Registrato dal
    Nov 2000
    Messaggi
    993
    potresti fare cosi, se vuoi dare un ordine ai tuoi record.
    Sempre nella tua tabella metti un campo (per esempio ORD)
    poi all'interno del ciclo while metti:
    Codice PHP:
    <select name="ord[<?= $riga['id']; ?>]">
        <?php
            
    for ($k=1$k<$nr+$k++)
            {
            echo 
    "<option value=\"$k\"";
            if(
    $k==$riga['ord']) echo "selected";
            echo 
    ">$k</option>\n";
            }

    ?>
    </select>
    in questo modo dai un ordine ai tuoi record, allo stesso tempo visualizzi la loro posizione e con un semplicissimo form aggiorni le posizioni.

    facci sapere.

    ¿Hasta la pasta?

  5. #5
    Utente di HTML.it L'avatar di semolino
    Registrato dal
    Nov 2004
    Messaggi
    1,499
    Originariamente inviato da polinet
    potresti fare cosi, se vuoi dare un ordine ai tuoi record.
    Sempre nella tua tabella metti un campo (per esempio ORD)
    poi all'interno del ciclo while metti:
    Codice PHP:
    <select name="ord[<?= $riga['id']; ?>]">
        <?php
            
    for ($k=1$k<$nr+$k++)
            {
            echo 
    "<option value=\"$k\"";
            if(
    $k==$riga['ord']) echo "selected";
            echo 
    ">$k</option>\n";
            }

    ?>
    </select>
    in questo modo dai un ordine ai tuoi record, allo stesso tempo visualizzi la loro posizione e con un semplicissimo form aggiorni le posizioni.

    facci sapere.

    Potresti darmi una spiegazione in più di questo codice?
    Questo mi serve esattamente per cosa?
    In che modo potrei aggiornare le posizioni?

  6. #6
    Utente di HTML.it L'avatar di polinet
    Registrato dal
    Nov 2000
    Messaggi
    993
    Ti faccio un esempio:
    Nella tua tabella inserisci un nuovo campo chiamato ORD (qui dove salverai la posizione del tuo record da visualizzare)

    <form name="ordina" action="ordina.php" method="post">
    Codice PHP:
    <?php
    // connessione al DB
    $sql "select * from tua tabella order by id";
    $result mysql_db_query$database$sql$db) or die(mysql_error());
    $nr=mysql_num_rows($result);
    echo 
    "<table width=100%><tr>";
    echo 
    "<td>primo campo</td><td>posizione record</td><td>terzo campo</td></tr>";
    while(
    $riga=mysql_fetch_array($result))
    {
    echo 
    "<tr>";
    echo 
    "<td>".$riga["primo campo"]."</td>";
    echo 
    "<td>";
    ?>
    <select name="ord[<?= $riga['id']; ?>]">
        <?php
            
    for ($k=1$k<$nr+$k++)
            {
            echo 
    "<option value=\"$k\"";
            if(
    $k==$riga['ord']) echo "selected";
            echo 
    ">$k</option>\n";
            }
        
    ?>
        </select>
    <?php
    echo "</td>";
    echo 
    "<td>".$riga["terzo campo"].</td>";
    echo "
    </tr>";
    }
    echo "
    </table>";
    ?>
    <input type="submit" name="invia" value="invia">
    </form>

    In questo modo per ogni riga del tuo record hai un menu a tendina dove inserirai la posizione del tuo record.

    Il form lo invii al file: ordina.php
    Codice PHP:
    <?php
    // connessione al DB
    if(isset($_POST['ord'])){
        while(list(
    $key,$val)=each($_POST['ord'])){
            
    $sql " UPDATE TABELLA set ord = $val where id = $key";
            
    $ordina mysql_db_query$nome_db$sql$db) or die(mysql_error());
        }
    }
    echo 
    "ordine aggiornato";
    ?>
    Io utilizzo questo metodo per assegnare la posizione ai record.
    POI la query che li visualizza la farai:
    ..... order by ORD DESC

    Naturalmente questa e`una pagina riservata ADMIN
    Spero di essermi spiegato bene, se hai problemi posta qui.
    Ciao
    ¿Hasta la pasta?

  7. #7
    Utente di HTML.it L'avatar di semolino
    Registrato dal
    Nov 2004
    Messaggi
    1,499
    Perfettamente chiaro, ai primi test sembra funzionare...
    Nel caso ti tengo informato, grazie mille!

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.