Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

e-junior

[RESOLVIDO] Calculo com data

Recommended Posts

Olá pessoal tudo bom???Bom preciso de um help, tenho uma tabela "PRODUTOS" q tem um campo "validade_link" q é definido por dias e uma tabela "PEDIDOS" q armazena as datas dos pedidos efetuados q tem um campo "dt_pedido".É o seguinte preciso calcular quantos dias faltam para a validade do link apartir da data do pedido q é o campo "dt_pedido" na tabela pedido.TIPO DE CAMPOS NA TABELA:#####TABELA PRODUTOS#####campo: validade_link CHAR(3)Exemplo: 90 diasExemplo: 30 dias#####TABELA PEDIDOS#####campo: dt_pedido DATEExemplo: 2007-05-02

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não entendi muito bem o relacionamento que está sendo feito, mas pode fazer algo como:

 

SELECT DATEDIFF(dt_pedido + INTERVAL validade_link DAY, NOW()) AS prazo_dias FROM tabela;

A consulta acima retorna o campo prazo_dias, levando em consideração que não fiz o relacionamento entre as tabelas.

Tente adaptar, qualquer coisa, posta aí ;)

 

[]s

Anderson Mello

Compartilhar este post


Link para o post
Compartilhar em outros sites

veja eu tenho essa função aki que ela faz os calculos de tempo para mim

 

function DataDif($Data1, $Data2, $Intervalo){switch($Intervalo){case 'n' : $Q = 60; break;		//minutocase 'h' : $Q = 3600; break;	  //horacase 'd' : $Q = 86400; break;	//diacase 'm' : $Q = 2592000; break;  //mescase 'a' : $Q = 86400*365; break; //anodefault  : $Q = 1; break;		//segundo}return intval ((strtotime($Data2) - strtotime($Data1)) / $Q);}

modo de usar

 

$resultado = DataDif($datadehoje,$datadocadastro,d);

ae é so você comparar se o resultado for igual o numero de dias que tem q enviar o link ele manda senão continua

 

espero ter ajudado

 

abs []s http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

bom valeu Anderson mas nao estou conseguindo fazer o relacionamento pq desse jeito q você esta colocando ai mostra o prazo para todos os produtos cadastrados.Como você disse q nao entendeu relacionamento que está sendo feito vou lhe explicar minha estrutura:#####TABELA PRODUTOS#####id_produtonome_produtovalidade_linklink_video#####TABELA PEDIDOSid_pedidoid_clientedt_pedidostatus_pedidovalor_pedido#####TABELA ITEM#####id_itemid_pedidoid_produtoquantidadeObs.: Bom e o seguinte se você ver na tabela PRODUTO tem um campo "validade_link" q é colocado o prazo em dias que o link do video ficara disponivel para o cliente após a sua compra o que eu quero fazer e o seguinte calcular quantos dias o cliente tem para ver o filme apartir da data de sua compra "dt_pedido".

Compartilhar este post


Link para o post
Compartilhar em outros sites

Entendi o que você precisa retornar, mas ainda não entendi como quer :huh: Pelo que vi ali na estrutura, você pode então consultar a tabela de pedidos e resgatar os itens do pedido e seus respectivos prazos (em dias). É isso?Mesmo que não seja estas as informações, tenta fazer um SELECT normal, recuperando os dados que precisa. Depois altera a seleção do campo validade_link, adaptando a instrução que passei antes, que retorna o valor do prazo.Vai postando que te ajudo. ;)[]sAnderson Mello

Compartilhar este post


Link para o post
Compartilhar em outros sites

Anderson,

 

Acho q deu certo olha o select ai:

 

SELECT tb_palestra.id_palestra,

tb_item.id_pedido,

tb_palestra.tema,

tb_pedido.dt_pedido,

tb_palestra.validade_link,

tb_palestra.link_video,

DATEDIFF(dt_pedido + INTERVAL validade_link DAY, NOW()) AS prazo_validade_link

FROM tb_item

INNER JOIN tb_palestra

ON tb_item.id_produto = tb_palestra.id_palestra

INNER JOIN tb_pedido

ON tb_item.id_pedido = tb_pedido.id_pedido

WHERE tb_item.id_pedido='1'

 

IMAGEM DO SELECT: Imagem Postada

Compartilhar este post


Link para o post
Compartilhar em outros sites

SELECT produtos.*, DATEDIFF(pedidos.dt_pedido + INTERVAL produtos.validade_link DAY, NOW()) AS prazo_dias FROM item, produtos, pedidos WHERE item.id_pedido=pedidos.id_pedido AND item.id_produto=produtos.id_produto;

Não testei, mas faz aí e confere os nomes das tabelas ;)

Assim você retorna os dados da tabela produtos e o campo prazo_dias. Aí tu coloca uma condição, se for maior que zero, imprime o link, senão imprime a mensagem "não disponível".

 

[]s

Anderson Mello

Compartilhar este post


Link para o post
Compartilhar em outros sites

beleza Anderson testei e funcionou normal.

Só pra deixar documentando caso outra pessoa no forum precise vou colocar o código:

ha caso tenha alguma observação no código abaixo pode falar.

t+++

obrigado pela ajuda.

 

<?php $sql_pedido02 = "SELECT tb_palestra.id_palestra,tb_item.id_pedido,tb_palestra.tema,tb_pedido.dt_pedido,tb_palestra.validade_link,tb_palestra.link_video,DATEDIFF(dt_pedido + INTERVAL validade_link DAY, NOW()) AS prazo_validade_linkFROM tb_itemINNER JOIN tb_palestraON tb_item.id_produto = tb_palestra.id_palestraINNER JOIN tb_pedidoON tb_item.id_pedido = tb_pedido.id_pedidoWHERE tb_item.id_pedido='$id'";									$pedido_mostra02 = mysql_query($sql_pedido02)or die ("Não foi possível realizar a consulta ao banco de dados");?><?php 				while ($row02=mysql_fetch_array($pedido_mostra02)){			$id_palestra= $row02["id_palestra"];$id_pedido= $row02["id_pedido"];$dt_pedido= $row02["dt_pedido"];$tema= $row02["tema"];$validade_link= $row02["validade_link"];$prazo_validade_link= $row02["prazo_validade_link"];$link_video= $row02["link_video"];						$clique_aqui = "Clique aqui";						if ($prazo_validade_link == "0"){$link_video = "#";$prazo_validade_link = "<font class='FONT07'><b>$prazo_validade_link</b></font>";$clique_aqui = "DESATIVADO";}		   		?><tr><td align="left"><?php echo $tema; ?></td><td align="center"><a title="<?php echo $tema; ?>" href="<?php echo $link_video; ?>" target="_blank" class="STYLE06"><?php echo $clique_aqui; ?></a></td><td align="center"><?php echo $prazo_validade_link; ?></td></tr><?php }?> <tr>

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.