Remazela 6 Denunciar post Postado Novembro 24, 2016 Caros amigos Recorro mais uma vez a vossa ajuda. Por favor, tem como em PHP criar uma rotina onde através de um <input type="radio" /> ordenar os campos da tabela ? Por exemplo: [ ]Código [ ]Nome e etc Quando selecionado um RADIO, o campo text digita um valor e os campos da tabela são ordenados através do que foi informado no campo texto. Minha SQL que busca no Banco está da seguinte forma abaixo: $sql_pegaAtivos = 'SELECT cli.clienteId, cli.nome, imov.imovelCadastro, imov.imovelTermino, imov.imovelId, imov.imovelStatus, imov.imovelTitulo FROM imoveis imov INNER JOIN clientes cli ON imov.clienteId = cli.clienteId WHERE imov.imovelStatus = :imovelStatus AND imov.imovelTermino >= :data ORDER BY imov.imovelId ASC LIMIT '.$inicio.','.$maximo; try{ $query_pegaAtivos = $conecta->prepare($sql_pegaAtivos); $query_pegaAtivos->bindValue(':imovelStatus',$imovelStatus,PDO::PARAM_STR); $query_pegaAtivos->bindValue(':data',$data,PDO::PARAM_STR); $query_pegaAtivos->execute(); $resultado_pegaAtivos = $query_pegaAtivos->fetchAll(PDO::FETCH_ASSOC); $count_pegaAtivos = $query_pegaAtivos->rowCount(PDO::FETCH_ASSOC); } catch(PDOexception $error_pegaAtivos) { echo 'Erro ao pegar ativos'.$error_pegaAtivos->getMessage(); } foreach($resultado_pegaAtivos as $resAtivos){ $anuncioCliente = $resAtivos['clienteId']; $nomeCliente = $resAtivos['nome']; $anuncioId = $resAtivos['imovelId']; $anuncioTitulo = $resAtivos['imovelTitulo']; $anuncioInicio = $resAtivos['imovelCadastro']; $anuncioFinal = $resAtivos['imovelTermino']; $anuncioVisitas = $resAtivos['imovelVisitas']; } Por favor me perdoa por recorrer aos amigos. Grato, Renato Compartilhar este post Link para o post Compartilhar em outros sites
AndersonMamede 88 Denunciar post Postado Novembro 24, 2016 O que você quer dizer com "ordenar os campos da tabela"? Seria ordenar os registros (as linhas)? Se for, é só você colocar no ORDER BY o campo que você quer ordenar (que foi digitado); se não, tente detalhar mais o que precisa... Compartilhar este post Link para o post Compartilhar em outros sites
aoliveira178 7 Denunciar post Postado Novembro 24, 2016 Olá. Estes dados são exibidos aonde? Em uma <table>? Se sim, é mais simples ordenar a <table> do que criar parâmetros para reprocessar seu SQL. Veja este código simples de ordenação, sem recarregar a página e sem POST <!-- copie este script para o seu projeto --> <script type="text/javascript" src="http://www.kryogenix.org/code/browser/sorttable/sorttable.js"></script> <style> /* Sortable tables */ table.sortable thead { background-color:#eee; color:#666666; font-weight: bold; cursor: default; }</style> <table class="sortable"> <thead> <tr><th>Vendedor</th><th>Mês do Pagamento</th></tr> </thead> <tbody> <tr><td>João</td><td>12.000</td></tr> <tr><td>Maria</td><td>8.500</td></tr> <tr><td>Esther</td><td>9.200</td></tr> <tr><td>Jonas</td><td>15.300</td></tr> </tbody> <tfoot> <tr><td>TOTAL</td><td>45.000</td></tr> </tfoot> </table> Compartilhar este post Link para o post Compartilhar em outros sites
Remazela 6 Denunciar post Postado Novembro 24, 2016 Caros amigos Observação: desculpa as dúvidas antes programava em linguagem DOS. Para melhor entender o que preciso, abaixo anexei a imagem da tela: Após o usuário escolher qual forma quer visualizar a tela com a opção por Código ou Nome, o campo texto fica esperando ser alimentado por Código ou Caracteres. Como faço para o TEXT entender que é um número ou letras, para o ORDER BY fazer a busca ? Abaixo anexo meu fonte, que uso para chamar a rotina. <div id="content"> <?php include_once("menu.php");?> <div id="content_conteudo"> <label><span style="font:20px Arial; font-weight:bold; color:#006666;">Movimentação de Anúncios Pendentes</span></label> <!-- Campos da Tabela --> <table width="100%" border="0" cellspacing="3" cellpadding="0"> <tr style="background:#666; color:#FFF"> <td align="center">Cód.:</td> <td align="center">Nome do Cliente:</td> <td align="center">Cód.:</td> <td align="center">Título do Anúncio:</td> <td align="center">Cadastro em:</td> <td align="center">Data Término:</td> </tr> <?php //Variáveis que uso para busca no Banco de Dados $data = date('Y-m-d H:m:s'); $imovelStatus = 'pendente'; //Paginação da página $pag = "$_GET[pag]"; if($pag >= '1'){ $pag = $pag; } else { $pag = '1'; } $maximo = '15'; //RESULTADOS POR PÁGINA $inicio = ($pag * $maximo) - $maximo; //Seleção no Banco $sql_pegaAtivos = 'SELECT cli.clienteId, cli.nome, imov.imovelCadastro, imov.imovelTermino, imov.imovelId, imov.imovelStatus, imov.imovelTitulo FROM imoveis imov INNER JOIN clientes cli ON imov.clienteId = cli.clienteId WHERE imov.imovelStatus = :imovelStatus AND imov.imovelTermino >= :data ORDER BY imov.imovelId ASC LIMIT '.$inicio.','.$maximo; //Até aqui entendi, se alterar manualmente o ORDER BY, faz a pesquisa que quero try{ $query_pegaAtivos = $conecta->prepare($sql_pegaAtivos); $query_pegaAtivos->bindValue(':imovelStatus',$imovelStatus,PDO::PARAM_STR); $query_pegaAtivos->bindValue(':data',$data,PDO::PARAM_STR); $query_pegaAtivos->execute(); $resultado_pegaAtivos = $query_pegaAtivos->fetchAll(PDO::FETCH_ASSOC); $count_pegaAtivos = $query_pegaAtivos->rowCount(PDO::FETCH_ASSOC); } catch(PDOexception $error_pegaAtivos) { echo 'Erro ao pegar ativos'.$error_pegaAtivos->getMessage(); } //Pego os Dados que preciso foreach($resultado_pegaAtivos as $resAtivos){ $anuncioCliente = $resAtivos['clienteId']; $nomeCliente = $resAtivos['nome']; $anuncioId = $resAtivos['imovelId']; $anuncioTitulo = $resAtivos['imovelTitulo']; $anuncioInicio = $resAtivos['imovelCadastro']; $anuncioFinal = $resAtivos['imovelTermino']; $anuncioVisitas = $resAtivos['imovelVisitas']; //Código para mudar as linhas da Tabela autoincremento. $i++; if($i % 2 == 0){ //Cor para toda vez que a linha for par $cor = 'style="background: #F5FFFA"'; }else{ //Cor para toda vez que a linha for impar $cor = 'style="background: #B4EEB4;"'; } ?> <!-- Mostrar os campos na Tabela --> <tr <?php echo $cor;?>> <td align="center"><?php echo $anuncioCliente; ?></td> <td align="left"> <?php echo $nomeCliente; ?></td> <td align="center"><?php echo $anuncioId; ?></td> <td align="left"> <?php echo $anuncioTitulo; ?></td> <td align="center"><?php echo date('d/m/Y',strtotime($anuncioInicio)); ?></td> <td align="center"><?php echo date('d/m/Y',strtotime($anuncioFinal)); ?></td> </tr> <?php } //Fechar o 1.Foreach ?> </table> <!-- Função para informar que nenhum Código Cliente foi encontrado --> <?php if($count_pegaAtivos == '0'){ echo '<h2> Nenhum anúncio no momento!</h2>'; } else { } ?> <!--Paginação da página --> <?php //Faz a conexão com o Banco de Dados $conecta = mysql_connect("localhost", "root", ""); mysql_select_db("seularimovel", $conecta); //USANDO A MESMA SQL QUE QUE USOU PARA RECUPERAR OS RESULTADOS, SE TIVER A PROPRIEDADE WHERE USE A MESMA TAMBÉM $sql_res = mysql_query("SELECT * FROM imoveis WHERE imovelStatus = 'pendente' ORDER BY imovelTermino ASC"); $total = mysql_num_rows($sql_res); $paginas = ceil($total/$maximo); $links = '10'; //QUANTIDADE DE LINKS NO PAGINATOR echo "<a href=\"painel.php?exe=admin-imoveis/pendentes&pag=1\">Primeira</a> "; for ($i = $pag-$links; $i <= $pag-1; $i++){ if ($i <= 0){ }else{ echo"<a href=\"painel.php?exe=admin-imoveis/pendentes&pag=$i\">$i</a> "; } } echo "$pag "; for($i = $pag +1; $i <= $pag+$links; $i++){ if($i > $paginas){ }else{ echo "<a href=\"painel.php?exe=admin-imoveis/pendentes&pag=$i\">$i</a> "; } } echo "<a href=\"painel.php?exe=admin-imoveis/pendentes&pag=$paginas\">Última</a> "; ?> <div class="aviso"> <strong style="color:#cc0000; font-size: 16px;">Atenção:</strong> para APROVAR um Anúncio, informe o código do cliente abaixo. </div> <!-- Form para digitar qual Cliente/Anúncio deseja aprovar --> <form class="f_form" name="busca" action="painel.php?exe=admin-imoveis/pendentes_busca" enctype="multipart/form-data" method="post"> <label> <span style="font: 16px Arial; font-weight:bold; color:#333333;" >Código do Cliente:</span> <input type="text" name="clienteId" maxlength="10" size="10" onkeypress="return numberOnly(event)" required /> <input type="hidden" name="nome" value="<?php echo $nomeCliente; ?>" /> <input class="btn_tbl" type="submit" name="executar" id="executar" value="Pesquisar" /> </label> </form> </div><!--conteudo--> </div><!--contet--> <?php include_once("footer.php");?> <!--Script para Validar os Campos Moeda e Numérrcos do Formulário --> <script type="text/javascript"> //Valida os campos numéricos do formulário function numberOnly(e){ var tecla = new Number(); if(window.event) { tecla = e.keyCode; }else if(e.which) { tecla = e.which; }else { return true; } if((tecla >= "48") && (tecla <= "57") || tecla == 8){ return true; }else{ return false; } } </script> Grato, Renato Compartilhar este post Link para o post Compartilhar em outros sites
AndersonMamede 88 Denunciar post Postado Novembro 25, 2016 Acho que entendi... Você tem que: 1) Usar AJAX para recarregar os dados da tabela sem sair da página. Você carrega a página com a tabela vazia, aí faz a requisição AJAX (usando JavaScript) para carregar os dados e então desenha a tabela usando os dados que retornou da consulta. E quando o usuário clicar no botão "Pesquisar", você refaz a requisição AJAX mas passando o valor do radio selecionado e também o texto digitado no campo para refazer a consulta e redesenhar a tabela. Isso quer dizer que você tem que separar o código que faz a consulta do código que desenha a tabela, pois os dois são rodados em momentos diferentes. ou 2) Faz o submit do formulário de pesquisa para a própria página (a página toda é recarregada), para que todo o código seja executado novamente. Aí você vai ter acesso ao valor do radio selecionado e o texto digitado no campo, e pode adicioná-los na sua consulta. ou 3) Usar um plugin, como o DataTables, que faça a pesquisa e ordenação em sua tabela. Ou se você só precisa da ordenação, o sorttable indicado pelo aoliveira178 pode ser o suficiente. A opção 1 é boa, mas mudaria um bocado de coisas no seu código. Já a opção 2 seria poucas alterações no seu código, mas ela não é muito boa porque toda vez que for feito uma pesquisa, a página tem que ser completamente recarregada, o que aumenta o tráfego, e, dependendo da velocidade do servidor e da quantidade de informações, pode ficar um pouco lento. A opção 3 acho que é a melhor, mas também muda um bocado de coisas no seu código. A não ser que você queira fazer manualmente para aprender, é bem mais prático e produtivo deixar um plugin fazer isso. O DataTables tem várias outras opções incluídas automaticamente (só precisa ativar a opção nas configurações), como paginação, pintar as linhas, pesquisa, ordenação, etc. Compartilhar este post Link para o post Compartilhar em outros sites
Remazela 6 Denunciar post Postado Novembro 25, 2016 Amigo Anderson Grato pelo seus esclarecimentos, vou efetuar as alterações. Depois posto o resultado, para ajudar quem tiver a mesma dúvida. Grato Renato Compartilhar este post Link para o post Compartilhar em outros sites
John Lennon Furquim 1 Denunciar post Postado Novembro 25, 2016 Ola ... agradeço também tinha uma duvida com relação ao plugin de pesquisa mais lendo aqui a conversa consegui um bom resultado ... Estou começando agora , estou fazendo um curso pela internet , se puderem ver e falar se vale a pena ou se é melhor fazer outro eu agradeço ... http://cursodephponline.com Compartilhar este post Link para o post Compartilhar em outros sites
AndersonMamede 88 Denunciar post Postado Novembro 25, 2016 @Remazela Beleza! Se tiver dúvidas, pode postar no fórum que o pessoal ajuda. @John Lennon Furquim Dando uma olhada nos tópicos abordados no curso, ele me parece ser ótimo. Ele aborda os principais assuntos relacionados ao PHP, e o conteúdo também parece ser bem atual. Quanto ao valor, aí vai de pessoa para pessoa. Todo o conteúdo abordado está disponível de graça na internet... no youtube, em blogs, e até na própria documentação do PHP. Mas há pessoas que preferem fazer um curso como esse aí, completo, do início a fim, ao invés de ter que procurar cada assunto (e muitas vezes ficar perdido no que estudar); e não é um valor muito alto, sem contar que é um investimento, e não um gasto "atoa". Compartilhar este post Link para o post Compartilhar em outros sites