Ir para conteúdo

POWERED BY:

Arquivado

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

Camila de Paula

Listar registros por data - mês

Recommended Posts

Olá! Preciso de uma ajudinha aqui, por favor!

 

Tenho uma página que consulta e lista todos os registros feitos.

Tratei a data para que apareça no formato brasileiro, mas a página está listando respeitando apenas os DIAS da data, e preciso que ela considere além dos dias, o mês e o ano também.

 

Por exemplo, se tenho os seguintes dados: 05/01/2017 , 25/02/2017, 15/03/2017, 05 / 04/2017 não aparece nessa ordem cronológica.

 

Esta aparecendo da seguinte maneira :  25/03/2017,  20/02/2017, 05/01/2017,  05 / 04/2017 - respeitando apenas os 2 primeiros dígitos.

 

Código da consulta:

// pegar a pagina atual
$pagina = isset($_GET['pagina']) ? intval($_GET['pagina']) : 0;

	
// puxar o.s. do banco
$sql_code = "select * ,DATE_FORMAT(data_operacao, '%d/%m/%y') as 'data_operacao' from os order by data_operacao desc LIMIT $pagina, $itens_por_pagina";
	
$execute = $mysqli->query($sql_code) or die($mysqli->error);
$os = $execute->fetch_assoc();
$num = $execute->num_rows;

// pega a quantidade total de objetos no banco de dados
$num_total = $mysqli->query("select * from os")->num_rows;

// definir numero de páginas
$num_paginas = ceil($num_total/$itens_por_pagina);

 

Tabela:

<div class="container-fluid">
  		<div class="row">
  			<div class="col-lg-4">
  				<h1>Escala</h1>
  				<?php if($num > 0){ ?>
				<table class="table table-bordered table-hover table-striped">
					<thead>
						<tr>
                        	<td class="h5"><strong>Data</strong></td>
                            <td class="h5"><strong>O.S</strong></td>
                            <td class="h5"><strong>H. Início </strong></td>
                       
                            
						</tr>
					</thead>
					<tbody>
						<?php do{ ?>
						<tr>
                        	<td><?php echo $os['data_operacao']; ?></td>
							<td><?php echo $os['numero_contrato']; ?></td>
							<td><?php echo $os['h_inicio']; ?></td>
                            
                            
						</tr>
						<?php } while($os = $execute->fetch_assoc()); ?>
					</tbody>
				</table>

				<nav>
				  <ul class="pagination">
				    <li>
				      <a href="escala.php?pagina=0" aria-label="Anterior">
				        <span aria-hidden="true">&laquo;</span>
				      </a>
				    </li>
				    <?php 
				    for($i=0;$i<$num_paginas;$i++){
				    $estilo = "";
				    if($pagina == $i)
				    	$estilo = "class=\"active\"";
				    ?>
				    <li <?php echo $estilo; ?> ><a href="escala.php?pagina=<?php echo $i; ?>"><?php echo $i+1; ?></a></li>
					<?php } ?>
				    <li>
				      <a href="escala.php?pagina=<?php echo $num_paginas-1; ?>" aria-label="Próximo">
				        <span aria-hidden="true">&raquo;</span>
				      </a>
				    </li>
				  </ul>
				</nav>
  				<?php } ?>
  			</div>
  		</div>
  	</div>

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

tente ordenar pelo formato original de data, é o padrão SQL recomendado.

use a função format para exibir.

Compartilhar este post


Link para o post
Compartilhar em outros sites
2 horas atrás, Fernando C disse:

tente ordenar pelo formato original de data, é o padrão SQL recomendado.

use a função format para exibir.

 

Não consegui.

 

Fiz dessa forma:

 

Select:

$sql_code = "select * FROM os order by data_operacao desc LIMIT $pagina, $itens_por_pagina";

 

 

 

Exibição:

<?php echo date_format(strtotime($data_operacao['data_operacao']), 'd/m/Y');?>

 

Esse select funciona para mostrar a data no formato original, com o echo do jeito que estava. Mas quando uso o date_format no echo deste jeito para organizar a data , dá erro:

 

