Linux slogan
Visite também: Segurança Linux · BR-Linux.org · Dicas-L · Doode · NoticiasLinux · SoftwareLivre.org · UnderLinux



» Screenshot
Linux: XGL+Amarok Transparentes
Por KinKas
» Login
Login:
Senha:

Se você ainda não possui uma conta, clique aqui.

Esqueci minha senha



Scripts

Linux user

Publicado por Edmar Wantuil em (última atualização em 25/01/2012)   [ 1156 hits ]

Login: wantuiliv, 23954 pontos

   


Descrição

Boa tarde acabei de escrever esse código, que irá me ajudar em um cálculo estatístico. Espero que possa ajuda a outras pessoas também.
Esse código exibi a quantidade de cada dia da semana em um intervalo. Por exemplo:
Se digitarmos 01/01/2012 a 31/12/2012 ele exibirá:

Dia    Quantidade
Domingo    53
Segunda-Feira    53
Terça-Feira    52
Quarta-Feira    52
Quinta-Feira    52
Sexta-Feira    52
Sábado    52

Sei que é bem simples mas pode ser útil de várias formas :-).
Estou totalmente aberto a críticas amigos, sei que com elas poderei evoluir.

[ Download: semana.php ]   [ Enviar nova versão ]

[ Esconder código-fonte ]

<?
  //Retona a data em linux
  function data_unix($data)
  {
    $data= split("/", $data);
    return mktime(0,0,0,$data[1],$data[0],$data[2]);  
  }
  
  //Adiciona um dia a data
  function somadia($data)
  {  
    $data= split("/", $data);
    return date("d/m/Y",mktime(0,0,0,$data[1],$data[0] + 1,$data[2]));
  }
  
  //Retorna o numero do dia da semana
  function dia_semana($data)
  {
   $dia= date("w", data_unix($data));
   return $dia;
  }
?>
<html>
    <head>
        <title>Dias semana</title>
        <meta http-equiv="Content-Type"
          content   ="text/html; charset=UTF-8"
        />
        <script language="JavaScript">
          function valData(e,campo)
          {
            var tecla=(window.event)?event.keyCode:e.which;
            if(    (tecla > 47)
                && (tecla < 58)
              )
            {
              mascara(campo, '##/##/####');
              return true;
            }
            else
            {
              if (tecla != 8 )
                return false;
              else
              return true;
            }
          }
          
          function mascara(campo, mascara)
          {
            var i    = campo.value.length;
            var saida= mascara.substring(1,2);
            var texto= mascara.substring(i);
            if (texto.substring(0,1) != saida)
              campo.value += texto.substring(0,1);
          }
        </script>
    </head>
    <body>
      <form method="GET"
            action="index.php"
      >
        <b>Inicio:</b>
        <input type      = 'text'
               name      = 'inicio'
               size      = '10'
               maxlength = '10'
               onkeypress= 'return valData(event,this);return false;'
        >
        <b>Fim:</b>
        <input type      = 'text'
               name      = 'fim'
               size      = '10'
               maxlength = '10'
               onkeypress= 'return valData(event,this);return false;'
        >
        <input type ="submit"
               value="Calcular"
        >
      </form>
      <?
        //verifica se foi informado algo
        if($_GET['inicio'] || $_GET['fim'])
        {
          $inicio           = $_GET['inicio'];
          $fim              = $_GET['fim'];
          $semana[0]['nome']     = "Domingo";
          $semana[0]['quatidade']= 0;    
          $semana[1]['nome']     = "Segunda-Feira";
          $semana[1]['quatidade']= 0;
          $semana[2]['nome']     = "Terça-Feira";
          $semana[2]['quatidade']= 0;
          $semana[3]['nome']     = "Quarta-Feira";
          $semana[3]['quatidade']= 0;
          $semana[4]['nome']     = "Quinta-Feira";
          $semana[4]['quatidade']= 0;
          $semana[5]['nome']     = "Sexta-Feira";
          $semana[5]['quatidade']= 0;
          $semana[6]['nome']     = "Sábado";
          $semana[6]['quatidade']= 0;
      ?>
      
      <table border='1'>
        <tr>
          <td>Dia</td>
          <td>Quatidade</td>
        </tr>
        <?
        
          $data= $inicio;
          
          while(data_unix($fim) >= data_unix($data))
          {
            //busca o dia da semana
            $temp= dia_semana($data);
            
            //incrementa um dia ao dia da semana
            $semana[$temp]['quatidade']++;
            
            //incrementa um dia a data
            $data= somadia($data);
          }
          
          $cont= 0;
          
          //exibi resultado
          while(sizeof($semana) > $cont)
          {
            echo "
                  <tr>
                    <td>".$semana[$cont]['nome']."</td>
                    <td>".$semana[$cont]['quatidade']."</td>
                  </tr>
                 ";
            $cont++;
          }
        ?>
      </table>
      <?
        }
      ?>
  </body>
</html>

Scripts recomendados
   Script Linux recomendado Cron - Classe PHP para cálculo da diferença entre duas datas
   Script Linux recomendado Contador de Acessos
   Script Linux recomendado Controle de Estoque Evolution
   Script Linux recomendado Classe de Internacionalização(Multi linguagens)
   Script Linux recomendado Cria gráficos para monitoramento de consumo de CPU e Memória a partir de arquivos [Atualização].

Comentários
[1] Comentário enviado por renan.saddam em 25/01/2012 - 16:22h:

Opa, eu acabei de fazer de uma forma diferente da sua. Veja só:

<?php

function dias($comeco, $fim) {
$segundos = strtotime($fim) - strtotime($comeco);
$dias = $segundos / (60 * 60 * 24) + 1;
$semanas = floor($dias / 7);

$primeiro = date('w', strtotime($comeco));
$ordem = array_keys(array_flip(array_slice(range(0, 6), $primeiro)) + array_flip(array_slice(range(0, 6), 0, $primeiro)));

$semana = array_fill(0, 7, $semanas);
$mais = array_slice($ordem, 0, $dias % 7);
foreach ($mais as $dia) {
$semana[$dia]++;
}

return $semana;
}
function bonito($dias) {
$bonito = array('Domingo', 'Segunda-feira', 'Terça-feira', 'Quarta-feira', 'Quinta-feira', 'Sexta-feira', 'Sábado');
echo '<table>';
foreach (array_combine($bonito, $dias) as $dia => $quantidade) {
printf('<tr><td>%s</td><td>%d</td></tr>', $dia, $quantidade);
}
echo '</table>';
}

$dias = dias('2012-01-01', '2012-01-09');
bonito($dias);


Contribuir com comentário


  
Para executar esta ação você precisa estar logado no site, caso contrário, tudo o que for digitado será perdido.
Responsável pelo site: Fábio Berbert de Paula - Conteúdo distribuído sob licença GNU FDL
Site hospedado por:

Viva o Linux

A maior comunidade Linux da América Latina! Artigos, dicas, tutoriais, fórum, scripts e muito mais. Ideal para quem busca auto-ajuda em Linux.