Visualizzazione risultati 1 fino 4 di 4

Discussione: Update multiplo di dati modificati via form

  1. #1
    L'avatar di dampyr
    dampyr non è connesso Utente giovane
    Data registrazione
    07-02-2011
    Residenza
    Tra Bari e Taranto
    Messaggi
    88

    Unhappy Update multiplo di dati modificati via form

    Salve! Sto costruendo un pannello di gestione via pagina web PHP per modificare dati in un db SQL.
    Qualche dettaglio prima di esporre il problema, dato che mi sembra un po' complesso.

    L'intero database è costituito da tre tabelle con medesima struttura (stesso numero di colonne, con nomi analoghi, contenenti i dati relativi alle storie presenti in serie a fumetti. Un albo è individuato tramite la tabella che è il nome della serie, un anno di pubblicazione e un numero progressivo che per ogni anno ricomincia da 1. Ogni numero di ogni anno quindi intercetta alcune righe della tabella.
    Esempio: accedo al numero $numero=5 dell'anno $anno=1980 della tabella=$mensili attraverso un "SELECT * FROM $mensili WHERE Anno=$anno AND Numero=$numero ORDER BY Id ASC". Ottengo una certa quantità di dati che organizzo con un semplice while in una griglia ordinata all'interno di un <form> che invoca una pagina modifica.php passandogli i dati via POST.

    Il problema sorge dal momento che, se da un lato riesco facilmente a richiamare il blocco di informazioni da una data tabella di un dato anno con un dato numero e inserirle come value in appositi moduli <input> editabili, non so come inviare il blocco di modifiche alla tabella attraverso modifica.php, dal momento che ogni campo input relativo all'autore ha name='autore' per ogni replica del ciclo while, analogamente il campo titolo ha name='titolo', quindi non so come trasmettere tutti i dati alla tabella nell'esatta riga dato che perdo gli id di ogni campo, e mi ritrovo dei dati omonimi.

    La pagina PHP mi carica, per esempio, cinque titoli da quel SELECT, ma io devo modificare/integrare il campo Titolo della seconda voce e l'Autore della quarta... Sto cercando una soluzione ma non trovo qualcosa che faccia al caso mio, a parte introdurre un <button> "Invia modifiche" per ciascuna riga di dati. Ho considerato di dare ai vari campi input un name tipo 'autore'.$id, ma poi?

    Su singola riga di tabella procedo tranquillamente poiché con WHERE intercetto dove procedere, ma con più righe mi perdo, o probabilmente non so cosa cercare dato che sono fermo da tre giorni su questo punto che è l'ultimo dato che la parte front end del sito è terminata, con tutte le chiamate al db perfettamente funzionanti.

    Il while, alleggerito dei blocchi div per dare decenza alla pagina è al momento questo:
    Codice PHP:
    while ($riga mysqli_fetch_array($conta)) {
        
    $id=$riga['Id'];
        
    $autori=$riga['Autori'];
        
    $protagonista=$riga['Protagonista'];
        
    $titolo=$riga['Titolo'];
        
    // altre variabili
        
    echo "<input type='text' name='autori' size='12' value='$autori'>";
        echo 
    "<input type='text' name='protagonista' size='12' value='$protagonista'>";
        echo 
    "<input type='text' name='titolo' size='12' value='$titolo'>";
        
    // eccetera per tutte le variabili
        
    echo "<hr color='#f75740'>";


  2. #2
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,689

    Predefinito

    Aggiungi un campo di tipo hidden per passare l'id di ciascuno dei record:
    Codice PHP:
    echo "<input type='hidden' name='id' value='$id'>";
    echo 
    "<input type='text' name='autori' size='12' value='$autori'>";
    echo 
    "<input type='text' name='protagonista' size='12' value='$protagonista'>";
    echo 
    "<input type='text' name='titolo' size='12' value='$titolo'>";
    ... 
    in questo modo la pagina di arrivo avrà a disposizione l'id per identificare la riga su cui intervenire.

    Se non l'hai già fatto, crea un form separato per ogni record. Potrai modificarne uno alla volta, una modifica di gruppo sarebbe inusuale e complicata da realizzare. Se vuoi dare l'illusione di interattività puoi sempre utilizzare AJAX per far sì che le modifiche avvengano in tempo reale.

    I suggerimenti che do più spesso:


  3. #3
    L'avatar di dampyr
    dampyr non è connesso Utente giovane
    Data registrazione
    07-02-2011
    Residenza
    Tra Bari e Taranto
    Messaggi
    88

    Predefinito

    Per form separati intendi che ogni riga della tabella abbia un proprio button di invio modifiche nella medesima pagina? Potrebbe andare, specie se mi dici che la modifica di gruppo è complicata. Ovviamente mi conviene usare un target="_blank" negli attributi del form, così se devo modificare più righe ce le ho pronte.

    Ok, mi metto all'opera!
    Grazie mille!

  4. #4
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,689

    Predefinito

    Sì, intendevo così.
    Puoi usare un target="_blank", probabilmente è la via più semplice.
    In alternativa puoi usare AJAX, oppure far sì che venga ricaricata la pagina stessa.

    I suggerimenti che do più spesso:


Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •