Ir para conteúdo

POWERED BY:

Arquivado

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

Marcio_123

Consulta sql - order by desc com #erro

Recommended Posts

ola pessoal, alguem poderia me dar um help.

 

minha sql não esta organizando por data

"SELECT * FROM cadastro WHERE status = 'S' ORDER BY data_cadastro DESC";

Pela logica teria que listar o ultimo cadastro para o primeiro, mas esta misturando as datas. 

 

Obs. meu campo "data_cadastro" na tabela esta como VARCHAR

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa Eziquiel,

 

O detalhe é que o padrão do MYSQL é armazenar data como formato "2017-03-01",

 

Como farei para exibir a string em formata brasil "03/01/2017"; ou seja; inverter.

<?=$dados[data_cadastro]; ?>

 

abraço,

Compartilhar este post


Link para o post
Compartilhar em outros sites

Creio que assim irá funcionar, transformando seu VARCHAR em DATE.

 

"SELECT * FROM cadastro WHERE status = 'S' ORDER BY STR_TO_DATE(data_cadastro, '%d/%m/%Y') DESC";

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
Para converter o formato de datas você pode fazer como neste exemplo:

<?php
	$Date = '2010-04-19'; // Variável Date recebe a data no formato yyyy-mm-dd
	$Data = date('d/m/Y', strtotime($Date));  //Aqui a variável Data converte Date para o formato dd/mm/yyyy
?>

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Deu certo assim tambem Eziquiel, sem precisar mecher no select - somente na string

 

<?= strftime("%d/%m/%Y",strtotime($dados[data])); ?>

Eu fiz isso com uma tabela em teste,

 

Mas agora tenho a tabela com mais de 300 registros, e o que observei é que quando mudo o campo VARCHAR para DATE ele mata; "limpa" a data inserida quando era VARCHAR. Teria algum modo de mudar sem zerar as datas dos registros ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se quiser deixar como VARCHAR mesmo, apenas faça a conversão  para DATE no momento do SELECT.

 

