Ir para conteúdo

Arquivado

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

paulaodaregulage

[Resolvido] calcular qtas vezes aparece uma palavra em uma coluna

Recommended Posts

Bom dia Srs,
eu qro descobrir qtos dias uteis há entre 2 datas e para isso...

eu consegui expor todas as datas entre 2 datas (ex.: 05/02/2018 à 15/02/2018) e ficaria assim(05/02/2018 06/02/2018 07/02/2018 ... 15/02/2018)

e descrevi o dia da semana que representa(05/02/2018 seg 06/02/2018 ter 07/02/2018 qua ... 15/02/2018 qui)

agora eu qria saber qtas vezes aparecem o sabado e domingo.

se puderem me ajudar


o script ficou assim:

<td>
<?php



$data_dia = substr('05/02/2018', 0, 2);
$data_mes = substr('05/02/2018', 3, 2);
$data_ano = substr('05/02/2018', -4);

$dat_out_dia = substr('15/02/2018', 0, 2);
$dat_out_mes = substr('15/02/2018', 3, 2);
$dat_out_ano = substr('15/02/2018', -4);

$data_1=$data_ano.'-'.$data_mes.'-'.$data_dia;
$data_2=$dat_out_ano.'-'.$dat_out_mes.'-'.$dat_out_dia;


$start = new \\DateTime($data_1);
$end = new \\DateTime($data_2);
$periodArr = new \\DatePeriod($start , new \\DateInterval('P1D') , $end);

foreach($periodArr as $period) {
$periodo2=$period->format('d/m/Y');
$periodo2a=$period->format('w').'<br />';

echo $periodo2; ?> <?php // echo $periodo2a;
if($period->format('w') == 0) { echo 'domingo' . '<br>';} else {};
if($period->format('w') == 1) { echo 'segunda' . '<br>';} else {};
if($period->format('w') == 2) { echo 'terça' . '<br>';} else {};
if($period->format('w') == 3) { echo 'quarta' . '<br>';} else {};
if($period->format('w') == 4) { echo 'quinta' . '<br>';} else {};
if($period->format('w') == 5) { echo 'sexta' . '<br>';} else {};
if($period->format('w') == 6) { echo 'Sábado' . '<br>';} else {};

$domingos=substr_count($periodo2a, '6'); //0 segunda 1terca 2quarta 3quin 4sexta 5sabado 6 domingo
?> qtd de domingo: <?php echo $domingos; ?> - <?php
?> qtd de fds: ???????? <?php echo $fds; ?> - <?php


?>




<?php
}


//data de término
//echo $end->format('d/m/Y');
$end2=$end->format('d/m/Y');
$end2a=$end->format('w');
//echo $end2;

$end2a=$end->format('w');

echo $end2; echo $end2a; ?> <?php // echo $periodo2a;
if($end->format('w') == 0) { echo 'domingo' . '<br>';} else {};
if($end->format('w') == 1) { echo 'segunda' . '<br>';} else {};
if($end->format('w') == 2) { echo 'terça' . '<br>';} else {};
if($end->format('w') == 3) { echo 'quarta' . '<br>';} else {};
if($end->format('w') == 4) { echo 'quinta' . '<br>';} else {};
if($end->format('w') == 5) { echo 'sexta' . '<br>';} else {};
if($end->format('w') == 6) { echo 'Sábado' . '<br>';} else {};

//echo substr_count($end2a, '0');
$domingos2=substr_count($end2a, '6');
?> qtd de domingo: <?php echo $domingos2; ?> - <?php

?> qtd de fds: ???????? <?php echo $fds; ?> - <?php
?>




?> qtd de fds total(do do inicio e do range até a ultima data): ???????? <?php echo $fds_total; ?> - <?php
</td>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não entendi muito bem o seu algoritmo e nem o que você quis fazer, eu fiz uma função talvez possa ajudar.

 

<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title></title>

</head>
<body>
<?php
$array_date = Array(); //cria um array

function calcularFDS($data_inicial,$days) {
  /*caso queira fazer uma função que calcule entre duas datas e não um intervalo
  basta trocar $days por $data_final, criar uma váriavel $intervalo que é a subtração das duas datas
  e substituir no for o $i por $intervalo*/
  $contador_fds = 0; 
  $contador_semana = 0;

  for($i = 0; $i < $days; $i++){
    //$array_date[$i] = date('Y-m-d',strtotime($data_inicial. ' + ' . $i .  ' days')); //formato Y-m-d
    $array_date[$i] = date('l',strtotime($data_inicial. ' + ' . $i .  ' days')); //formato dias da semana
    echo $array_date[$i] . "<br/>"; //imprime os dias da semana
    if($array_date[$i] == 'Saturday' || $array_date[$i] == 'Sunday'){ //verificar se é sábado ou domingo
      $contador_fds = $contador_fds + 1; //soma 1 se for sábado ou domingo
    }
    else{
      $contador_semana = $contador_semana + 1;
    }
  }
echo "Número de FDS: " . $contador_fds . "<br/>";
echo "Número de Dias corridos: " . $contador_semana . "<br/>";
}

