Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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 :(>
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 36variá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 . '"';
>
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...
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