silvio.barra Posted October 21, 2011 Report Share Posted October 21, 2011 Não estou conseguindo salvar no banco de dados.-----------------------------Banco de dados----------------------------SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";CREATE TABLE IF NOT EXISTS `piloto2` ( `id` bigint(4) unsigned NOT NULL AUTO_INCREMENT, `data_final` date NOT NULL, `data_vencimento` date NOT NULL, `dias` int(3) NOT NULL, `status` varchar(11) NOT NULL, PRIMARY KEY (`id`)) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;----------------------------------Script--------------------------------<html><head><script language="javascript">function muda(input1,input2){ palavra = input1.value; if(palavra.length == 2){ input2.focus(); }}</script></head><body><form name="cadastro" method="post" action="" autocomplete="off"><table width="600" border="0"> <tr> <td width="262">Data da Emissão:<input type="text" name="dia" size="2" maxlength="2" id="teste1" onkeydown="muda(this.form.teste1,this.form.teste2)">/ <input type="text" name="mes" size="2" maxlength="2" id="teste2" onkeydown="muda(this.form.teste2,this.form.teste3)">/ <input type="text" name="ano" size="3" maxlength="4" id="teste3"/><br> <input name="enviar" type="submit" id="enviar" value="Enviar"><p><?php include "conecta.php";// Define os valores a serem usados$data = date('d/m/Y'); $data_inicial = $data;$dia = $_POST['dia'];$mes = $_POST['mes'];$ano = $_POST['ano'];$data_final = $_POST['dia'].'/'.$_POST['mes'].'/'.$_POST['ano'];$data_vencimento = $_POST['data_vencimento'];$dias = $_POST['dias'];$status = $_POST['status'];//Calcula a data da emissão mais 360 diasfunction geraTimes($data_final){ $temp = explode("/", $data_final); return date("d/m/Y", mktime(0, 0, 0, $temp[1], $temp[0] + 360, $temp[2]));}// Cria uma função que retorna o timestamp de uma data no formato DD/MM/AAAAfunction geraTimestamp($data) { $partes = explode('/', $data); return mktime(0, 0, 0, $partes[1], $partes[0], $partes[2]);}// Calcula a diferença de dias entre as duas datas:$data_vencimento = geraTimes($data_final); $time_inicial = geraTimestamp($data_inicial);$time_final = geraTimestamp($data_vencimento);$diferenca = $time_final - $time_inicial; // 19522800 segundos$dias = (int)floor( $diferenca / (60 * 60 * 24)); // 360 diasif ($dias < 0){ $status = "vencido";}if (($dias < 15) && ($dias >= 0)){ $status = "a vencer";}if ($dias >= 15){ $status = "em dias" ;}echo "<p>Data da Emissão: ".$data_final."<p>";echo "<p>Data do Vencimento: ".$data_vencimento."<p>";echo "<p>Números de dias: ".$dias."<p>";echo "<p>Status: ".$status."<p>";$data = date('d/m/Y'); $data_inicial = $data;$dia = $_POST['dia'];$mes = $_POST['mes'];$ano = $_POST['ano'];$data_final = $_POST['dia'].'/'.$_POST['mes'].'/'.$_POST['ano'];$data_vencimento = $_POST['data_vencimento'];$dias = $_POST['dias'];$status = $_POST['status']; $add = mysql_query("INSER INTO piloto2 (data_final, data_vencimento, dias, status) VALUES ('$data_final','$data_vencimento','$dias','$status')");if ($add) { echo 'Cadastro foi efetuado com sucesso';} else { echo 'Falha ao enviar dados, tente novamente!';} ?></p></td></tr></table></form></body></html> Quote Link to comment Share on other sites More sharing options...
0 ESerra Posted October 21, 2011 Report Share Posted October 21, 2011 Troca:$add = mysql_query("INSER INTO piloto2 (data_final, data_vencimento, dias, status) VALUES ('$data_final','$data_vencimento','$dias','$status')");Por:$add = mysql_query("INSER INTO piloto2 (data_final, data_vencimento, dias, status) VALUES ('$data_final','$data_vencimento','$dias','$status')")OR DIE(mysql_error());Isso vai te dar o erro que está acontecendo... Quote Link to comment Share on other sites More sharing options...
0 MTavares Posted October 22, 2011 Report Share Posted October 22, 2011 (edited) Tente colocar assim:mysql_query("INSER INTO piloto2 (data_final, data_vencimento, dias, status) VALUES ('".$data_final."','".$data_vencimento."','".$dias."','".$status."')");O erro pode estar acontecendo porque o campo data está como date e com isso o seu código pode estar levando para o banco o $data_final e $data_vencimento como string e não como a data. Lembre-se de que que se a data_final e data_vencimento não estiver no formato YYY-MM-DD poderá dar problemas.abs Edited October 22, 2011 by MTavares Quote Link to comment Share on other sites More sharing options...
Question
silvio.barra
Não estou conseguindo salvar no banco de dados.
-----------------------------Banco de dados----------------------------
SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
CREATE TABLE IF NOT EXISTS `piloto2` (
`id` bigint(4) unsigned NOT NULL AUTO_INCREMENT,
`data_final` date NOT NULL,
`data_vencimento` date NOT NULL,
`dias` int(3) NOT NULL,
`status` varchar(11) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
----------------------------------Script--------------------------------
<html>
<head>
<script language="javascript">
function muda(input1,input2){
palavra = input1.value;
if(palavra.length == 2){
input2.focus();
}
}
</script></head>
<body>
<form name="cadastro" method="post" action="" autocomplete="off">
<table width="600" border="0">
<tr>
<td width="262">Data da Emissão:
<input type="text" name="dia" size="2" maxlength="2" id="teste1" onkeydown="muda(this.form.teste1,this.form.teste2)">/
<input type="text" name="mes" size="2" maxlength="2" id="teste2" onkeydown="muda(this.form.teste2,this.form.teste3)">/
<input type="text" name="ano" size="3" maxlength="4" id="teste3"/>
<br>
<input name="enviar" type="submit" id="enviar" value="Enviar"><p>
<?php
include "conecta.php";
// Define os valores a serem usados
$data = date('d/m/Y');
$data_inicial = $data;
$dia = $_POST['dia'];
$mes = $_POST['mes'];
$ano = $_POST['ano'];
$data_final = $_POST['dia'].'/'.$_POST['mes'].'/'.$_POST['ano'];
$data_vencimento = $_POST['data_vencimento'];
$dias = $_POST['dias'];
$status = $_POST['status'];
//Calcula a data da emissão mais 360 dias
function geraTimes($data_final){
$temp = explode("/", $data_final);
return date("d/m/Y", mktime(0, 0, 0, $temp[1], $temp[0] + 360, $temp[2]));
}
// Cria uma função que retorna o timestamp de uma data no formato DD/MM/AAAA
function geraTimestamp($data) {
$partes = explode('/', $data);
return mktime(0, 0, 0, $partes[1], $partes[0], $partes[2]);
}
// Calcula a diferença de dias entre as duas datas:
$data_vencimento = geraTimes($data_final);
$time_inicial = geraTimestamp($data_inicial);
$time_final = geraTimestamp($data_vencimento);
$diferenca = $time_final - $time_inicial; // 19522800 segundos
$dias = (int)floor( $diferenca / (60 * 60 * 24)); // 360 dias
if ($dias < 0){
$status = "vencido";
}
if (($dias < 15) && ($dias >= 0)){
$status = "a vencer";
}
if ($dias >= 15){
$status = "em dias" ;
}
echo "<p>Data da Emissão: ".$data_final."<p>";
echo "<p>Data do Vencimento: ".$data_vencimento."<p>";
echo "<p>Números de dias: ".$dias."<p>";
echo "<p>Status: ".$status."<p>";
$data = date('d/m/Y');
$data_inicial = $data;
$dia = $_POST['dia'];
$mes = $_POST['mes'];
$ano = $_POST['ano'];
$data_final = $_POST['dia'].'/'.$_POST['mes'].'/'.$_POST['ano'];
$data_vencimento = $_POST['data_vencimento'];
$dias = $_POST['dias'];
$status = $_POST['status'];
$add = mysql_query("INSER INTO piloto2 (data_final, data_vencimento, dias, status) VALUES ('$data_final','$data_vencimento','$dias','$status')");
if ($add) {
echo 'Cadastro foi efetuado com sucesso';
} else {
echo 'Falha ao enviar dados, tente novamente!';
}
?>
</p></td></tr></table></form></body></html>
Link to comment
Share on other sites
2 answers to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.