Modificare e salvare dinamicamente contenuto di un campo input

di il
11 risposte

Modificare e salvare dinamicamente contenuto di un campo input

Buongiorno a tutti,
ho realizzato una pagina php che recupera e mostra a video delle informazioni che sono contenute in un database mysql, fin qui nessun problema.

La pagina che viene mostrata a video all'utente contiene un campo note, avrei la necessità di memorizzare le informazioni che l'utente inserisce nel campo note all'interno del database senza creare nessuna ulteriore pagina php.

Questa la pagina che si occupa di recuperare le info dal database, il campo su cui mi interessa intervenire è il campo identificato dalla variabile
$noterev

<?php
date_default_timezone_set('Europe/Rome');
require_once('function/date_day.php');

$veicolo='UNDEF';
$targa='UNDEF';
$cliente='UNDEF';
$tel='UNDEF';
$dtscrev='UNDEF';
$noterev='UNDEF';
$where='';

//var_dump($_GET['tipo']);
//exit;

if(isset($_GET['tipo']))$tipo = trim(strip_tags(stripslashes($_GET['tipo'])));
else echo 'Attenzione è stato riscontrato un errore contattare amministratore';

if ($tipo == "daeseguire"){
		$where = "WHERE YEAR(dtscrev) = YEAR(NOW()) AND MONTH(dtscrev)= MONTH(NOW()) AND DAY(dtscrev) >= DAY(NOW())";
}elseif($tipo == "scadute"){
		$where = "WHERE dtscrev < NOW()-1 AND dtscrev <> '0000-00-00'";
}


$query = "SELECT * FROM commesse $where GROUP BY targa ORDER BY dtscrev DESC LIMIT 10";
$oggetto =$mysqli->query($query);
$count = mysqli_num_rows($oggetto);

if ($count == 0) {

echo "<div class = 'container-ricerca-nulla'>";
echo "<div class ='row'><p class='btn btn-danger center-button'>Non sono presenti revisioni da eseguire</p></div>";
echo "</div>";

}else{

echo "<div class ='container-appuntamento'>";
echo "<table class='table table-striped table-responsive'>";
echo "<tr>";
echo "<th style='color:green'>Veicolo</th>";
echo "<th style='color:green'>Targa</th>";
echo "<th style='color:green'>Cliente</th>";
echo "<th style='color:green'>Telefono</th>";
echo "<th style='color:green'>Data Scadenza<br>Revisione</th>";
echo "<th style='color:red'>Note</th>";
echo "</tr>";


while($scorri_oggetto=$oggetto->fetch_assoc()){
$veicolo = mysqli_real_escape_string($mysqli, $scorri_oggetto['veicolo']);
$targa = mysqli_real_escape_string($mysqli, $scorri_oggetto['targa']);
$cliente = mysqli_real_escape_string($mysqli, $scorri_oggetto['cliente']);
$tel = mysqli_real_escape_string($mysqli, $scorri_oggetto['tel']);
$dtscrev = mysqli_real_escape_string($mysqli, $scorri_oggetto['dtscrev']);
$noterev = mysqli_real_escape_string($mysqli, $scorri_oggetto['noterev']);	


/* FILTRI e CONVERSIONI SULLE VARIABILI POST */
$cliente = trim(strip_tags(stripslashes($cliente)));
$cliente = str_replace('\r\n' , '<br>', $cliente);
$cliente = stripslashes($cliente);
$cliente = wordwrap($cliente,18,"<br>"); //MANDO A CAPO OGNI 18 CARATTERI

$noterev = trim(strip_tags(stripslashes($noterev)));
$noterev = str_replace('\r\n' , '<br>', $noterev);
$noterev = stripslashes($noterev);


$veicolo = trim(strip_tags(stripslashes($veicolo)));
$veicolo = str_replace('\r\n' , '<br>', $veicolo);

$dtscrev = strtotime($dtscrev);
$dtscrev = date('d/m/Y', $dtscrev);
?>

<tr>
<td style="text-align:left;"><?php echo $veicolo; ?></td>
<td style="text-align:left;"><?php echo $targa; ?></td>
<td style="text-align:left;"><?php echo $cliente; ?></td>
<td style="text-align:left;"><?php echo $tel; ?></td>
<td><?php echo data_it($dtscrev);?></td>
<td><input name="noterev" type="text" value="" size="63" maxlength="200" /></td>
</tr>

<?php
 }
echo "</table>";
echo "</div>";
}
?>
<div class="container-fluid">
<tr>
<td><button type="button" class="btn btn-success btn-bd btn-block">Memorizza nel database le note inserite</button></td>
</tr>
</div>


