Input type timestamp

di il
5 risposte

Input type timestamp

Buongiorno a tutti,

Ho creato un form per inserimento dati all'interno di un db fatto con phpmyadmin,

Prevedendo la necessità di dover modificare un record, ho creato un secondo form preceduto dalla query di selezione del record

e generato il form con i vari input type numerico con i valori che vengono fuori dalla query.

tutti gli input sono di tipo numerico tranne uno, quello di creazione ordine che, nel form di inserimento è di tipo timestamp con valore di default settato su current_timestamp.

questo è il codice

<?php
$conn = new mysqli('localhost', 'root', '','prenoticket');
if($conn->connect_error){
	die('Connessione fallita: '.$conn->connect_error);
}
$sql = "SELECT * from tb_ordini 
where date(tb_ordini.Data) = date(current_timestamp)
and `ID_contratto` = 2" ; 
$result =$conn->query($sql);


if($result->num_rows>0){
	
	echo "<table id=tab_giorno>
	<th>Ordine Nr</th><th>Promozione</th><th>Ticket</th><th>Promo S. Glutine</th>
	<th>Promo Pastina</th><th>Promo Cotto</th><th>Completo adulti</th>
	";
	while ($row=$result->fetch_assoc()){
		echo "<tr>   <td><input type=number name=Nr_ordine        value =".$row['Nr_ordine']."></td>
				  <td><input type=number name=prom_ord         value =".$row['prom_ord']."></td>
				  <td><input type=number name=ticket              value =".$row['ticket']."></td>
				  <td><input type=number name=prom_sn_glut     value =".$row['prom_sn_glut']."></td>
				  <td><input type=number name=prom_pstn        value =".$row['prom_pstn']."></td>
				  <td><input type=number name=prom_cotto      value =".$row['prom_cotto']."></td>
				  <td><input type=number name=compl_adlt       value =".$row['compl_adlt']."></td>
				  </tr><tr>
				  <th>Data</th><th>1° Normale</th>	<th>Pasta al sugo</th><th>Pasta in Bianco</th>
				  <th>1° Adulti</th><th>1° Pastina</th><th>Pastina al Sugo</th><th>Pastina in Bianco</th><th>Pastina in Brodo</th>
				  
				  </tr><tr>
				  <td><input type=timestamp   name=data             value =".$row['Data']."></td>
				  <td><input type=number      name=1_norm           value =".$row['1_norm']."></td>
				  <td><input type=number      name=1_sugo           value =".$row['1_sugo']."></td>
				  <td><input type=number      name=1_bnc            value =".$row['1_bnc']."></td>
  				  <td><input type=number      name=1_adlt           value =".$row['1_adlt']."></td>
				  <td><input type=number      name=1_pastina        value =".$row['1_pastina']."></td>
				  <td><input type=number      name=pstn_sugo        value =".$row['pstn_sugo']."></td>
				  <td><input type=number      name=pstn_bnc         value =".$row['pstn_bnc']."></td>
				  <td><input type=number      name=pstn_brd         value =".$row['pstn_brd']."></td>
				  </tr><tr>
				  <td></td>
				  <th>1° Nipiol</th><th>Nipiol al Sugo</th><th>Nipiol in Bianco</th><th>Nipiol in Brodo</th>
				  <th>1° S. Glutine Ord</th><th>S. Glutine Sugo</th><th>S. Glutine Bianco</th><th>Ord. No Riso</th>
				  </tr><tr>
				  <td></td>
				  <td><input type=number name=Nip_ord          value =".$row['Nip_ord']."></td>
				  <td><input type=number name=Nip_sug          value =".$row['Nip_sug']."></td>
				  <td><input type=number name=Nip_bnc          value =".$row['Nip_bnc']."></td>
				  <td><input type=number name=Nip_brd          value =".$row['Nip_brd']."></td>
				  <td><input type=number name=1_sn_glut        value =".$row['1_sn_glut']."></td>
				  <td><input type=number name=Sn_Glut_sug      value =".$row['Sn_Glut_sug']."></td>
				  <td><input type=number name=Sn_Glut_bnc      value =".$row['Sn_Glut_bnc']."></td>
				  <td><input type=number name=Ord_no_riso      value =".$row['Ord_no_riso']."></td>
				  </tr><tr>
				  <td></td>
				  <th>2° Normale</th><th>2° Adulti</th><th>2° Senza Glutine</th><th>2° Pr. Cotto</th>
				   </tr><tr>
				  <td></td>
				  <td><input type=number name=2_ord            value =".$row['2_ord']."></td>
				  <td><input type=number name=2_adlt           value =".$row['2_adlt']."></td>
				  <td><input type=number name=2_sn_glut        value =".$row['2_sn_glut']."></td>
				  <td><input type=number name=2_pr_cotto       value =".$row['2_pr_cotto']."></td>
				  </tr>";
		}
		echo "</table>";
		
		}else{ 
	echo "Non ci sono dati in questa tabella";

}

?>

il problema è quando vado a dare l'input di aggiornamento, nel campo data mi lascia solo la data di creazione, ma mi porta l'orario a 00:00:00 e non quello "vecchio".

a cosa è dovuto l'errore?

Grazie mille

5 Risposte

  • Re: Input type timestamp

    Carmine Sepe ha scritto:


    Buongiorno a tutti,

    Ho creato un form per inserimento dati all'interno di un db fatto con phpmyadmin,

    Prevedendo la necessità di dover modificare un record, ho creato un secondo form preceduto dalla query di selezione del record

    e generato il form con i vari input type numerico con i valori che vengono fuori dalla query.

    tutti gli input sono di tipo numerico tranne uno, quello di creazione ordine che, nel form di inserimento è di tipo timestamp con valore di default settato su current_timestamp.

    questo è il codice
    
    <?php
    $conn = new mysqli('localhost', 'root', '','prenoticket');
    if($conn->connect_error){
    	die('Connessione fallita: '.$conn->connect_error);
    }
    $sql = "SELECT * from tb_ordini 
    where date(tb_ordini.Data) = date(current_timestamp)
    and `ID_contratto` = 2" ; 
    $result =$conn->query($sql);
    
    
    if($result->num_rows>0){
    	
    	echo "<table id=tab_giorno>
    	<th>Ordine Nr</th><th>Promozione</th><th>Ticket</th><th>Promo S. Glutine</th>
    	<th>Promo Pastina</th><th>Promo Cotto</th><th>Completo adulti</th>
    	";
    	while ($row=$result->fetch_assoc()){
    		echo "<tr>   <td><input type=number name=Nr_ordine        value =".$row['Nr_ordine']."></td>
    				  <td><input type=number name=prom_ord         value =".$row['prom_ord']."></td>
    				  <td><input type=number name=ticket              value =".$row['ticket']."></td>
    				  <td><input type=number name=prom_sn_glut     value =".$row['prom_sn_glut']."></td>
    				  <td><input type=number name=prom_pstn        value =".$row['prom_pstn']."></td>
    				  <td><input type=number name=prom_cotto      value =".$row['prom_cotto']."></td>
    				  <td><input type=number name=compl_adlt       value =".$row['compl_adlt']."></td>
    				  </tr><tr>
    				  <th>Data</th><th>1° Normale</th>	<th>Pasta al sugo</th><th>Pasta in Bianco</th>
    				  <th>1° Adulti</th><th>1° Pastina</th><th>Pastina al Sugo</th><th>Pastina in Bianco</th><th>Pastina in Brodo</th>
    				  
    				  </tr><tr>
    				  <td><input type=timestamp   name=data             value =".$row['Data']."></td>
    				  <td><input type=number      name=1_norm           value =".$row['1_norm']."></td>
    				  <td><input type=number      name=1_sugo           value =".$row['1_sugo']."></td>
    				  <td><input type=number      name=1_bnc            value =".$row['1_bnc']."></td>
      				  <td><input type=number      name=1_adlt           value =".$row['1_adlt']."></td>
    				  <td><input type=number      name=1_pastina        value =".$row['1_pastina']."></td>
    				  <td><input type=number      name=pstn_sugo        value =".$row['pstn_sugo']."></td>
    				  <td><input type=number      name=pstn_bnc         value =".$row['pstn_bnc']."></td>
    				  <td><input type=number      name=pstn_brd         value =".$row['pstn_brd']."></td>
    				  </tr><tr>
    				  <td></td>
    				  <th>1° Nipiol</th><th>Nipiol al Sugo</th><th>Nipiol in Bianco</th><th>Nipiol in Brodo</th>
    				  <th>1° S. Glutine Ord</th><th>S. Glutine Sugo</th><th>S. Glutine Bianco</th><th>Ord. No Riso</th>
    				  </tr><tr>
    				  <td></td>
    				  <td><input type=number name=Nip_ord          value =".$row['Nip_ord']."></td>
    				  <td><input type=number name=Nip_sug          value =".$row['Nip_sug']."></td>
    				  <td><input type=number name=Nip_bnc          value =".$row['Nip_bnc']."></td>
    				  <td><input type=number name=Nip_brd          value =".$row['Nip_brd']."></td>
    				  <td><input type=number name=1_sn_glut        value =".$row['1_sn_glut']."></td>
    				  <td><input type=number name=Sn_Glut_sug      value =".$row['Sn_Glut_sug']."></td>
    				  <td><input type=number name=Sn_Glut_bnc      value =".$row['Sn_Glut_bnc']."></td>
    				  <td><input type=number name=Ord_no_riso      value =".$row['Ord_no_riso']."></td>
    				  </tr><tr>
    				  <td></td>
    				  <th>2° Normale</th><th>2° Adulti</th><th>2° Senza Glutine</th><th>2° Pr. Cotto</th>
    				   </tr><tr>
    				  <td></td>
    				  <td><input type=number name=2_ord            value =".$row['2_ord']."></td>
    				  <td><input type=number name=2_adlt           value =".$row['2_adlt']."></td>
    				  <td><input type=number name=2_sn_glut        value =".$row['2_sn_glut']."></td>
    				  <td><input type=number name=2_pr_cotto       value =".$row['2_pr_cotto']."></td>
    				  </tr>";
    		}
    		echo "</table>";
    		
    		}else{ 
    	echo "Non ci sono dati in questa tabella";
    
    }
    
    ?>
    

    il problema è quando vado a dare l'input di aggiornamento, nel campo data mi lascia solo la data di creazione, ma mi porta l'orario a 00:00:00 e non quello "vecchio".

    a cosa è dovuto l'errore?

    Grazie mille
    Ciao,
    se ho capito bene non ti aggiorna in modo giusto il campo DATA del tuo DB.

    Quando vado ad eseguire l'update o select faccio così:
    
    $sql = "UPDATE Tua_Tabella SET data='".date('Ymd H:i:s')."' WHERE ecc ecc";
    
    
    $sql2 = "SELECT * FROM Tua_Tabella WHERE = data='".date('Ymd H:i:s')."' ecc ecc";
    
    Ciao
  • Re: Input type timestamp

    Ciao benvenuto, credo php è inerente poiché la data è gestita da mysql e spero sia archiviata di tipo DATETIME nel Database. Comunque cosa vorrebbe recuperare? Perché where colonna = 'qualcosa' dovrebbe solamente recuperare il valore qualcosa discorso diverso se vuole recuperare un intervallo temporale (indietro, presente o avanti).
    Questo esempio mostra il recupero date o datetime (anche l'orario)
    SELECT DATE('2003-12-31 01:02:03');
    Sorprendimi mostrami l'output
    Puoi mostrare il codice di aggiornamento?
  • Re: Input type timestamp

    Ciao Hormus e grazie per l'intervento

    ti scrivo qui di seguito il codice php
    
    <?php
    $nr_ordine = $_POST['Nr_ordine'];
    $data = $_POST['data'];
    
    $prom_ord = $_POST['prom_ord'];
    $ticket = $_POST['ticket'];
    $prom_sn_glut = $_POST['prom_sn_glut'];
    $prom_pstn = $_POST['prom_pstn'];
    $prom_cotto = $_POST['prom_cotto'];
    $compl_adlt = $_POST['compl_adlt'];
    
    $p_norm = $_POST['1_norm'];
    $p_sugo = $_POST['1_sugo'];
    $p_bnc = $_POST['1_bnc'];
    $p_adlt = $_POST['1_adlt'];
    $p_pastina = $_POST['1_pastina'];
    $pstn_sugo = $_POST['pstn_sugo'];
    $pstn_bnc = $_POST['pstn_bnc'];
    $pstn_brd = $_POST['pstn_brd'];
    $Nip_ord = $_POST['Nip_ord'];
    $Nip_sug = $_POST['Nip_sug'];
    $Nip_bnc = $_POST['Nip_bnc'];
    $Nip_brd = $_POST['Nip_brd'];
    $p_sn_glut = $_POST['1_sn_glut'];
    $Sn_Glut_sug = $_POST['Sn_Glut_sug'];
    $Sn_Glut_bnc = $_POST['Sn_Glut_bnc'];
    $Ord_no_riso = $_POST['Ord_no_riso'];
    
    $s_ord= $_POST['2_ord'];
    $s_adlt= $_POST['2_adlt'];
    $s_sn_glut= $_POST['2_sn_glut'];
    $s_pr_cotto= $_POST['2_pr_cotto'];
    
    $conn = new mysqli('localhost', 'root', '','prenoticket');
    if($conn->connect_error){
    die('Connessione fallita: '.$conn->connect_error);
    }
    $sql = "DELETE FROM `tb_ordini` WHERE `tb_ordini`.`Nr_ordine` = '$nr_ordine';";
    if (!$conn->query($sql)) {
    		die($conn->error);
    }
    
    
    $sql = "INSERT INTO `tb_ordini`  (`Nr_ordine`,      `Data`,     `ID_contratto`,`prom_ord`,   `ticket`, `prom_sn_glut`,`prom_pstn`,  `prom_cotto`,  `compl_adlt` ,`1_norm` , `1_sugo`,`1_bnc` , `1_adlt`, `1_pastina` , `pstn_sugo`,`pstn_bnc`, `pstn_brd`,  `Nip_ord`,`Nip_sug`,  `Nip_bnc`,  `Nip_brd`,  `1_sn_glut`,`Sn_Glut_sug` ,`Sn_Glut_bnc`,`Ord_no_riso`,   `2_ord`, `2_adlt`, `2_sn_glut`, `2_pr_cotto`) 
    						  VALUES ( '$nr_ordine',   '$data',          2,       '$prom_ord',  '$ticket','$prom_sn_glut','$prom_pstn','$prom_cotto', '$compl_adlt' ,'$p_norm','$p_sugo','$p_bnc','$p_adlt', '$p_pastina', '$pstn_sugo','$pstn_bnc','$pstn_brd','$Nip_ord','$Nip_sug','$Nip_bnc', '$Nip_brd','$p_sn_glut','$Sn_Glut_sug','$Sn_Glut_bnc','$Ord_no_riso','$s_ord','$s_adlt','$s_sn_glut','$s_pr_cotto');" ; 
    if (!$conn->query($sql)) {
    die($conn->error);
    }
    ?>
    
    nell'insert non ho "citato" il campo ultima modifica in quanto mi inserisce automaticamente il timestamp di aggiornamento (che è proprio ciò che voglio)

    il punto è che sebbene il campo "Data" (data e ora di creazione ordine) sia di tipo timestamp (quindi mi inserisce sia la data che l'ora di creazione ordine), quando lo vado a richiamare mi mostra solo la data, e di conseguenza quando vado, nello script input.php, a dichiarare la variabile $data col metodo POST mi viene memorizzata solo la data e di conseguenza quando viene aggiornato il record mi sostituisce l'ora di creazione ordine con 00:00:00
  • Re: Input type timestamp

    Secondo me ti sbagli, se recuperi
    SELECT DATE('2003-12-31 01:02:03');
    e poi la stampi vedrai che è senza orario (che si traduce in 00:00:00 in mysql o php).
    $_POST['data'] è il risultato di un'istruzione sql? (Simile al codice precedentemente mostrato) Giustamente è corretto impostare l'orario a zero.
    Poiché si tratta di aggiornare un dato già esistente non devi inviare il datetime ma crearlo all'ora attuale con la funzione mysql NOW() o il suo sinonimo CURRENT_TIMESTAMP() dentro l'istruzione sql di aggiornamento.
    $sql = "INSERT INTO `tb_ordini`  (`Nr_ordine`,      `Data`,     `ID_contratto`,`prom_ord`,   `ticket`, `prom_sn_glut`,`prom_pstn`,  `prom_cotto`,  `compl_adlt` ,`1_norm` , `1_sugo`,`1_bnc` , `1_adlt`, `1_pastina` , `pstn_sugo`,`pstn_bnc`, `pstn_brd`,  `Nip_ord`,`Nip_sug`,  `Nip_bnc`,  `Nip_brd`,  `1_sn_glut`,`Sn_Glut_sug` ,`Sn_Glut_bnc`,`Ord_no_riso`,   `2_ord`, `2_adlt`, `2_sn_glut`, `2_pr_cotto`) 
    						  VALUES ( '$nr_ordine',   NOW(),          2,       '$prom_ord',  '$ticket','$prom_sn_glut','$prom_pstn','$prom_cotto', '$compl_adlt' ,'$p_norm','$p_sugo','$p_bnc','$p_adlt', '$p_pastina', '$pstn_sugo','$pstn_bnc','$pstn_brd','$Nip_ord','$Nip_sug','$Nip_bnc', '$Nip_brd','$p_sn_glut','$Sn_Glut_sug','$Sn_Glut_bnc','$Ord_no_riso','$s_ord','$s_adlt','$s_sn_glut','$s_pr_cotto');" ; 
  • Re: Input type timestamp

    Se posso anche precisare non è sicuro passare le variabili nella query senza un minimo di sanitize. Utilizza un prepared statement invece.
Devi accedere o registrarti per scrivere nel forum
5 risposte