Jump to content

order by


diokhan
 Share

Recommended Posts

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>';

...Join the dark side...and get a free cookie...

Link to comment
Share on other 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 🙂

...Join the dark side...and get a free cookie...

Link to comment
Share on other 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? ?

...Join the dark side...and get a free cookie...

Link to comment
Share on other 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.

"Quando eu for grande quero ser como o Celso"

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.