Ir para conteúdo
Fórum Script Brasil
  • 0

Logica correta php, mysql


Augusto César

Pergunta

Bom meus amigos do ScriptBrasil serei breve, é o seguinte: criei um sistema com duas tabelas no banco de dados(mysql) uma tabela se chama equipamento e contem os campos :

equip_id int(11)

equip_tipo int(11)

equip_clt int(11)

equip_numero varchar(100)

equip_capacidade varchar(100)

equip_dimensoes varchar(100)

equip_local varchar(100)

equip_valor_patr float(10,2)

equip_data_aquisi date

equip_desc text

e outra tabela chamada processo que esta relacionada a tabela equipamento pela chave processo_equip:

processo_id int(11)

processo_tipo varchar(2)

processo_equip int(11)

processo_dataentrada date

processo_checklist varchar(100)

processo_dataproatual date

processo_dataproagenda date

processo_aviso int(11)

processo_obs text

processo_databook varchar(100)

processo_databookup varchar(100)

o sistema é simples eu cadastro o equipamento e depois eu cadastro um processo para este equipamento, o problema esta na na hora de uma consulta sql bom acho que seria isso, tipo durante o processo eu cadastro a

data do processo( processo_dataproatual) depois eu cadastro a data do proximo processo(processo_dataproagenda) e em seguida eu cadastro os dias antes da data do proximo processo em que eu quero ser avisado (processo_aviso)

ex: data do processo 2009-10-10 proximo processo 2009-12-20 avisar quantos dias antes? 10

então preciso que 10 dias antes do proximo processo que é 2009-12-20 eu receba um aviso no caso dia 2009-12-10 (que é 2009-12-20 - o valor 10)

como eu faria isso, com php com sql ou não da para ser feito?

Editado por Augusto César
Link para o comentário
Compartilhar em outros sites

6 respostass a esta questão

Posts Recomendados

  • 0

voce pode criar um script que verifique a diferença entre as datas do banco e se for == 10 enviar a mensagem

no sql pode usar algo como: SELECT DATEDIFF(now(),'2009-12-08') AS DiffDate

desta forma sabe qual a diferença direto pelo banco de dados

e para ser automatico voce precisa colocar o script para ser executado pelo cron (agendador de tarefas do sistema, supondo que seja linux, antes de colocar teste para ver se esta Ok)

Editado por jissa
Link para o comentário
Compartilhar em outros sites

  • 0
voce pode criar um script que verifique a diferença entre as datas do banco e se for == 10 enviar a mensagem

no sql pode usar algo como: SELECT DATEDIFF(now(),'2009-12-08') AS DiffDate

desta forma sabe qual a diferença direto pelo banco de dados

e para ser automatico voce precisa colocar o script para ser executado pelo cron (agendador de tarefas do sistema, supondo que seja linux, antes de colocar teste para ver se esta Ok)

no caso: a data para o proximo processo é dia 2009-10-25 e eu quero que ele me avise 10 dias antes então meu sql teria que montar um aviso para 2009-10-25

Link para o comentário
Compartilhar em outros sites

  • 0

Olá Augusto,

porque você não tenta no PHP mktime()... dá uma olhada.. http://www.php.net/manual/en/function.mktime.php... dá uma olhada agora nesses sites: http://sqlfromhell.wordpress.com/category/...ando-com-datas/ ou http://sqlfromhell.wordpress.com/2009/08/1...dias-da-semana/

abraços

Link para o comentário
Compartilhar em outros sites

  • 0

Eu estou perdido em minha propria logica, andei andei e confesso que não sei o que fazer tentei:

SELECT DATEDIFF((DATE_SUB(processo_dataproagenda, INTERVAL processo_aviso DAY)), CURDATE()) FROM processo

SELECT DATEDIFF(processo_dataproagenda, CURDATE()) FROM processo

SELECT * FROM processo WHERE DATEDIFF((DATE_SUB(processo_dataproagenda, INTERVAL processo_aviso DAY)), CURDATE())

SELECT * FROM processo WHERE DATEDIFF((DATE_SUB(processo_dataproagenda, INTERVAL processo_aviso DAY)), CURDATE()) AND (DATE_SUB(processo_dataproagenda, INTERVAL processo_aviso DAY)) = CURDATE()

DATE_ADD(DATE_SUB(processo_dataproagenda, INTERVAL processo_aviso DAY), INTERVAL 15 DAY)

nada de resultado, alguns parece que cheguei perto mais não deu

Link para o comentário
Compartilhar em outros sites

  • 0

Galera eu resolvi a questão com um pouco da ajuda passada pelo user @jissa e pelo user @Anarquista, apos revirar a logica de um e o blog do outro cheguei a esta conclusao:

<?php

//Pego a data agendada e subtraio a valor que o cliente quer ser avisado

$sql_check = "SELECT *, DATEDIFF((DATE_SUB(processo_dataproagenda, INTERVAL processo_aviso DAY)), CURDATE()) AS restante FROM processo";

$query_check = mysql_query($sql_check);

// monto minha listagem mostrando todos os registros que se enquadram nos proximos 30 dias baseado da data agendada menos o dia do aviso

while ($reg_check = mysql_fetch_array($query_check)){

$restante = $reg_check['restante'];

if ($restante <= 30){

echo "Proxima: $reg_check[processo_dataproagenda]<br>Faltam: $reg_check[restante] Dias<br>";

}

}

?>

assim se o proximo evendo for agendado para o dia 30 e o cliente quiser aviso deste evento 10 dias antes quando faltar 20 dias para o evento e se ele estiver entre os proximos 30 dias ele sera listado

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...