Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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">«</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">»</span>
</a>
</li>
</ul>
</nav>
<?php } ?>
</div>
</div>
</div>>
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.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ê):
/applications/core/interface/imageproxy/imageproxy.php?img=https://i.imgur.com/euydIzy.jpg&key=968aea184bbe602b0dce0668bd2d5ecf6112a730ff3b4e74c7da4b36382eb4c8" class="ipsImage" alt="euydIzy.jpg" />
exibindo a coluna original e a coluna formatada:
/applications/core/interface/imageproxy/imageproxy.php?img=https://i.imgur.com/i88sKw1.jpg&key=5a51b72921c65e79f3b2810b5775e121a82ab89e1abec9854fcb87765ad5335c" class="ipsImage" alt="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>";
}
?>
/applications/core/interface/imageproxy/imageproxy.php?img=https://i.imgur.com/Xmmdo8f.jpg&key=88f809f8c1fdf77a9add8110480e859fcca89be0008a6fcdff48078633016e6e" class="ipsImage" alt="Xmmdo8f.jpg" />>
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ê):
/applications/core/interface/imageproxy/imageproxy.php?img=https://i.imgur.com/euydIzy.jpg&key=968aea184bbe602b0dce0668bd2d5ecf6112a730ff3b4e74c7da4b36382eb4c8" />
exibindo a coluna original e a coluna formatada:
/applications/core/interface/imageproxy/imageproxy.php?img=https://i.imgur.com/i88sKw1.jpg&key=5a51b72921c65e79f3b2810b5775e121a82ab89e1abec9854fcb87765ad5335c" />
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>";
}
?>
/applications/core/interface/imageproxy/imageproxy.php?img=https://i.imgur.com/Xmmdo8f.jpg&key=88f809f8c1fdf77a9add8110480e859fcca89be0008a6fcdff48078633016e6e" />
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.Fernando, outra coisa:
Testei seu código sozinho, só adicionando minha conexão ao banco, e ele retorna as datas todas assim: 00/00/00
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>";
}>
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>
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! =)
tente ordenar pelo formato original de data, é o padrão SQL recomendado.
use a função format para exibir.