"SELECT * FROM cadastro WHERE status = 'S' ORDER BY STR_TO_DATE(data_cadastro, '%d/%m/%Y') DESC";

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por igmacedo
      Preciso criar uma rota para cada usuário, mais de forma automatizada. é preciso que a url fique assim:
      site.com/compane/nome_da_empresa
       
      repare na parte em negrito, deve ser feito uma consulta no banco de dados para saber se aquele nome existe ou não, se existir, ele mostra a view1, se não existir ele mostra a view2.
       
      dessa forma eu poderia pegar o nome dos usuários que já existem no bd e passar na url na forma de string para mostra uma especie de pagina personalizada para cada um, a ideia do projeto é ser single-tenancy, então não haverá subdominio, apenas paginas, poderiam me dar um norte para construir a funçao?
      não achei nada a respeito.
    • Por Luiz Antonio Barreto
      Ola,
       
      gostaria de uma ajuda para realizar uma consulta no meu banco mysql.
       
      Tenho uma tabela com o campo data campo hora e total(um número do tipo float crescente), essa tabela recebe dados diariamente, ou seja, no dia 1 vai ter vários registros contidos nos campos data, hora e total.
       
      Gostaria de uma consulta sql para selecionar a ultima hora do dia que o banco gravou no período de u mês. Ou seja,no dia 1 ele pega a ultima hora daquele dia, dia 2, dia 3 etc....
       
      A tabela está em anexo.
       
      Obrigado.
       
       

    • Por DarthEduu
      Pessoal, tenho uma tabela no banco chamada pedidos, onde o número do controle pode ser duplicado, pois o cliente no mesmo pedido pode comprar 2 itens, ou seja, cada linha vai inserir um produto comprado mas com o mesmo numero de controle, e eu queria que na hora de exibir os produtos comprados, mostrar apenas um, e ai quando eu clicar eu vou mostrar o resto, porém na exibição eu preciso que ele me traga apenas 1, pode ser o ultimo registro desse controle, e não duplicado como está vindo. não sei se fui claro.
       
      <table class="table"> <thead> <tr> <th scope="col">Número pedido</th> <th scope="col">Data</th> <th scope="col">Valor</th> <th scope="col">Situação</th> </tr> </thead> <? $result = ("SELECT * FROM pedidos WHERE id_cliente = '".$usr_id."' ORDER BY id DESC"); $execute = mysqli_query($conn, $result); if(mysqli_num_rows ($execute) > 0 ) { while ($dados_cliente = mysqli_fetch_assoc($execute)){ $data = $dados_cliente['data']; $controle = $dados_cliente['identificacao_pedido']; $valor_pedido = $dados_cliente['valor_pedido']; $valor_frete = $dados_cliente['valor_frete']; $situacao = $dados_cliente['situacao']; $total = $valor_pedido+$valor_frete; if ($situacao=='ag') { $exibir_situacao = 'Aguardando Pagamento'; } elseif ($situacao=='ap') { $exibir_situacao = 'Pagamento Aprovado'; } elseif ($situacao=='cn') { $exibir_situacao = 'Pagamento Cancelado'; } elseif ($situacao=='sp') { $exibir_situacao = 'Em separação'; } elseif ($situacao=='tr') { $exibir_situacao = 'Em transporte'; } elseif ($situacao=='en') { $exibir_situacao = 'Pedido Entregue'; } ?> <tbody> <tr> <th scope="row">#<?=$controle;?></th> <td><?=$data;?></td> <td>R$ <?=number_format($total,2,',','.');?></td> <td><span><strong><?=$exibir_situacao;?></strong></span></td> </tr> </tbody> <?}}else{?> <table class="table table-striped table-dark"> <center>Você não efetuou nenhum pedido ainda.</center> </table> <?}?> </table>  
    • Por josenilson
      Olá para todos!
       
      estou criando uma pagina bem simples de login autenticando pelo banco de dados, estou utilizando como conexão o PDO
      ate ai tudo bem uso como padrão para me conectar ao banco o seguinte algorítimo.
       
      $pdo = new PDO('mysql:host=localhost;dbname=nome do banco de dados', "root","" );
       
      o que estou com dificuldade para fazer é o seguinte:
      tenho um formulário HTML esse form manda os dados via post para uma determinada pagina exemplo verifica.php
      nesta pagina estou com o seguinte algorítimo.
       
      <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" /> <?php $login = $_POST['login']; $senha = $_POST['senha']; include "conexao.php"; $pdo = new PDO('mysql:host=localhost;dbname=sistema', "root","" ); if($conn == $login){ echo " <META HTTP-EQUIV=REFRESH CONTENT='0; URL=formulario_login.html'> <script type=\"text/javascript\"> alert(\"O nome de usuario nao corresponde.\"); </script>"; }else{ if($senha != $senha){//confere senha echo " <META HTTP-EQUIV=REFRESH CONTENT='0; URL=formulario_login.html'> <script type=\"text/javascript\"> alert(\"A senha não corresponde.\"); </script>"; }else{ session_start(); $_SESSION['login_usuario'] = $login; $_SESSION['senha_usuario'] = $senha; header('Location: desktop.php'); } } ?> Como notado no algorítimo só tem a parte de conexão com o banco, oque estou tentando fazer é, quando o usuário inserir dos dados no formulário seja feita uma verificação de que os dados realmente existem no banco como uma condição se (dados confere )ok prossiga se não mensagem de aviso, algo desse tipo, porem não sei como se constrói o consulta sql query com o pdo para realizar essa verificação. deis de já agradeço por me ajudar se possível peço que como exemplo mostre a resolução aplicada nesse código que criei pois sou iniciante em php e com o script já familiar sera melhor interpretado . aff josenilson pereira
    • Por Jefferson Elias
      Olá Pessoal tudo bem?
      Estou com a seguinte dificuldade, em certo ponto no meu projeto eu recebo de uma consulta sql o numero ID de uma categoria, desse número id eu preciso do nome referente a categoria dele.
       
      Ex: minha tabela
      Id = 10
      nome = Eventos
       
      como eu faço essa consulta no meu php?
       
      No meu caso eu tenho esse numero 10 em mãos eu quero o nome da categoria.
       
      Não sei se deu pra vocês entenderem.
       
      Obrigado!
×

Informação importante

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