Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Ola amigos, bem pessoal imagine que eu tenho a seguite tabela no banco
CREATE TABLE contrato
(
id_contrato INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
objeto VARCHAR(100) NOT NULL,
valor_anual DOUBLE NOT NULL,
valor_mensal DOUBLE NOT NULL,
chave_contrato_fk INT NOT NULL,
FOREIGN KEY (chave_contrato_fk) REFERENCES fornecedor(id_fornecedor)
ON DELETE CASCADE
ON UPDATE CASCADE
) ENGINE = INNODB
todos eesse dados seram preenchidos na pagima HTML, e gravados no banco de dados MYSQL.
agora imagine outra tabela que sera preenchida na pagina HTML.
CREATE TABLE aditivo
(
id_aditivo INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
data_inicial DATE NOT NULL,
data_final DATE NOT NULL,
chave_adtivo_fk INT NOT NULL,
FOREIGN KEY (chave_adtivo_fk) REFERENCES contrato (id_contrato)
ON DELETE CASCADE
ON UPDATE CASCADE
) ENGINE = INNODB
Mas nessa tabela eu tenho o campo ** data_inicial** e **data_final** que seram a data inicial e a data final do contrato .. obs: tipo assim: 04/11/10.
bem o relacionamento e de UM para UM ...eu faço o contrato em seguida faço um aditivo para aquele contrato
Mas o aditivo vai ter um prazo.. e quando essse prazo estiver faltando 03 messes para vencer, vai ser mandado um alert para o usuario dizendo que aquele contrato esta perto de vencer..e quando o usuario ver esse mensagem ele vai estabelecer um novo aditivo para aquele contrato que esta perto de vencer..
o se eu ñ me egano o MYSQL pega a data investida 0000-00-00..mas na tabela eu preencho assim: 04/11/2010
andei pequisando e vou ter que usar um funcao chamada date
MAS como eu posso vazer esse sistema..alguem tem um dica ou sugestao ?
Vou te dar uma ajuda.. tenho uma função que você pode utilizar.. que você soh informa o formato da data e ele te traz...
<?php
function mudaData($data,$tipo) {
if ($tipo == 1) {
$data = substr($data,8,2)."/".substr($data,5,2)."/".substr($data,0,4);
} else if ($tipo == 2) {
$data = substr($data,8,2).".".substr($data,5,2).".".substr($data,0,4);
}
return $data;
}
$data_banco = "2010-11-05";
$data_normal = "05/11/2010";
echo "Data do banco mudada para normal: ";
echo mudaData($data_banco,1);
echo "<br><br>";
echo "Data normal mudada para banco: ";
echo mudaData($data_normal,2);
?>tem varias formas de se fazer isso uma delas e usar explode() "achoo mais simples"
<?php
$data_br = '01/01/2001';
$data_mysql = explode('/',$data_br);
$data_final = $data_mysql[2]."-".$data_mysql[1]."-".$data_mysql[0];
//retorna data no formato EUA AAAA/MM/DD
echo $data_final;
?>Da pra fazer uma função com 3 linhas de código.
E ainda converte a data tanto para formato yyyy-mm-dd
quanto para dd/mm/yyyy.
<?php
/****
* @param $data (a data em si)
* @param $se (separador de $data pode ser - ou /)
* @param $ss (separador que vai estar no resultado de retorno)
****/
function convDate($data, $se, $ss){
return implode($ss, array_reverse(explode($se, $data)));
}
$data = '2010-11-06';
$data2 = '06/11/2010';
echo convDate($data,'-','/').'<br>'.convDate($data2,'/','-');
?>Abraços.>
Da pra fazer uma função com 3 linhas de código.
E ainda converte a data tanto para formato yyyy-mm-dd
quanto para dd/mm/yyyy.
<?php
/****
* @param $data (a data em si)
* @param $se (separador de $data pode ser - ou /)
* @param $ss (separador que vai estar no resultado de retorno)
****/
function convDate($data, $se, $ss){
return implode($ss, array_reverse(explode($se, $data)));
}
$data = '2010-11-06';
$data2 = '06/11/2010';
echo convDate($data,'-','/').'<br>'.convDate($data2,'/','-');
?>Abraços.
Deixa eu ver se entendi..
function convDate//nome da fuction.
($data, $se, $ss) //parametros a ser passado.
return implode//o q e esse implode?
$ss, array_reverse// $ss, array_reverse o que e?
(explode($se, $data))// o q e esse explode
Piriscuelo ñ estou muito por dentro de Funcões ..mas você pode me mandar um link por onde eu possa estudar funçoes..
Você deve usar a função substr() do php.
Ja que o usuario vai inserir a data no nosso formato 00/00/0000, você deve fazer a conversão e isso pode ser feito através da função substr().
Ex:
O usuario manda a data 05/11/2010.
Você pega através do post() ou do get() e utiliza a substr() na variavel que você está atribuindo a data digitada pelo usuário.
assim:
$data = $_POST['data'];
$dia = substr($data,0,2); // isso você vai pegar o dia, que são os 2 primeiros digitos. Os numeros entre virgulas dizem que a partir da posição 0 você pega 2 caracteres Equivalente o dia.
$mes = substr($data, 3,2); // Ja que o dia, mes e ano são separados por "/", você nao deve contar com ela pra pegar na função substr. Então a "/" está na posição 3 e na função você pega 2 digitos a partir da terceira posição, equivalentes ao mês.
$ano = substr($data,6,4); // Aki é da mesma forma do mes, só que você pega os 4 digitos do ano.
$nova_data = $ano."-".$mes."-".$dia; //agora ordena a data
Quando você for inserir no banco de dados você coloca $nova_data, que eh equivalente ao formato do Mysql isso você faz para a data inicial e final.
Quando você for puxar do banco de dados você tem que fazer a ordenação contrária a que foi feita logo acima. em vez de 00/00/0000 para 0000-00-00 você vai fazer 0000-00-00 para 00-00-0000.
OK!
Ai pra fazer a verificação se esta perto do final. Você deve utilizar a função date() do php.
$mes_atual = date("m"); // isso você pega o mes em que estamos.
Depois disso você puxa do banco a data final do aditivo. E faz o processo do substr() pra pegar somente o "mês".
agora você subtrai o mes final do $mes_atual se o resultado der "<=3" você pode mostrar a informação para o administrador, dizendo que está na hora de renovar o aditivo.
Pronto! Acho que assim dá certo. Só tentar. Se não der posta as duvidas e os resultados aki.