Combobox per la modifica di un dato già esistente

di il
3 risposte

Combobox per la modifica di un dato già esistente

Ciao e bentrovati,
sono nuovo del forum, ho letto il regolamento e spero di non commettere errori.

Sono un consulente per alcune aziende e mi occupo dil progettare e realizzare supporti gestionali personalizzati. Generalmente utilizzo mysql come BE e access come FE.

Ho iniziato da poco a sviluppare una webapp in html e php per un piccolo progetto di contabilità e vorrei approfondire la conoscenza per realizzare FE multipiattaforma. La webapp è collegata ad un db mysql che si trova su un VPS. Ho realizzato una pagina che visualizza i campi di tutti i record della tabella uscite (id, data, importo, descrizione, id_categoria), cliccando sul pulsante “edit” presente su ogni record, è possibile aprire il form del singolo record quindi della singola uscita, per modificarla.

Fin qui funziona tutto, quello che non riesco proprio a realizzare sul form, è una casella combinata (combobox) popolata dal contenuto del campo id_categoria della tabella uscite, che visualizzi il nome della categoria selezionata (non l'id) e che permetta la modifica tramite menù a tendina che mostra tutte le categorie della tabella categorie (id, categoria).

Tutto ciò che trovo su tag html (es. “select”) o script php per realizzare caselle combinate con menù a tendina, riguarda form per l'inserimento di dati con campi inizialmente vuoti, il controllo quindi non è associato o associabile ad un campo del db ma semplicemente raccoglie l'informazione da un elenco per poi inviarla. Con il form accedo a record già popolati ed ho la necessità inizialmente di visualizzare il valore del campo e poi occasionalmente di modificarlo da menù a tendina… ma forse qui sto sbagliando la logica di funzionamento che immagino simile alla casella combinata di access e questo potrebbe impedirmi di trovare la soluzione.

Forse la cosa è così banale che non viene discussa, sapreste darmi un'indicazione su cosa cercare o dove cercare? 
Vi risparmio il codice ancora molto rozzo e rudimentale anche perché credo che non sia di nessuna utilità.

Grazie in anticipo, ogni suggerimento e consiglio sarà più che gradito.

3 Risposte

  • Re: Combobox per la modifica di un dato già esistente

    Ciao Lord e grazie per la risposta,

    hai descritto perfettamente la situazione.

    Cosa ho fatto: 

    1. query sul db per popolare il form (SELECT id, data, importo, descrizione, id_categoria FROM tabella_uscite)
    2. query sul db per popolare la select (SELECT id, categoria FROM tabella_categorie)
    3. fetch dei risultati e ciclo per popolare la tendina con “id” come valore e “categoria” visualizzato

    Cosa manca: popolare la select o casella combinata o combobox "categoria" con il valore presente sul db al momento che viene interrogato

  • Re: Combobox per la modifica di un dato già esistente

    Esattamente! Hai centrato il problema.

    Quindi facendo un passettino oltre, quello che non riesci a fare è impostare come valore visualizzato -già selezionato di partenza- quello dello specifico record in esame? Cioé ti serve: il valore presente nel db come “voce attiva” e tutti i valori possibili come “resto della tendina”?

    lo dicevo, è così banale che non c'è traccia sul web. Se ho ben capito mi stai dicendo che si può ottenere il risultato desiderato impostando come valore predefinito della casella combinata il valore del campo “id_categoria”, giusto?

  • Re: Combobox per la modifica di un dato già esistente

    Iniziamo col popolare il menu a tendina con le categorie dal tuo database MySQL. Puoi fare ciò utilizzando PHP per recuperare le categorie dal database e generare le opzioni per il menu a tendina. Ad esempio: 

    <?php
    // Connessione al database (assumendo che tu abbia già una connessione)

    // Query per selezionare tutte le categorie dalla tabella categorie
    $query = "SELECT id, categoria FROM categorie";

    // Eseguire la query
    $result = mysqli_query($conn, $query);
    ?>
    <select name="categoria">
    <?php
    // Genera le opzioni per il menu a tendina
    while ($row = mysqli_fetch_assoc($result)) {
       echo "<option value='" . $row['id'] . "'>" . $row['categoria'] . "</option>";
    }
    ?>
    </select>

    Quando carichi il form per la modifica di un record esistente in un report aziendale, assicurati di impostare il valore selezionato nel menu a tendina in base all'ID della categoria associata al record. Ad esempio:

    $record_id = $_GET['record_id']; // Sostituisci con il modo in cui ottieni l'ID del record $query = "SELECT id, data, importo, descrizione, id_categoria FROM uscite WHERE id = $record_id"; $result = mysqli_query($conn, $query); $row = mysqli_fetch_assoc($result); $selected_category_id = $row['id_categoria']; // ... ?> <select name="categoria">

    <?php while ($category_row = mysqli_fetch_assoc($category_result)) { $category_id = $category_row['id']; $selected = ($category_id == $selected_category_id) ? 'selected' : ''; echo "<option value='$category_id' $selected>" . $category_row['categoria'] . "</option>"; } ?> </select>

    Quando il modulo viene inviato, dovrai gestire l'aggiornamento nel database con il nuovo ID della categoria selezionata.

    Questo è solo un esempio di come puoi affrontare la situazione in un report aziendale. Assicurati di personalizzare il codice in base alle tue esigenze specifiche e di includere tutte le misure di sicurezza necessarie per evitare SQL injection e altri problemi di sicurezza.

Devi accedere o registrarti per scrivere nel forum
3 risposte