Ir para conteúdo

Arquivado

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

Naimar

Definir Ordem da Pesquisa (Resultado) com radio Button

Recommended Posts

Preciso que o resultado de uma query (Estou usando <table> para listar os resultados) se ordenem (order by) conforme a escolha do usuário em um radio button.

 

Exemplo:

 

Depois de selecionar os parâmetros da pesquisa, o usuário tem três rádios (Por Nome, Por Data, Por Obra) e conforme a escolha dele, o resultado aparece "order by nome_obra" ou "order by data_obra" ou "order by id_obra".

 

Já tentei carregar o value da radio escolhida em uma variável $ordem_exibicao  e na query colocar "select *** order by $ordem_exibicao" mas o my sql não reagiu bem.

 

Sei que é algo simples pois vejo isso em praticamente todos os sistemas, mas minha inexperiência não está ajudando :(

Compartilhar este post


Link para o post
Compartilhar em outros sites

mas a não reagiu bem por que? como tá tentando fazer no form e no php? fica meio complicado sem ver a codigagem mas deve funfar tipo

<input type='radio' name='ordem' value='asc'>ascendente
<input type='radio' name='ordem' value='desc'>descendente
$ordem = $_POST['ordem'];
$sql = "SELECT *  FROM tabela WHERE condicao ORDER BY campo '$ordem'";

 

Compartilhar este post


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

mas a não reagiu bem por que? como tá tentando fazer no form e no php? fica meio complicado sem ver a codigagem mas deve funfar tipo


<input type='radio' name='ordem' value='asc'>ascendente
<input type='radio' name='ordem' value='desc'>descendente

$ordem = $_POST['ordem'];
$sql = "SELECT *  FROM tabela WHERE condicao ORDER BY campo '$ordem'";

 

Então, vou te mostrar o código que estou usando para testar:

 

HTML:

 

 <body>
        <form action="#" method="post">
            <p>

                <input type="radio" name="radio_ordem" value='id_dados'/>ID
                <input type="radio" name="radio_ordem" value='nome'/>Nome
                <input type="radio" name="radio_ordem" value='data'/>Data
            </p>
            <p>
                <input type="submit" value="Testa" name="bt_testa" />
            </p>
        </form>

    </body>

 

PHP

 

<?php

$conecta = new mysqli("localhost" , "root" , "" , "dinamica");
mysqli_set_charset($conecta,'utf8');

if(isset($_POST["bt_testa"]))

$ordem = $_POST['radio_ordem'];
echo $ordem; (Apenas testando o conteúdo da variável)

$busca = 'select id_dados,nome,data from tb_dados order by "$ordem"';
$resultado_busca = $conecta->query($busca);?>
<table>
<?php
while($montalista = $resultado_busca->fetch_object()) {?>
<tr>
<td><?php echo $montalista->id_dados;?></td>
<td><?php echo $montalista->nome;?></td>
<td><?php echo $montalista->data;?></td>
</tr>
<?php     
}
}
?>

 

O ERRO:

 

Se eu uso $busca = 'select...order by "$nome"' ele ignora a radio que eu cliquei, mas se eu usar $busca = 'select...order by $nome' (Sem as aspas duplas) dá: 

 

Fatal error: Uncaught Error: Call to a member function fetch_object() on boolean in E:\xampp\htdocs\teste.php:36 Stack trace: #0 {main} thrown in E:\xampp\htdocs\teste.php on line 36

Compartilhar este post


Link para o post
Compartilhar em outros sites

variável dentro duma string com aspas simples são tratadas como string também. pra funfar nesse caso tinhas que inverter as aspas simples e duplas ou então concatena a parada

 

$busca = 'select id_dados,nome,data from tb_dados order by "' . $ordem . '"';

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
18 horas atrás, marsolim disse:

variável dentro duma string com aspas simples são tratadas como string também. pra funfar nesse caso tinhas que inverter as aspas simples e duplas ou então concatena a parada

 


$busca = 'select id_dados,nome,data from tb_dados order by "' . $ordem . '"';

 

Marsolim, funcionou com order by  ' . $ordem . ' ';

 