Notice: Undefined variable: data_operacao in ... (na linha do echo)

 

 

Aí eu acrescentei a seguinte linha para definir a variável:

if (isset($_POST["data_operacao"])) $data_operacao = $_POST["data_operacao"];

 E continua o erro.

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

oi.. supondo que a coluna é formato de data,

na verdade o que eu quis dizer é que você deve usar um "alias"
para a data formatada; tente assim:
(no caso estou usando tipo "date", simplesmente,
e minha tabela se chama "artigos" e a coluna se chama "dia"):
formatacao original
(veja que estou usando as mesmas datas q você):

 

euydIzy.jpg

 

exibindo a coluna original e a coluna formatada:

 

i88sKw1.jpg

 

codigo PHP:

<?php
//conexao

$sql_code = "select *, DATE_FORMAT(dia, '%d/%m/%y') as 'data_operacao' from artigos order by dia desc";
    
$execute = $mysqli->query($sql_code) or die($mysqli->error);
while($os = $execute->fetch_assoc())
{
echo $os['id'];
echo " - ";
echo $os['data_operacao'];
echo "<br>";
}
                        
?>

 

Xmmdo8f.jpg      

Compartilhar este post


Link para o post
Compartilhar em outros sites
2 horas atrás, Fernando C disse:

oi.. supondo que a coluna é formato de data,

na verdade o que eu quis dizer é que você deve usar um "alias"
para a data formatada; tente assim:
(no caso estou usando tipo "date", simplesmente,
e minha tabela se chama "artigos" e a coluna se chama "dia"):
formatacao original
(veja que estou usando as mesmas datas q você):

 

euydIzy.jpg

 

exibindo a coluna original e a coluna formatada:

 

i88sKw1.jpg

 

codigo PHP:


<?php
//conexao

$sql_code = "select *, DATE_FORMAT(dia, '%d/%m/%y') as 'data_operacao' from artigos order by dia desc";
    
$execute = $mysqli->query($sql_code) or die($mysqli->error);
while($os = $execute->fetch_assoc())
{
echo $os['id'];
echo " - ";
echo $os['data_operacao'];
echo "<br>";
}
                        
?>

 

Xmmdo8f.jpg      

 

 

Você está dizendo para criar uma coluna na tabela com o nome "dia" no formato date, é isso?

 

Outra coisa,  desculpe a ignorância, mas você nomeou sua tabela como "artigo", no caso a minha tabela é "os", então não entendi porque você colocou uma variável chamada $os... poderia me explicar, por favor?

 

Todo caso, criei na tabela a coluna "dia", e substituí o nome da tabela no select por "os", e ainda não funcionou. Agora não apresenta nenhum erro, mas retorna com os valores em branco.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Primeiro você ordena no sql com o formato americano, depois você transforma para o padrão brasileiro só para exibir.

 

Ex:

Ex: 

$sql_code = "select * from os order by data_operacao desc LIMIT $pagina, $itens_por_pagina"; //ordena normal no formato americano

$execute = $mysqli->query($sql_code) or die($mysqli->error);
while($os = $execute->fetch_assoc())
{
echo $os['id'];
echo " - ";
echo date('d-m-y', strtotime($os['data_operacao'])); // aqui você tranforma as datas recuperada do banco para formato brasileiro(Dia-mê-Ano)
echo "<br>";
}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
19 horas atrás, greg_kaippert disse:

Primeiro você ordena no sql com o formato americano, depois você transforma para o padrão brasileiro só para exibir.

 

Ex:


Ex: 

$sql_code = "select * from os order by data_operacao desc LIMIT $pagina, $itens_por_pagina"; //ordena normal no formato americano

$execute = $mysqli->query($sql_code) or die($mysqli->error);
while($os = $execute->fetch_assoc())
{
echo $os['id'];
echo " - ";
echo date('d-m-y', strtotime($os['data_operacao'])); // aqui você tranforma as datas recuperada do banco para formato brasileiro(Dia-mê-Ano)
echo "<br>";
}

 

