ordenar tabla

Iniciado por sheiking, 2 Marzo 2019, 02:08 AM

0 Miembros y 1 Visitante están viendo este tema.

sheiking

hola que tal tengo una pequeña duda tengo una base de datos y en el programa hago que se muestre la tabla pero me gustaria añadirle un boton para ordenarlo segun id, genero y usuario pero la verdad no se como hacerlo llevo buscando soluciones y no se me ocurre nada :c aqui les adjunto el codigo
Código (php) [Seleccionar]

<?php 

$conexion=mysqli_connect('localhost','root','','actividad 7');

 
?>



<!DOCTYPE html>
<html>
<head>
<title>mostrar datos</title>
</head>
<body>

<br>

<table border="1" >
<tr>
<td>id</td>
<td>genero</td>
<td>nombre</td>
<td>color</td>
<td>comida</td>
</tr>

<?php 
$sql="SELECT * from personas";
$result=mysqli_query($conexion,$sql);

while($mostrar=mysqli_fetch_array($result)){
 ?>


<tr>
<td><?php echo $mostrar['id'?></td>
<td><?php echo $mostrar['genero'?></td>
<td><?php echo $mostrar['nombre'?></td>
<td><?php echo $mostrar['color'?></td>
<td><?php echo $mostrar['comida'?></td>
</tr>
<?php 
}
 ?>

                <?php
                
                
                ?>

</table>

</body>
</html>

srWhiteSkull

Con Ajax quedaría bien pero en vista de tus pobres conocimientos te recomiendo que lo hagas en plan fácil, pon en la cabecera de la tabla, en la cual usas tr en vez th, a cada campo del título pones un vínculo, etiqueta HTML a, y el vínculo que apunte a la página Php que muestras pero le pasas un parámetro por ejemplo así :

Código (html4strict) [Seleccionar]
...
<th><a href="https://mipagina/tabla?ordenar=id">Id</a></th>
<th><a href="https://mipagina/tabla?ordenar=nombre">Nombre</a></th>
<th><a href="https://mipagina/tabla?ordenar=genero">Género</a></th>
...


y luego en Php lo despachas con una consulta MySQL en base al parámetro.

https://www.w3schools.com/php/php_superglobals.asp

mchojrin

Lo que necesitas es agregar al final de tu SQL una cláusula de ordenamiento.

En lugar de:

$sql="SELECT * from personas";

Algo como:

$sql="SELECT * from personas ORDER BY nombre";

Combinando con la respuesta de @srWhitSkull lo que harías sería algo como:


$orden = in_array( $_GET['ordenar'], [ 'id', 'nombre', 'genero' ] ) ? $_GET['ordenar'] : 'id'; // Por seguridad

$sql="SELECT * from personas ORDER BY $orden";


Saludos
Ayudo a desarrolladores PHP a acceder a puestos mejor remunerados