Muito obrigado mesmo pela dica, eu já estava temendo ter de fazer vários selects mudando apenas esse finalzinho...

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por 4Unknow
      Bom dia galera.

      Estou querendo colocar um botão flutuante em meu site que acompanhe quando rolar para baixo.
      Um botão que vou utilizar para suporte.

      Um exemplo de como gostaria abaixo:


       
      Fico grato.
    • Por janir.matheus
      Boa tarde, peço ajuda dos membros desse fórum pois confesso estar completamente perdido.
      Tomando como base o diagrama (em anexo), preciso de uma query que retorne as empresas, seus produtos e as categorias de cada produto, sendo que cada produto pode pertencer a uma ou mais categorias.
       
      select tbl_produtos.Empresa, tbl_empresas.Nome, tbl_catprod.Categoria, tbl_classproduto.Classe, tbl_produtos.Id, tbl_produtos.Produto from tbl_produtos inner join tbl_empresas on tbl_produtos.Empresa = tbl_empresas.Id left join tbl_catprod on tbl_produtos.Id = tbl_catprod.Categoria left join tbl_classproduto on tbl_catprod.Categoria = tbl_classproduto.Id; Tentei a consulta mostrada acima mas o resultado não foi o que eu esperava.
      Agradeço antecipadamente pela ajuda.

    • Por FabianoSouza
      Pessoal, por que essa query com COLLATE  não funciona?
      declare @strPesquisa varchar(30) SET @strPesquisa = 'naicle' SET @sql = 'SELECT ' SET @sql = @sql + 'ML.nome ' SET @sql = @sql + 'FROM ' SET @sql = @sql + 'dbo.minhaTab AS ML ' SET @sql = @sql + ' WHERE ' SET @sql = @sql + ' nome LIKE ' SET @sql = @sql + '''%' + @strPesquisa COLLATE Latin1_General_CI_AI + '%''' EXEC (@sql) Não acusa erro ao rodar.
      Mas não traz os registro porque está gravado como "naiclê" (com acento), o que significa que não está aplicando a COLLATE.
       
      Montando essa mesma query mas da forma tradicional, o COLLATE funciona.
       
      SELECT ML.nome FROM dbo.minhaTab AS ML WHERE nome LIKE '%'+ @strPesquisa COLLATE Latin1_General_CI_AI+'%'  
       
    • Por peterstefan
      Olá, estou com uma query aqui e preciso pegar de 2 campos diferentes os dados diferente de 0,  mais quanto tento no AND ele somente traz um resultado, o OR ele traz um dos campos com o valor 0, teria alguma forma de pegar os dados diferente de 0 dos dois campus?
      preciso pegar o idOrganizador diferente de 0 e o idPiloto diferente de 0 
       
      SELECT * FROM boletos WHERE proc = 0 AND idOrganizador !='0' AND idPiloto ='0';  
    • Por mamotinho
      oi pessoal estou com um problema , não estou conseguindo passar todos os valores o foreach no json_encode() alguém poderia me ajudar, eu estou tentando monta um mecanismo de refresh em tempo real de uma lista de notificação veja abaixo:
       
      <script type="text/javascript"> function make_call() { // Fazendo requisição AJAX $j.post('teste.php', function (frase) { // Exibindo frase $j('#listas').html('<i>' + frase + '</i>'); }, 'JSON'); setTimeout(function(){ make_call(); }, 5000); } </script>
      Aqui é o arquivo que quero enviar para a div #lists
       
      <?php require("conexao/directory.php"); $notificar = $db->query("select TOP 5 * from Techi7CP.dbo.cabal_notificacao_geral order by regdate desc"); $notificacao = $notificar->fetchAll(); $count_notificacao = abs($notificar->rowCount()); if($count_notificacao==0){ echo '<li style="text-align:center;">não existe notificações no momento.</li>'; }else{ foreach($notificacao as $notif){ $consulta_conta = $db->query("select * from account.dbo.cabal_auth_table where UserNum='".$notif['usernum']."'")->fetchObject(); switch($notif['acao']){ case 'logadopremiado' : echo ' <li><a class="black-text" href="#!"><span class="material-icons icon-bg-circle red small">redeem</span>'.$notif['jogador'].' ganhou no Logado Premiado</a> <time class="media-meta grey-text darken-2" datetime="2015-06-12T20:50:48+08:00"> '.Data::ExibirTempoDecorrido(date("Y-m-d H:i:s.B", strtotime($notif['regdate']))).'</time> </li>'; break; case 'mudarsenha' : echo ' <li><a class="black-text" href="#!"><span class="material-icons icon-bg-circle teal small">vpn_key</span>'.$consulta_conta->Nome.' alterou sua senha</a> <time class="media-meta grey-text darken-2" datetime="2015-06-12T20:50:48+08:00"> '.Data::ExibirTempoDecorrido(date("Y-m-d H:i:s.B", strtotime($notif['regdate']))).'</time> </li>'; break; case 'distribuirpontos' : echo ' <li><a class="black-text" href="#!"><span class="material-icons icon-bg-circle cyan small">control_point</span>'.$notif['jogador'].' distribuiu seus pontos</a> <time class="media-meta grey-text darken-2" datetime="2015-06-12T20:50:48+08:00"> '.Data::ExibirTempoDecorrido(date("Y-m-d H:i:s.B", strtotime($notif['regdate']))).'</time> </li>'; break; case 'girodasorte' : echo ' <li><a class="black-text" href="#!"><span class="material-icons icon-bg-circle brown small">star_border</span>'.$consulta_conta->Nome.' usou o giro da sorte</a> <time class="media-meta grey-text darken-2" datetime="2015-06-12T20:50:48+08:00"> '.Data::ExibirTempoDecorrido(date("Y-m-d H:i:s.B", strtotime($notif['regdate']))).'</time> </li>'; break; case 'sistematpoint' : echo ' <li><a class="black-text" href="#!"><span class="material-icons icon-bg-circle green small">golf_course</span>'.$notif['jogador'].' recebeu seu tpoint por clique</a> <time class="media-meta grey-text darken-2" datetime="2015-06-12T20:50:48+08:00"> '.Data::ExibirTempoDecorrido(date("Y-m-d H:i:s.B", strtotime($notif['regdate']))).'</time> </li>'; break; case 'combo' : echo ' <li><a class="black-text" href="#!"><span class="material-icons icon-bg-circle amber small">videogame_asset</span>'.$notif['jogador'].' fez '.$notif['ExtraDetalhes'].' em sua primeira vez</a> <time class="media-meta grey-text darken-2" datetime="2015-06-12T20:50:48+08:00"> '.Data::ExibirTempoDecorrido(date("Y-m-d H:i:s.B", strtotime($notif['regdate']))).'</time> </li>'; break; } } } ?> como eu faria para ser exibido todos os resultados registrados com o json_encode().
×

Informação importante

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