• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

diokhan

order by

5 mensagens neste tópico

boas,

eu sei que é possível, e sei que já o fiz na escola no meu segundo ano, a minha dúvida é, eu coloco os dados que vou buscar a base de dados numa tabela, mas queria por exemplo, ao clicar no titulo da coluna ordenar por esse campo, por exemplo, tenho no topo "NAME | E-MAIL | USER | DATE" por definição vem ORDER BY NAME, mas ao clicar num outro titulo trocava o ORDER BY, espero ter-me feito perceber ;)

se ajudar, eu tenho este código onde quero realizar este ORDER BY:

if (isset($_SESSION['ACCESS_LEVEL'])){
if ($_SESSION['ACCESS_LEVEL']==2){
       	echo'
       	<th  align=center>
        		User
        	</th>
       		<th  align=center>
        	Access Level
       	</th>
       	<th>
       			Active User
       		</th>
       	<th  align=center>
       			Edit User
       		</th>
       		<th  align=center>
       			Delete User
       		</th>
       		</tr>';
       		}
}
       	$conexao = new Conexao();
	$conexao = $conexao->conexao;

	$paginacao = new Paginacao_PDO();
	if (!isset($_POST['consulta'])) {
		$paginacao->sql = "SELECT * FROM USER ORDER BY NAME ASC";

	}elseif (empty($consulta)){
		$auth_error = '<div id="notification_error">Search empty! Please enter a search word!</div>';
   			echo $auth_error;
   			$paginacao->sql = "SELECT * FROM USER ORDER BY NAME ASC";

	}elseif (strlen($consulta) < 3){
		$auth_error = '<div id="notification_error">Search must be at least 3 characters!</div>';
   			echo $auth_error;
   			
   			$paginacao->sql = "SELECT * FROM USER ORDER BY NAME ASC";
   				
	}else{
		$paginacao->sql = "SELECT * FROM USER WHERE ".$_POST['lst_user']."
									LIKE '%".$_POST['consulta']."%' ORDER BY NAME ASC";
	}

penso que aqui:

echo'
       	<th  align=center>
        		User
        	</th>
       		<th  align=center>
        	Access Level
       	</th>
       	<th>
       			Active User
       		</th>
       	<th  align=center>
       			Edit User
       		</th>
       		<th  align=center>
       			Delete User
       		</th>
       		</tr>';

tenho que fazer algo deste género certo?!

echo'
       	<th  align=center>
        		<a href=""?order=user>User</a>
        	</th>
       		<th  align=center>
        	<a href=""?order=level>Access Level</a>
       	</th>
       	<th>
       			<a href=""?order=active>Active User</a>
       		</th>
       	<th  align=center>
       			Edit User
       		</th>
       		<th  align=center>
       			Delete User
       		</th>
       		</tr>';

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

obrigado, vou já dar uma vista de olhos ;)

ta a funcionar, usei este link:

http://www.kryogenix.org/code/browser/sorttable/

obrigado pela ajuda ;)

PS: num pequeno pormenor que reparei, este sistema funciona, mas só aos dados que aparecem na pagina, porque os que estão na pagina seguinte e anterior não vai buscar, só ordenar os que estão na pagina actual, ando a ver o ficheiro para tentar alterar :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

boas,

eu já tentei alguns sort table, sei que é por javascript por ser do lado do cliente, funcionam e tal, mas existe um problema, ao fazer o sort table ele só ordena pelos dados da pagina, não vai as outras paginas buscar os dados, por exemplo, eu tenho a paginação e a cada pagina aparecem 10 registos, se eu fizer o sort table ele vai ordenar esses 10 registos que aparecem nessa pagina, os restantes registos não alteram, e queria que ao fazer o sort table ele corresse todos os dados, alguém sabe de algum tutorial ou assim que me possa ajudar? :hmm:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Podes por exemplo enviar pela QueryString o param que queres ordenar, por exemplo ?order=nome

E internamente farias algo do género

  switch ($_GET['order'])
            {
                case 'idade':
                    $order = 'AGE';
                    break;
                case 'xpto':
                    $order = 'XPTO';
                    break;
                case 'nome':
                default:
                    $order = 'NAME';
                   break;
            } //end $_GET['order']

depois, ao invocares o sql só precisarias de fazer $paginacao->sql = "SELECT * FROM USER ORDER BY ". $order ." ASC";

Atenção, isto é só uma ideia.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora