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

    Edit di più righe con textbox e form

    Buonasera a tutti,
    da qualche giorno sto cercando di trovare una soluzione ad una particolare esigenza, sicuramente di facile realizzazione per i più esperti ma assolutamente cervellotica per il sottoscritto, alle prese con php+mysql solo da un paio di giorni.

    Tramite un parametro passato da una form estraggo mediante query mysql una serie di risultati, i quali vengono opportunamente mostrati in una tabella multiriga.
    Ogni riga dovrebbe avere in una colonna un campo modificabile (textbox), già precompilato dopo l'esecuzione del "post" con il rispettivo dato presente nel database. La mia necessità è di poter modificare i dati nella textbox, ed aggiornare tutti i record nella tabella del database alla pressione di un secondo pulsante con funzione "post".
    Ho seguito questo tutorial, ma lo script semplicemente non funziona (a dire il vero nessuno degli script di quel sito funzia, ma non ho trovato di meglio ). Ho tentato di correggerlo senza successo, sono davvero agli inizi

    Grazie!

  2. #2
    E' sufficiente che esegui una query di UPDATE per ogni campo che invii allo script.

    Come ricevi i dati dalla form/tabella (es. il risultato di print_r($_POST))?

  3. #3
    Ecco il codice:

    Codice PHP:
    // parte di codice eseguita solo dopo invio di form A (non visibile nel codice qui ricopiato)
    // viene utilizzata una variabile di sessione, in modo che vengano mostrati solo i risultati appartenenti all'utente loggato

    $result mysql_query("SELECT * FROM inserimenti WHERE rd_codforn = '{$_SESSION['sess_rd_codforn']}' AND rd_progr = {$_POST['progressivo']} AND rd_elab = 0"$db) or die(mysql_error());
            
    $count =mysql_num_rows($result);

    // se la query restituisce risultati allora mostra la form B

            
    if (mysql_num_rows($result) > 0
                {
                    echo 
    '<table width = "500px">';
                    echo 
    '<tr><th>Codice fornitore</th><th>Codice progressivo</th><th>Articolo</th><th>Quantita</th><th>Prezzo</th></tr>';
                    echo 
    '<form method = "post">';

    // ciclo che mostra i risultati

                    
    while ($records_progressivo mysql_fetch_array($result))
                        {
                            echo 
    '<tr>';
                            echo 
    '<td>' $records_progressivo['rd_codforn'] . '</td>';
                            echo 
    '<td>' $records_progressivo['rd_progr'] . '</td>';
                            echo 
    '<td>' $records_progressivo['rd_art'] . '</td>';
                            echo 
    '<td>' $records_progressivo['rd_qta'] . '</td>';
                            echo 
    '<td><input name="' $records_progressivo['rd_sysid'] . '" type ="text" id="' $records_progressivo['rd_sysid'] . '" value="' $records_progressivo['rd_prezzo'] . '"></td>';
                            echo 
    '</tr>';
                        }     
                    echo 
    '</table>';
                    echo 
    '
    '
    ;

    // pulsante invio dati form B 

                    
    echo '<input name="inviaprezzi" type="submit" id="inviaprezzi" value="Conferma"></form>';
                    echo 
    '

    '
    ;
                }
            else
                {
                echo 
    "nessun record trovato appartenente all'utente";
                }

    // seguirà parte di codice finale (form A) 
    In modo particolare non so come comportarmi quando creo l'array che mostra i risultati in tabella. Popolare le textbox con i dati che pesca dal database non è un problema, ciò che non riesco a fare è, con il comando post, di inviare i nuovi dati scritti nelle textbox al database. In qualche esempio online ho visto che le id e i nomi dei campi della form vengono definiti mediante array che sembrano vuoti, tipo nome[], ma non ho idea del motivo di tale scelta.

    La mia niubbaggine, anche nella spiegazione, è evidente

  4. #4
    Come ricevi i dati dalla form/tabella (es. il risultato di print_r($_POST))?

  5. #5
    Originariamente inviato da filippo.toso
    Come ricevi i dati dalla form/tabella (es. il risultato di print_r($_POST))?
    questo è quello che mi stampa il comando da te suggerito:

    Array ( [progressivo] => 1 [show] => Mostra risultati )

  6. #6
    I valori che hai indicato non sembrerebbero essere quelli giusti. Mancano il campo inviaprezzi ed i vari campi chiamati $records_progressivo['rd_sysid'].

    Comuque, studiati questo codice:

    Codice PHP:
    <?php

    $values 
    = array();

    $values[1] = 'A';
    $values[2] = 'B';
    $values[3] = 'C';

    echo(
    '<form method="post">');

    foreach (
    $values as $id => $value) {
        
    $value htmlentities($value);
        echo(
    "<input type='text' name='values[$id]' value='$value' />
    "
    );
    }

    echo(
    '<input type="submit" />');
    echo(
    '</form>');

    echo(
    '<pre>');
    print_r($_POST);

    if (isset(
    $_POST['values'] )&& is_array($_POST['values'])) {
        foreach (
    $_POST['values'] as $id => $value) {
            
    $id addslashes($id);
            
    $value addslashes($value);
            
    $sql "UPDATE table SET value = '$value' WHERE id = $id";
            echo(
    "$sql\r\n");
        }
    }

    echo(
    '</pre>');

    ?>
    N.B. Ho utilizzato addslashes() invece di mysql_real_escape_string() e simili solo come esempio.

  7. #7
    Grazie Filippo, la tua celerità è incredibile.
    Il codice pare proprio fare al caso mio, ora me lo studio per bene, spero di poter tornare a postare con la soluzione per chi leggerà

    Grazie di nuovo

  8. #8
    Ho smaneggiato un po' con il codice di filippo, un po' appoggiandomi a questo tutorial ed ho risolto! Evviva, grazie a tutti

    tutorial: http://www.theblog.ca/update-multiple-rows-mysql

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.