calcularFDS('2018-02-06',14); //função teste

?>

</body>
</html>

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

Além dos exemplos acima, podes utilizar a classe DatePeriod para calcular o período entre duas datas.

$datePeriod = new \DatePeriod(new \DateTime('2018-01-01') , new \DateInterval('P1D') , new \DateTime());

foreach($datePeriod as $date)
{
    if ((int)$date->format('w') == 1)
    {
        echo $date->format('d/m/Y')."\n";// imprime todas as segundas-feiras do início do ano até ontem (a data de hoje não conta no período)
    }
}

Como você pode ver no seguinte link: https://3v4l.org/AQ0KL

 

Uma explicação mais detalhada você localizar aqui: https://pt.stackoverflow.com/a/165385/5007

 

De qualquer forma, esses cálculos desconsideram feriados.

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

MTO OBRIGADO KIM.

AJUDOU MTO!!!

TU É O CARA!

 

 

GABRIL você TB..OBGD

ESSA FUNÇÃO VAI ME AJUDAR  BASTANTE...

 

VLW PESSOAL!!!!

 

 

Agora eu tenho mais um desafio para os Srs...rs

 

mais ou menos assim:

 

banco de dados :acoes

tabela=livro

variaveis na tabela livro: id_livro, data_inicio ,data_final,data_inicio_2,data_final_2,atividade

 

obs:data_inicio e data_final estao  assim   d/m/Y (ex:08/02/2018)

data_inicio_2 e data_final_2 estao  assim   Ymd     (ex:20180208 )

 

ela completa ficaria assim

se houvesse aula de portugues do dia 05-02-2018 à 09-02-2018

ficaria assim na tebela

id_livro###data_inicio ###data_final######data_inicio_2###data_final_2###atividade

1####### 05-02-2018###09-02-2018#####20180205#####20180209####portugues

 

 

 

objetivo é criar um calendário que exponha qual atividade há para cada dia do ano.

dai eu criei o seguinte script php:

 

<tr><!-- ANO-->

<td colspan='365'>2018</td>   

</tr>

<tr><!-- meses do ano-->

<td colspan='31'>janeiro</td>        <td colspan='28'>Fevereiro</td> .....

</tr>

 

<tr> <!-- dias do mes-->

<td >1</td> <td >2</td> <td >3</td> ......

</tr>

 

 

<!-- aqui que deu um trabalhão   

########qria uma função automatica que expusesse tds esses dias

de forma pratica pra eu encaixar essas funções abaixo atraves da

data de inicio e data final das atividades

e mostrasse a atividade que haveria para aquela data

tipo aqueles calendários escolares#########

-->

<tr>

 <TD    ><!--dia 01/01/2018-->
 

<?php $sql = "SELECT * FROM livro WHERE     data_inicio_2 <= '20180101' and '20180101' <=data_final_2 ";
 $res = mysql_query($sql);  
while($linha = mysql_fetch_array($res)){    echo  $linha['atividades'] ;   } ?>
  </TD>


 <TD  > <!--dia 02/01/2018-->

 

<?php $sql = "SELECT * FROM livro WHERE     data_inicio_2 <= '20180102' and '20180102' <=data_final_2 ";
 $res = mysql_query($sql);  
while($linha = mysql_fetch_array($res)){    echo  $linha['atividades'] ;   } ?>
    

</TD>

 

<!--...e por ai vai..ate dia 31/12      20181231....rs-->

 

</tr>

 

 

 

 

PODEM DAR UM APOIO...

OBRIGADO PESSOAL...

 

 

 

CALENDARIO.png

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como o assunto do tópico já foi solucionado, crie um novo tópico com sua dúvida.

 

