Ir para conteúdo

POWERED BY:

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 daemon
      Boa tarde,
       
      Eu tenho uma rotina que faz uma leitura do arquivo .xml de vários sites.

      Eu consigo pegar o tópico e a descrição, e mostrar a imagem que esta na pagina do link.
      Para isso utilizo esta função:
      function getPreviewImage($url) { // Obter o conteúdo da página $html = file_get_contents($url); // Criar um novo objeto DOMDocument $doc = new DOMDocument(); @$doc->loadHTML($html); // Procurar pela tag meta og:image $tags = $doc->getElementsByTagName('meta'); foreach ($tags as $tag) { if ($tag->getAttribute('property') == 'og:image') { return $tag->getAttribute('content'); } } // Se não encontrar og:image, procurar pela primeira imagem na página $tags = $doc->getElementsByTagName('img'); if ($tags->length > 0) { return $tags->item(0)->getAttribute('src'); } // Se não encontrar nenhuma imagem, retornar null return null; } // Uso: $url = "https://example.com/article"; $imageUrl = getPreviewImage($url); if ($imageUrl) { echo "<img src='$imageUrl' alt='Preview'>"; } else { echo "Nenhuma imagem encontrada"; }  
      Mas estou com um problema, esta funcão funciona quando coloco em uma pagina de teste.php. Preciso mostrar em uma página inicial diversas fotos de todos os links. (No caso acima só funciona 1).
    • Por violin101
      Caros amigos, saudações.
       
      Por favor, me permita tirar uma dúvida com os amigos.

      Tenho um Formulário onde o Usuário digita todos os Dados necessários.

      Minha dúvida:
      --> como faço após o usuário digitar os dados e salvar, o Sistema chamar uma Modal ou mensagem perguntando se deseja imprimir agora ?

      Grato,
       
      Cesar
    • Por Carcleo
      Tenho uma abela de usuarios e uma tabela de administradores e clientes.
      Gostaria de uma ajuda para implementar um cadastro
       
      users -> name, login, passord (pronta) admins -> user_id, registratiom, etc.. client -> user_id, registratiom, etc...
      Queria ajuda para extender de user as classes Admin e Client
      Olhem como estáAdmin
      <?php namespace App\Models; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; class Admin extends User {     use HasFactory;            protected $fillable = [         'name',         'email',         'password',         'registration'     ];      private string $registration;     public function create(         string $name,          string $email,          string $password,         string $registration     )     {         //parent::create(['name'=>$name, 'email'=>$email, 'password'=>$password]);         parent::$name = $name;         parent::$email = $email;         parent::$password = $password;         $this->registration = $registration;     } } User
      <?php namespace App\Models; // use Illuminate\Contracts\Auth\MustVerifyEmail; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Foundation\Auth\User as Authenticatable; use Illuminate\Notifications\Notifiable; use Illuminate\Database\Eloquent\Relations\BelongsToMany; class User extends Authenticatable {     /** @use HasFactory<\Database\Factories\UserFactory> */     use HasFactory, Notifiable;     static string $name;     static string $email;     static string $password;     /**      * The attributes that are mass assignable.      *      * @var list<string>      */     protected $fillable = [         'name',         'email',         'password',     ];          /**      * The attributes that should be hidden for serialization.      *      * @var list<string>      */     protected $hidden = [         'remember_token',     ];     /**      * Get the attributes that should be cast.      *      * @return array<string, string>      */     protected function casts(): array     {         return [             'email_verified_at' => 'datetime',             'password' => 'hashed',         ];     }          public function roles() : BelongsToMany {         return $this->belongsToMany(Role::class);     }       public function hasHole(Array $roleName): bool     {                 foreach ($this->roles as $role) {             if ($role->name === $roleName) {                 return true;             }         }         return false;     }         public function hasHoles(Array $rolesName): bool     {                 foreach ($this->roles as $role) {             foreach ($rolesName as $rolee) {             if ($role->name === $rolee) {                 return true;             }          }         }         return false;     }         public function hasAbility(string $ability): bool     {         foreach ($this->roles as $role) {             if ($role->abilities->contains('name', $ability)) {                 return true;             }         }         return false;     }     } Como gravar um Admin na tabela admins sendo que ele é um User por extensão?
      Tentei assim mas é claro que está errado...
      public function store(Request $request, Admin $adminModel) {         $dados = $request->validate([             "name" => "required",             "email" => "required|email",             "password" => "required",             "registration" => "required"         ]);         $dados["password"] =  Hash::make($dados["password"]);                  $admin = Admin::where("registration",  $dados["registration"])->first();                  if ($admin)              return                    redirect()->route("admin.new")                             ->withErrors([                                 'fail' => 'Administrador já cadastrados<br>, favor verificar!'                   ]);                            $newAdmin = $adminModel->create(                                    $dados['name'],                                    $dados['email'],                                    $dados['password'],                                    $dados['registration']                                 );         dd($newAdmin);         $adminModel->save();         //$adminModel::create($admin);                  return redirect()->route("admin.new")->with("success",'Cadastrado com sucesso');     }  
    • Por violin101
      Caros amigos, saudações.
       
      Gostaria de tirar uma dúvida com os amigos, referente a PDV.
       
      Estou escrevendo um Sistema com Ponto de Vendas, a minha dúvida é o seguinte, referente ao procedimento mais correto.

      Conforme o caixa vai efetuando a venda, o Sistema de PDV já realiza:
      a baixa direto dos produtos no estoque
      ou
      somente após concretizar a venda o sistema baixa os produtos do estoque ?
       
      Grato,
       
      Cesar
       
    • Por violin101
      Caros amigos do grupo, saudações e um feliz 2025.
       
      Estou com uma pequena dúvida referente a Teclas de Atalho.

      Quando o Caps Lock está ativado o Comando da Tecla de Atalho não funciona.
      ou seja:
      se estiver para letra minúscula ====> funciona
      se estiver para letra maiúscula ====> não funciona
       
      Como consigo evitar essa falha, tanto para Letra Maiúscula quanto Minúscula ?

      o Código está assim:
      document.addEventListener( 'keydown', evt => { if (!evt.ctrlKey || evt.key !== 'r' ) return;// Não é Ctrl+r, portanto interrompemos o script evt.preventDefault(); });  
      Grato,
       
      Cesar
×

Informação importante

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