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

Erros em script que compara horas e datas


Rudy

Pergunta

Aloha pessoas,

sou bem iniciante em php, porém estou fazendo um scrip que faz o segunte:

Tendo os dados, hora de registro, hora atual, data registro e data atual, prazo de entrega e notificação. Eu estava tentando fazer um scrip que pegaga as horas do registro e soma com o prazo de entrega, ai quando as horas atuais fosse igual ao prazo de entrega menos o tempo de notificação é mandando um e-mail para alguém avisando que falta XX minutos para o prazo vencer.

To levando em conta tambem dias e horas uteis da semana, tendo como base seg a quinta das 8:00 as 18:00 e sextas das 8:00 as 17:00.

Bom meu problema está mesmo na comparação de horas, já programo um pouco em java, mas php sou iniciante mesmo. Olhem o codigo da para entender melhor

<html>
<head>
  <title>Teste PHP</title> 
</head>
<body>
<?php
$dia = date("D"); // pegando a data em formato extenso
switch($dia) {
case "Fri"; // sexta-feira
$dia = "Sexta-Feira";
case "Sat"; //Sabado
$dia = "Sabado";
case "Sun"; //domingo
$dia = "Domingo";
case "mon"; // segunda-feira
$dia = "Segunda-Feria";
case "Tue"; //Terça-Feira
$dia = "Terça-Feria";
case "Wed"; //quarta-feira
$dia = "Quarta-Feira";
case "Thu"; //quinta-feira
$dia = "Quinta-Feira";
}
?>

<?php
$dtCham = date ("$dia/$mes/$ano");//data recebida no formato dd/mm/aaaa
$hrCham = date ("$hr:$min");
$dtAtual = date ("j/m/y");
$hrAtual = date ("H:i");
$notif = "";//valor em minutos
$prazo = date ("$PH:$PM");;//prazo recebido no formato hr:min
$email = "";
//tranformando hora chamada em minutos
function emMin1($hrCham)
    {
        $novaHr = $hrCham;
        if(strpos($hrCham,":"))
        {
            $dados =  explode(":",$hrCham);
            $novaHr  =  $hrCham[0]*60;
            $novaHr  += $hrCham[1];
        }
        return $novaHr;
    }
//trnasformando prazo em minutos
function emMin2($prazo)
    {
        $novoPrzo = $prazo;
        if(strpos($prazo,":"))
        {
            $dados =  explode(":",$prazo);
            $novoPrzo  =  $prazo[0]*60;
            $novoPrzo  += $prazo[1];
        }
        return $novoPrzo;
    }
$hrUtil1 = date ("08:00");//hora util começo do dia
//Transformando hora util do começo do dia em minutos
function emMin3($hrUtil1)
    {
        $utilMin1 = $hrUtil1;
        if(strpos($hrUtil1,":"))
        {
            $dados =  explode(":",$hrUtil1);
            $utilMin1  =  $hrUtil1[0]*60;
            $utilMin1  += $hrUtil1[1];
        }
        return $utilMin1;
    }
$hrUtil = date ("18:00");//hora util fim do dia de segunda a quinta
//Transformando hora util do fim do dia em minutos
function emMin4($hrUtil)
    {
        $utilMin = $hrUtil;
        if(strpos($hrUtil,":"))
        {
            $dados =  explode(":",$hrUtil);
            $utilMin  =  $hrUtil[0]*60;
            $utilMin  += $hrUtil[1];
        }
        return $utilMin;
    }
$utilSexta = date ("17:00");//hora util da sexta feira
//Transformando hora util da sexta em minutos
function emMin5($utilSexta)
    {
        $utilMin = $utilSexta;
        if(strpos($utilSexta,":"))
        {
            $dados =  explode(":",$utilSexta);
            $utilSex  =  $utilSexta[0]*60;
            $utilSex  += $utilSexta[1];
        }
        return $utilSex;
    }
$przoEnt = $novaHr + $novoPrzo;
//compara se o dia é sexta, para trabalhar com horas da sexta
if($dia === Sexta-Feira){
    $resto = $przoEnt - $utilSex;
    $nvPrzo = $resto + $utilMin1;
    //Transforma $nvPrzo em horas
function emHora($nvPrzo)
    {
        $hora = $nvPrzo/60;
        $hora = (int)$hora;
        $minutos = $nvPrzo%60;
        if($hora<10)
        {
            $hora = "0".$hora;
        }
        if($minutos<10)
        {
            $minutos = "0".$minutos;
        }
        $nova = $hora.":".$minutos;
        return $nova;
    }
    //somando tres dias no novo prazo
$nvPzD = date("H:i j/m/y", mktime($nova[0],$nova[1],0,$dtCham[0]+3,0,0));
}
else{//Trabalha com a hora util do resto dos dias da semana
    if ($przoEnt > $utilMin){
    $resto = $przoEnt - $utilMin;
    $nvPrzo = $resto + $utilMin1;
//Transforma $nvPrzo em horas
function emHora($nvPrzo)
    {
        $hora = $nvPrzo/60;
        $hora = (int)$hora;
        $minutos = $nvPrzo%60;
        if($hora<10)
        {
            $hora = "0".$hora;
        }
        if($minutos<10)
        {
            $minutos = "0".$minutos;
        }
        $nova = $hora.":".$minutos;
        return $nova;
    }
//somando um dia no novo prazo
$nvPzD = date("H:i j/m/y", mktime($nova[0],$nova[1],0,$dtCham[0]+1,0,0));
}
else{
    $nvPrzo = $przoEnt;
}
}
//subtrai o prazo de entrega pelo tempo para notificação


$nvPrzo = $przoEnt - $notif;
//transforma hora atual em minutos
function emMin1($hrAtual)
    {
        $novaHrA = $hrAtual;
        if(strpos($hrAtual,":"))
        {
            $dados =  explode(":",$hrAtual);
            $novaHrA  =  $hrAtual[0]*60;
            $novaHrA  += $hrAtual[1];
        }
        return $novaHrA;
    }
if($nvPrzo == $novaHrA){
    mail("$email", "Assunto", "Line1 da msg\nLine2 da msg\nLine 3 da msg");
}
else{    
}
?>
</body>
</html>
Bom estava tentando testar o codigo, mas não estou conseguindo por causar de alguns erros, que acredito que sejam por causa da sintaxe da linguagem que não conheço bem, principalmente na hora de usar os if's para comparar horas. No segundo if do codigo que está dentro do primeiro else nesta linha
else{//Trabalha com a hora util do resto dos dias da semana
    if ($przoEnt > $utilMin)

essa é uma comparação que ta dando erro e eu não sei por que, já que os dois valores estão convertidos em minutos acho que posso utilizar o operador > não é??

Aguardo ajuda

Desde já agradeço, Obrigado...

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

Meu php informou que tu redeclaraste uma função, ou seja, tu escreves ela duas vezes com o mesmo nome...

Fatal error: Cannot redeclare emmin1() (previously declared in teste.php:35) in /var/www/sistema/teste.php on line 165

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,2k
    • Posts
      652k
×
×
  • Criar Novo...