Não se esqueça de criar o tópico segundo as Orientações e Regras do Fórum de PHP

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por landerbadi
      Boa tarde pessoal. Estou tentado fazer uma consulta no banco de dados porém estou tendo dificuldades. Tenho uma tabela chamada "itens" com os seguintes campos: id, item, ativo. Nela tem cadastrado vários itens. No campo ativo eu coloco a letra "S" para informar que este item está ativo no sistema. Por exemplo: 1, casa, S 2, mesa, S 3, cama, S 4, moto S 5, rádio O quinto registro "radio" não está ativo no sistema pois não tem um "S" no campo ativo. E outra tabela chamada "produtos" com os seguintes campos (id, item1, item2, item3) com os seguintes registros: 1, casa, mesa, moto 2, mesa, casa, cama 3, rádio, cama, mesa Eu preciso fazer uma busca na tabela produtos da seguinte maneira: Eu escolho um registro na tabela "itens", por exemplo "mesa". Preciso fazer com que o php me liste todos os registros da tabela "produtos" que contenham a palavra "mesa". Até aqui tudo bem eu consigo listar. Estou fazendo assim: <?php $item = "mesa" $sql = mysqli_query($conn, "SELECT * FROM produtos WHERE item1 LIKE '$item' OR item2 LIKE '$item' OR item3 LIKE '$item' LIMIT 10"); while($aux = mysqli_fetch_assoc($sql)) { $id = $aux["id"]; $item1 = $aux["item1"]; $item2 = $aux["item2"]; $item3 = $aux["item3"]; echo $id . " - " . $item1 . ", " . $item2 . ", " $item3 . "<br>"; } ?> O problema é que está listando todos os registros que contém o item mesa. Eu preciso que o php verifique os demais item e me liste somente os registro em que todos os registros estejam ativos no sistema. No exemplo acima ele não deveria listar o registro 3. pois nesse registro contém o item "radio" e este item não está ativo no sistema. Ou seja, o registro "radio" na tabela itens não possui um "S" na coluna "ativo". Alguém sabe como resolver isso?
    • Por ILR master
      Fala galera.
      Espero que todos estejam bem.
      Seguinte: Tenho um arquivo xml onde alguns campos estão com : (dois pontos), como o exemplo abaixo:
       
      <item>
      <title>
      d sa dsad sad sadasdas
      </title>
      <link>
      dsadas dsa sad asd as dsada
      </link>
      <pubDate>sadasdasdsa as</pubDate>
      <dc:creator>
      d sad sad sa ad as das
      </dc:creator>
      </item>
       
      Meu código:
       
      $link = "noticias.xml"; 
      $xml = simplexml_load_file($link); 
      foreach($xml -> channel as $ite) {     
           $titulo = $ite -> item->title;
           $urltitulo = $ite -> item->link;
           print $urltitulo = $ite -> item->dc:creator;
      } //fim do foreach
      ?>
       
      Esse campo dc:creator eu não consigo ler. Como faço?
       
      Agradeço quem puder me ajudar.
       
      Abs
       
       
    • Por First
      Olá a todos!
       
      Eu estou criando um sistema do zero mas estou encontnrando algumas dificuldades e não estou sabendo resolver, então vim recorrer ajuda de vocês.
      Aqui está todo o meu código: https://github.com/PauloJagata/aprendizado/
       
      Eu fiz um sistema de rotas mas só mostra o conteúdo da '/' não sei porque, quando eu tento acessar o register nada muda.
      E eu também quero que se não estiver liberado na rota mostra o erro de 404, mas quando eu tento acessar um link inválido, nada acontece.
      Alguém pode me ajudar com isso? E se tiver algumas sugestão para melhoria do código também estou aceitando.
       
       
      Desde já, obrigado.
    • Por landerbadi
      Olá pessoal, boa tarde
       
      Tenho uma tabela chamada "produtos" com os seguintes campos (id, produto) e outra tabela chamada "itens" com os seguintes campos (id, prod_01, prod_02, prod_03, prod_04).
       
      Na tabela produtos eu tenho cadastrado os seguintes produtos: laranja, maçã, uva, goiaba, arroz, feijão, macarrão, etc.
       
      Na tabela itens eu tenho cadastrado os itens da seguinte maneira:
       
      1, laranja, uva, arroz, feijão;
      2, maçã, macarrão, goiaba, uva;
      3, arroz, feijão, maçã, azeite
       
      Meu problema é o seguinte: 
      Eu escolho um produto da tabela "produtos", por exemplo "uva".  Preciso fazer uma consulta na tabela "itens" para ser listado todos os registros que contenham o produto "uva" e que todos os demais produtos estejam cadastrados na tabela "produtos".
       
      No exemplo acima seria listado apenas dois registros, pois o terceiro registro não contém o produto "uva". 
       
      Alguém pode me ajudar? Pois estou quebrando a cabeça a vários dias e não consigo achar uma solução.
    • Por ILR master
      Pessoal, pergunta bem simples. Abaixo tenho o seguinte código:
       
      <script>
      function alerta()
      {
        if (window.confirm("Você realmente quer sair?")) {
          window.open("sair.html");
      }
      }
      </script>
       
      Funciona perfeitamente, só que está abrindo em outra janela e quero que abra na mesma janela.
       
      Alguém pode me ajudar?
×

Informação importante

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