In sostanza, vorrei che alla pressione del button venisse effettuato un update di quanto scritto nel campo note del database mysql.

Spero di essere riuscito a farmi comprendere.

Grazie anticipatamente a tutti.

11 Risposte

  • Re: Modificare e salvare dinamicamente contenuto di un campo input

    Ciao,
    devi fare uno script in php che esegue l'update al DB. Lo script che andrai a creare lo richiami tramite jquery e ajax. Così facendo l'utente non vedrà nessun aggiornamento di pagina...

    Ciao
  • Re: Modificare e salvare dinamicamente contenuto di un campo input

    Ciao ho riscritto il codice con quello che serve di seguito il codice e la speigazione


    <form method="POST">
    <?php
    date_default_timezone_set('Europe/Rome');
    require_once('function/date_day.php');

    $veicolo='UNDEF';
    $targa='UNDEF';
    $cliente='UNDEF';
    $tel='UNDEF';
    $dtscrev='UNDEF';
    $noterev='UNDEF';
    $where='';

    //var_dump($_GET['tipo']);
    //exit;

    if(isset($_GET['tipo']))$tipo = trim(strip_tags(stripslashes($_GET['tipo'])));
    else echo 'Attenzione è stato riscontrato un errore contattare amministratore';

    if ($tipo == "daeseguire"){
    $where = "WHERE YEAR(dtscrev) = YEAR(NOW()) AND MONTH(dtscrev)= MONTH(NOW()) AND DAY(dtscrev) >= DAY(NOW())";
    }elseif($tipo == "scadute"){
    $where = "WHERE dtscrev < NOW()-1 AND dtscrev <> '0000-00-00'";
    }


    $query = "SELECT * FROM commesse $where GROUP BY targa ORDER BY dtscrev DESC LIMIT 10";
    $oggetto =$mysqli->query($query);
    $count = mysqli_num_rows($oggetto);

    if ($count == 0) {

    echo "<div class = 'container-ricerca-nulla'>";
    echo "<div class ='row'><p class='btn btn-danger center-button'>Non sono presenti revisioni da eseguire</p></div>";
    echo "</div>";

    }else{

    echo "<div class ='container-appuntamento'>";
    echo "<table class='table table-striped table-responsive'>";
    echo "<tr>";
    echo "<th style='color:green'>Veicolo</th>";
    echo "<th style='color:green'>Targa</th>";
    echo "<th style='color:green'>Cliente</th>";
    echo "<th style='color:green'>Telefono</th>";
    echo "<th style='color:green'>Data Scadenza<br>Revisione</th>";
    echo "<th style='color:red'>Note</th>";
    echo "</tr>";


    while($scorri_oggetto=$oggetto->fetch_assoc()){
    $veicolo = mysqli_real_escape_string($mysqli, $scorri_oggetto['veicolo']);
    $targa = mysqli_real_escape_string($mysqli, $scorri_oggetto['targa']);
    $cliente = mysqli_real_escape_string($mysqli, $scorri_oggetto['cliente']);
    $tel = mysqli_real_escape_string($mysqli, $scorri_oggetto['tel']);
    $dtscrev = mysqli_real_escape_string($mysqli, $scorri_oggetto['dtscrev']);
    $noterev = mysqli_real_escape_string($mysqli, $scorri_oggetto['noterev']);


    /* FILTRI e CONVERSIONI SULLE VARIABILI POST */
    $cliente = trim(strip_tags(stripslashes($cliente)));
    $cliente = str_replace('\r\n' , '<br>', $cliente);
    $cliente = stripslashes($cliente);
    $cliente = wordwrap($cliente,18,"<br>"); //MANDO A CAPO OGNI 18 CARATTERI

    $noterev = trim(strip_tags(stripslashes($noterev)));
    $noterev = str_replace('\r\n' , '<br>', $noterev);
    $noterev = stripslashes($noterev);


    $veicolo = trim(strip_tags(stripslashes($veicolo)));
    $veicolo = str_replace('\r\n' , '<br>', $veicolo);

    $dtscrev = strtotime($dtscrev);
    $dtscrev = date('d/m/Y', $dtscrev);
    ?>

    <tr>
    <td style="text-align:left;"><?php echo $veicolo; ?></td>
    <td style="text-align:left;"><?php echo $targa; ?></td>
    <td style="text-align:left;"><?php echo $cliente; ?></td>
    <td style="text-align:left;"><?php echo $tel; ?></td>
    <td><?php echo data_it($dtscrev);?></td>
    <td><input name="noterev" type="text" value="<?php echo $scorri_oggetto['noterev']; ?>" size="63" maxlength="200" /></td>
    </tr>

    <?php
    }
    echo "</table>";
    echo "</div>";
    }
    ?>
    <div class="container-fluid">
    <tr>
    <td><button type="button" class="btn btn-success btn-bd btn-block"><input type="hidden" name="aggiorna_noterev" value="ok"><input type="hidden" value="<?php echo $scorri_oggetto['id']; ?>" name="id_tabella" >Memorizza nel database le note inserite</button></td>
    </tr>
    </div>

    </form>

    <?php
    if (isset($_POST['aggiorna_noterev'])){
    $query="UPDATE commesse
    SET noterev='".$_POST['noterev']."'
    WHERE id='".$_POST['id_tabella']."' ";
    $oggetto =$mysqli->query($query);
    }
    ?>
  • Re: Modificare e salvare dinamicamente contenuto di un campo input

    Per prima cosa ho inserito un form prima del ciclo dei dati in maniera tale da non far ciclare il form e l ho chiuso alla fine dopo il ciclo.

    Ho inserito dei elemnti html di tipo input hidden dove dentro ho inserito i dati che mi servivano per passare al databse i giusti dati di aggiornamento , ho dato per scontato che nella tua tabella ci fosse il campo id autoincrementale in maniera tale da rintracciare la riga giusta sull'update.

    Poi ho inserito una query UPDATE di aggiornamento, ho anche inserito il value dentro l input text di noterev in maniera dale da visualizzarlo direttamente.
  • Re: Modificare e salvare dinamicamente contenuto di un campo input

    Per lo script php ok.
    Ora devi richiamare in jquery e ajax lo script php all'evento click di un bottone o form o al change del form o del campo input.

    Ciao
  • Re: Modificare e salvare dinamicamente contenuto di un campo input

    Buongiorno a tutti,
    grazie di vero cuore per il supporto che mi state fornendo, ho implementato il codice fornito, purtroppo manca solo qualche altro passaggio, al click del mouse sul pulsante " Memorizza nel database le note inserite ", non accade nulla, probabilmente perchè come scrive @cali non viene intercettato l'evento



    Per completezza:
    Nome della tabella nel database mysql: commesse
    Nome della colonna con il campo id autoincrementale: id_com

    Scusatemi ma senza il vostro supporto non penso di andar lontano e naturalmente grazie come sempre infinitamente
  • Re: Modificare e salvare dinamicamente contenuto di un campo input

    Ciao,
    nell' header devi inserire un codice simile a questo:
    
    <head>
    <script>
    $(document).ready(function(){
       $("#ID_FORM").submit(function(){
          
          var domenica= $("#ID_TUA_TEXTBOX").val(); //domenica è il nome che ho visto nello screen, ho semplicemente ripreso il nome della label, ma tu poi dare un nome a tuo piacimento. Se hai più textbox ho inserisci X variabili per quante solo le textbox o concateni la variabili lato client e lato server le splitti. Dove hai campi vuoti inserisci un carattere particolare o stringa così sai che il campo è vuoto e salti UPDATE oppure laschi così e quando incontri vuoto salti l'aggiornamento.
          
             if (domenica==""){
               alert ("Valorizzare il campo....");
               return false;
            }
          
          $.ajax({
             type: "POST", //metodo
             url: "TUO_FILE.php", //il tuo script
             data: {"dato": domenica}, //i dati che passi via post. Ho sempre inserito domenica come spiegato sopra, l'unica differenza è quando richiami 			il tuo script in PHP devi catturare il valore tramite metodo post con questa sintassi PHP ($tua_variabile= $_POST['dato'];)
             datatype: "html",
             contentType: 'application/x-www-form-urlencoded',
             timeout: 3000, //è il tempo di chiamata, se la chiamata va oltre i 3 secondi restituisce error.
             success: function (){
                alert ("Aggiornamento avvenuto con successo!!!");
             },        
             error: function(){
                 alert ("Chiamata fallita, si prega di riprovare....");
             }
          });
            
       });
       
    });
    </script>
    </head>
    
    Secondo metodo
    
    function invioDATI(){
    	var domenica= $("#ID_TUA_TEXTBOX").val();
    
             if (domenica==""){
               alert ("Valorizzare il campo....");
               return false;
            }
            
         $.ajax({
             type: "POST", //metodo
             url: "TUO_FILE.php", //il tuo script
             data: {"dato": domenica}, 
             datatype: "html",
             contentType: 'application/x-www-form-urlencoded',
             timeout: 3000, //è il tempo di chiamata, se la chiamata va oltre i 3 secondi restituisce error.
             success: function (){
                alert ("Aggiornamento avvenuto con successo!!!");
             },        
             error: function(){
                 alert ("Chiamata fallita, si prega di riprovare....");
             }
          });
    }
    
    
    <input type="button" name="button" id="button" value="Registra" onClick="invioDATI();">
    
    Ho scritto tutto a mano... potrei aver lasciato una graffa o una virgola.

    Spero di essere stato chiaro.

    Come ti ho spiegato nei commenti quante textbox hai? Hai una tabella con 10 righe per pagina? variano sempre?

    Cerca online come utilizzare jquery e ajax, trovi molti esempi.

    Ciao
  • Re: Modificare e salvare dinamicamente contenuto di un campo input

    cali ha scritto:


    Ciao,
    nell' header devi inserire un codice simile a questo:
    
    <head>
    <script>
    $(document).ready(function(){
       $("#ID_FORM").submit(function(){
          
          var domenica= $("#ID_TUA_TEXTBOX").val(); //domenica è il nome che ho visto nello screen, ho semplicemente ripreso il nome della label, ma tu poi dare un nome a tuo piacimento. Se hai più textbox ho inserisci X variabili per quante solo le textbox o concateni la variabili lato client e lato server le splitti. Dove hai campi vuoti inserisci un carattere particolare o stringa così sai che il campo è vuoto e salti UPDATE oppure laschi così e quando incontri vuoto salti l'aggiornamento.
          
             if (domenica==""){
               alert ("Valorizzare il campo....");
               return false;
            }
          
          $.ajax({
             type: "POST", //metodo
             url: "TUO_FILE.php", //il tuo script
             data: {"dato": domenica}, //i dati che passi via post. Ho sempre inserito domenica come spiegato sopra, l'unica differenza è quando richiami 			il tuo script in PHP devi catturare il valore tramite metodo post con questa sintassi PHP ($tua_variabile= $_POST['dato'];)
             datatype: "html",
             contentType: 'application/x-www-form-urlencoded',
             timeout: 3000, //è il tempo di chiamata, se la chiamata va oltre i 3 secondi restituisce error.
             success: function (){
                alert ("Aggiornamento avvenuto con successo!!!");
             },        
             error: function(){
                 alert ("Chiamata fallita, si prega di riprovare....");
             }
          });
            
       });
       
    });
    </script>
    </head>
    
    Secondo metodo
    
    function invioDATI(){
    	var domenica= $("#ID_TUA_TEXTBOX").val();
    
             if (domenica==""){
               alert ("Valorizzare il campo....");
               return false;
            }
            
         $.ajax({
             type: "POST", //metodo
             url: "TUO_FILE.php", //il tuo script
             data: {"dato": domenica}, 
             datatype: "html",
             contentType: 'application/x-www-form-urlencoded',
             timeout: 3000, //è il tempo di chiamata, se la chiamata va oltre i 3 secondi restituisce error.
             success: function (){
                alert ("Aggiornamento avvenuto con successo!!!");
             },        
             error: function(){
                 alert ("Chiamata fallita, si prega di riprovare....");
             }
          });
    }
    
    
    <input type="button" name="button" id="button" value="Registra" onClick="invioDATI();">
    
    Ho scritto tutto a mano... potrei aver lasciato una graffa o una virgola.

    Spero di essere stato chiaro.

    Come ti ho spiegato nei commenti quante textbox hai? Hai una tabella con 10 righe per pagina? variano sempre?

    Cerca online come utilizzare jquery e ajax, trovi molti esempi.

    Ciao
    Ciao Cali,
    mi chiedi quanti textbox ho, diciamo che il numero delle textbox è variabile perchè dipende quanti veicoli ci sono nel database che hanno data scadenza revisione nel mese in cui l'utente effettua l'interrogazione (pertanto tanto possono esserci 3 veicoli, tanto 18, tanto 20 ecc)

    Quando mi scrivi di indicare
    $("#ID_FORM").submit(function(){ ecc ecc
    ,
    considerato che nell'esempio di codice che mi hai inviato il form non ha un id, devo dichiararlo io è corretto ?
    
    <form method="POST">
    
    deve diventare qualcosa del genere ?:
    
    <form method="POST" id="formrevisioni">
    

    Questa pagina è il frutto dell'estrazione di tutti i veicoli che hanno data revisione in scadenza nel mese corrente


    e questo è il codice che la mostra a video:
    
    if ($tipo == "daeseguire"){
    $where = "WHERE YEAR(dtscrev) = YEAR(NOW()) AND MONTH(dtscrev)= MONTH(NOW()) AND DAY(dtscrev) >= DAY(NOW())";
    }elseif($tipo == "scadute"){
    $where = "WHERE dtscrev < NOW()-1 AND dtscrev <> '0000-00-00'";
    }
    
    In sostanza, una volta che l'utente ha inserito le note, cliccando sul pulsante verde in basso dovrebbe avvenire l'update nel database dove viene inserito nella colonna noterev quanto appena scritto dall'utente , se tutto va a buon fine all'utente viene mostrato un messaggio di corretto inserimento e un redirect alla pagina http://localhost/sviluppo/index.php?page=hom
  • Re: Modificare e salvare dinamicamente contenuto di un campo input

    La butto là... Se ti costruisci tutta la pagina html da php potresti anche costruirti dinamicamente lo script in jquery in base agli input che hai. Così ti cicli i vari box valorizzati in jquery.

    Id_form lo devi dichiarare tu.
    metodo post non è da form ma da script jquery.

    Non so se sono stato chiaro.

    Ti faccio una domanda.... Hai mai utilizzato jquery e ajax?

    Ciao
  • Re: Modificare e salvare dinamicamente contenuto di un campo input

    cali ha scritto:


    La butto là... Se ti costruisci tutta la pagina html da php potresti anche costruirti dinamicamente lo script in jquery in base agli input che hai. Così ti cicli i vari box valorizzati in jquery.

    Id_form lo devi dichiarare tu.
    metodo post non è da form ma da script jquery.

    Non so se sono stato chiaro.

    Ti faccio una domanda.... Hai mai utilizzato jquery e ajax?

    Ciao
    Parto rispondendo alla tua domanda, la risposta è no, non ho mai utilizzato ne jquery ne tantomeno ajax, ad onor del vero, non mi definisco nemmeno uno sviluppatore, ma sto cercando pian piano di mettere sistemare un problema su un gestionale che per passione pura realizzai circa 5/6 anni fa. Pertanto e per dovere di cronaca e sopratutto perchè non sono capace di vendermi per chi non sono, ti dico anche che non saprei assolutamente da dove partire per costruire l'intera pagina in html da php ed integrare i dovuti script in maniera dinamica.

    Sinceramente pensavo fosse più semplice la strada che avevo intrapreso per la risoluzione del salvataggio campo note nella pagina revisioni, naturalmente io non sono ne un approfittatore ne una persona che solitamente chiede la cosidetta "pappa pronta", ma in questo momento mi sono andato a buttare in una situazione dalla quale non sono capace di venir fuori. Ad onor del vero, a settembre inizierò un corso di programmazione full-stak con un'istituto on-line (non faccio il nome per non spammare), ma naturalmente avrei necessità di risolvere prima di settembre questo problema
  • Re: Modificare e salvare dinamicamente contenuto di un campo input

    Una mano te la dó volentieri... Ma prima ti devi costruire le basi.
    In un file php puoi anche scriverci codice html quindi costruirti la pagina in modo dinamico. Poi ci penserà il server web (apache, nginx, ecc) a gestire tutto.
    A spiegarti in un post il funzionamento è un po' difficile....
    Ti consiglio di iniziati cercare online e farti 1 idea... Così non riusciresti. Avevo capito che eri alle primissime armi... Infatti ti avevo detto di vedere online.

    Devi prima capire come funziona la programmazione ad oggetti, classi, metodi.
    Di seguito imparare php se ti piace php, jquery se vuoi utilizzare delle librarie, se vuoi utilizzare dei Framework c'è Angular, oltre a css, sql ecc. Se ciò che ho visto l'hai fatto tu... Farina del tuo sacco... Non dovresti avere tante difficoltà e per fine agosto riesci. È molto semplice... Ovviamente devi avere conoscenza, studiare... Altrimenti sarà tutto difficile.
    Frase fatta... L'unico ostacolo del sapere... È imparare a leggere!

    Se ti devo dire come si fa da zero... Faccio prima a fartelo io! Senza offese....

    Comunque puoi scrivermi anche in privato... E ti aiuto. Prima di tutto studia un po'...

    Ciao
  • Re: Modificare e salvare dinamicamente contenuto di un campo input

    Ciao a tutti, partendo dal presupposto che non ho idea di come sia costruito lo script per intero, la parte lato server che sta inteso come quello che hai scritto in php dovrebbe comunque funzionare, all'input dovresti avere un aggiornamento della pagina, se ciò non avviene vuol dire che il form non funziona per qualche motivo, l'inserimento di un dato deve avvenire lato server (ajax o jQuery che sono lato client) lo renderebbe solo "dinamico allo vista" nascondendo in realtà l'aggiornamento della pagina attraverso diverse tecniche. Quindi quello che ti consiglio e capire perchè il lato server non funziona quindi il database non riempie e dopo lo renderei dinamico alla vista senza fare il riavvio della pagina.
    La cosa che mi viene da pensare è una "Aggiungi nel form " action="nome della pagina" verrebbe così <form method="POST" action="nome della pagina" id="nome_che_vuoi" > ho aggiunto anche un id !.

    Altro suggerimento se hai ha disposizione un server con l'accesso al terminale fai un tail -f dei log error di apache ho nginx o altro altrimenti prova a loggare gli errori da php aggiungendo questo

    ini_set('display_errors', 1);
    ini_set('display_startup_errors', 1);
    error_reporting(E_ALL);

    Questo ti servirà per capire gli errori lato server lato client usa la console di google chrome per capire cosa passi (variabili) all'interno della pagina.

    Ho anche visto che ci sono diversi input ti ricordo che se devi passare più dati intesi come diverse righe nel database per aggiornare o salvare questi dati contemporaneamente devi far ciclare la query mysql all'interno di un foreach o un while
Devi accedere o registrarti per scrivere nel forum
11 risposte