Ordinare visualizzazione record tramite form con input "text"

Madera

Nuovo Utente
25 Giu 2014
10
0
0
Ciao a tutti!
Chiedo a chi ne sa più di me (visto che io non sono proprio un esperto direi) una mano per risolvere il mio problema.

Ho una pagina in php che mi restituisce dei valori di un db (mysql) filtrati in base ad un campo check, quindi in base se il valore e 0 o 1 vengono visualizzati o meno.

Adesso vorrei poter dare la possibilità di ordinare a scelta i campi visualizzati e pensavo, salvo che non ci siano soluzioni più facili e immediate, di aggiungere un campo input dove poter inserire un numero che servisse per stabilire l'ordine, in modo da dare alla mia query ORDER BY "campo_ordine".
Diciamo che ci saranno due file, uno che mostra il risultato e l'altro che funziona come amministrazione.

Per spiegarmi meglio, vi faccio un esempio:

la tabella mi restituisce questi valori (id, nome, colore)

1 Pippo Verde
2 Topolino Bianco
3 Paperino Rosso

Ordinati in questo modo. Io vorrei aggiungere ai record un campo input (e fin qui dovrei farcela) e un tasto "aggiorna"

1 Pippo Verde [ ]
2 Topolino Bianco [ ]
3 Paperino Rosso [ ]
[aggiorna]

Praticamente vorrei che in base al numero che scrivo nei vari input l'ordine venga cambiato, quindi la mia idea sarebbe quella di fare un controllo sul campo ID o sul campo NOME (tanto non ci saranno nomi uguali) e che venisse tramite INSERT inserito il valore nel campo "campo_ordine" della tabella in modo da far funzionare l'ORDER BY della mia query.

Come posso gestire la cosa? Come posso far fare un controllo in modo che ad ID o NOME uguale venga inserito il numero dell'input text?

Ringrazio anticipatamente tutti per la disponibilità, ogni aiuto è ben accetto :byebye:!
 

Night Assassin

Utente Attivo
16 Mar 2013
200
0
0
Crei un form e ogni riga estratta crei l'input text con name l'id della riga. il tasto aggiorna sarà un semplice bottone di invio del form.
Nella pagina in cui aggiorni i dati fai lo stesso ciclo che hai fatto in estrazione e aggiorni i dati con $_POST[$id] dove id é l'id della riga in corso. (la query é un semplice update con where sull'id)
Spero di essermi fatto capire.

Inviato con Tapatalk Free da Android
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
Esattamente come dice Night Assassin
visto che avevo preparato uno schema te lo posto
PHP:
<?php
$sql = new mysqli("localhost", "root", "password", "database");

if (isset($_POST['aggiorna']) && $_POST['aggiorna'] == "Aggiorna") {
    unset($_POST['aggiorna']);
    foreach ($_POST as $key => $value) {
        $query = "UPDATE tabella SET ordine = " . (int) $value . " WHERE id = " . $key;
        $sql->query($query);
    }
}
$query = "SELECT * FROM tabella ORDER BY ordine";
$result = $sql->query($query);
?>
<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
    <table>
        <tr>
            <th>id</th>
            <th>nome</th>
            <th>ordine</th>
        </tr>
        <?php
        while ($row = $result->fetch_array(MYSQLI_ASSOC)) {
            echo "<tr>";
            echo "<td>" . $row['id'] . "</td>";
            echo "<td>" . $row['campo_uno'] . "</td>";
            echo "<td><input size='2' type='text' name='" . $row['id'] . "' value='" . $row['ordine'] . "'/>";
            echo "</tr>";
        }
        ?>
    </table>
    <input type="submit" name="aggiorna" value="Aggiorna"/>
</form>