Neste caso, retorna a data - 31-12-69

Compartilhar este post


Link para o post
Compartilhar em outros sites
21 horas atrás, greg_kaippert disse:

Primeiro você ordena no sql com o formato americano, depois você transforma para o padrão brasileiro só para exibir.

 

Ex:


Ex: 

$sql_code = "select * from os order by data_operacao desc LIMIT $pagina, $itens_por_pagina"; //ordena normal no formato americano

$execute = $mysqli->query($sql_code) or die($mysqli->error);
while($os = $execute->fetch_assoc())
{
echo $os['id'];
echo " - ";
echo date('d-m-y', strtotime($os['data_operacao'])); // aqui você tranforma as datas recuperada do banco para formato brasileiro(Dia-mê-Ano)
echo "<br>";
}

 

 

 

greg_kaippert, agora deu certo dessa maneira, mas para funcionar, troquei : 

 

while($os = $execute->fetch_assoc())

por:

 

$os = $execute->fetch_assoc();

 

Tópico RESOLVIDO, obrigada! =)

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • 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
    • Por violin101
      Caros amigos, saudações.
       
      Por favor, poderiam me ajudar.

      Estou com a seguinte dúvida:
      --> como faço para para implementar o input código do produto, para quando o usuário digitar o ID o sistema espera de 1s a 2s, sem ter que pressionar a tecla ENTER.

      exemplo:
      código   ----   descrição
           1       -----   produto_A
       
      Grato,
       
      Cesar
    • Por violin101
      Caros amigos, saudações.
       
      Humildemente peço desculpa por postar uma dúvida que tenho.

      Preciso salvar no MySql, os seguinte Registro:

      1 - Principal
      ====> minha dúvida começa aqui
      ==========> como faço para o Sistema Contar Automaticamente o que estiver despois do 1.____?
      1.01 - Matriz
      1.01.0001 - Estoque
      1.01.0002 - Oficina
      etc

      2 - Secundário
      2.01 - Loja_1
      2.01.0001 - Caixa
      2.01.0002 - Recepção
      etc
       
      Resumindo seria como se fosse um Cadastro de PLANO de CONTAS CONTÁBEIL.

      Grato,


      Cesar









       
    • Por violin101
      Caros amigos, saudações.

      Por favor, me perdoa em recorrer a orientação dos amigos.

      Preciso fazer um Relatório onde o usuário pode Gerar uma Lista com prazo para vencimento de: 15 / 20/ 30 dias da data atual.

      Tem como montar uma SQL para o sistema fazer uma busca no MySql por período ou dias próximo ao vencimento ?

      Tentei fazer assim, mas o SQL me traz tudo:
      $query = "SELECT faturamento.*, DATE_ADD(faturamento.dataVencimento, INTERVAL 30 DAY), fornecedor.* FROM faturamento INNER JOIN fornecedor ON fornecedor.idfornecedor = faturamento.id_fornecedor WHERE faturamento.statusFatur = 1 ORDER BY faturamento.idFaturamento $ordenar ";  
      Grato,
       
      Cesar
       
       
       
       
    • Por violin101
      Caros amigos, saudações
       
      Por favor, me perdoa em recorrer a orientação dos amigos, tenho uma dúvida.
       
      Gostaria de uma rotina onde o Sistema possa acusar para o usuário antes dos 30 dias, grifar na Tabela o aviso de vencimento próximo, por exemplo:
       
      Data Atual: 15/11/2024
                                           Vencimento
      Fornecedor.....................Data.....................Valor
      Fornecedor_1...........01/12/2024..........R$ 120,00 <== grifar a linha de Laranja
      Fornecedor_1...........01/01/2025..........R$ 130,00
      Fornecedor_2...........15/12/2024..........R$ 200,00 <== grifar a linha de Amarelo
      Fornecedor_2...........15/01/2025..........R$ 230,00
      Fornecedor_3...........20/12/2024..........R$ 150,00
       
      Alguém tem alguma dica ou leitura sobre este assunto ?

      Grato,
       
      Cesar
×

Informação importante

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