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

      Por favor, me perdoa em recorrer a ajuda dos amigos, mas preciso entender uma processo que não estou conseguindo sucesso.

      Como mencionado no Título estou escrevendo um Sistema Web para Gerenciamento de Empresa.
       
      Minha dúvida, que preciso muito entender:
      - preciso agora escrever a Rotina para Emissão de NFe e essa parte não estou conseguindo.
       
      tenho assistido alguns vídeos e leituras, mas não estou conseguindo sucesso, já fiz toda as importações das LIB da NFePhp conforme orientação.

      Preciso de ajuda.

      Algum dos amigos tem conhecimento de algum passo-a-passo explicando a criação dessa rotina ?

      tenho visto alguns vídeos com LARAVEL, mas quando tento utilizar e converter para PHP+Codeiginter, dá uma fila de erros que não entendo, mesmo informando as lib necessárias.

      Alguns do amigo tem algum vídeo, leitura explicando essa parte ?

      Grato,

      Cesar.
    • Por violin101
      Caros amigos, saudações.

      Por favor, me perdoa em recorrer ao auxílio dos amigos, mas preciso entender e resolver um problema.
       
      Tenho uma Rotina que o usuário seleciona os produtos que deseja para requerer ao setor responsável.
       
      O usuário escolhe um produto qualquer e Clicla em um button para incluir a lista.

      O problema que estou enfrentando é que após escolher o produto e teclar ENTER o Sistema já salva no BD.
       
      Gostaria de criar uma Tecla de Atalho, para quando incluir/escolher o produto na lista, o usuário tecla como exemplo:
      ALT+A  para agregar a lista
      ALT+S para salvar a lista de itens desejados.

      Assim, quando teclar enter, o sistema não dispara o GRAVAR na Base de Dados.

      Grato,

      Cesar
       
       
       
×

Informação importante

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