Foros del Web » Programando para Internet » PHP »

Mostrar Ordenamiento en una tabla

Estas en el tema de Mostrar Ordenamiento en una tabla en el foro de PHP en Foros del Web. Hola Un saludo a todos desde Mexico. Quiero hacer lo siguiente pero no tengo la minima idea, alguien me puede orientar por favor. Tengo una ...
  #1 (permalink)  
Antiguo 28/07/2002, 13:29
 
Fecha de Ingreso: julio-2002
Mensajes: 20
Antigüedad: 15 años, 4 meses
Puntos: 0
Mostrar Ordenamiento en una tabla

Hola Un saludo a todos desde Mexico.

Quiero hacer lo siguiente pero no tengo la minima idea, alguien me puede orientar por favor.

Tengo una tabla en una pagina WEB que muestro despues de ejecutar una consulta a una tabla que tengo en una base de datos de mysql. El caso es que muestra los campos de Fecha,Hora,Nombre,Evento etc. En la tabla tengo estos titulos como encabezado. Deseo que pueda dar un clic en el titulo de una de las columnas de la tabla y los elementos de esa columna se ordenen en forma descedente y si de nuevo doy un clic que se ordenen en forma ascendente.

Gracias a todos de antemano por su ayuda y tiempo. :)
  #2 (permalink)  
Antiguo 28/07/2002, 14:27
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Re: Mostrar Ordenamiento en una tabla

En tus consultas . usa:

ORDEN BY campo DESC

o

ORDEN BY campo ASC

es decir . suma eso a tus consultas actuales

$orden_campo = "uncampodetuBD";
$sentido="ASC"

$SQL="SELECT * FROM ..... ORDEN BY $orden_campo $sentido";

Usando un link en el encabezado de las tablas tipo:
tupagina.php?orden=campo_de_tu_bd

ahi ordenas .. y otro para el sentido .. eso si para q te respete el orden y sentido .. tendras q pasarle ambos parametros tanto para el orden de campo como para el orden de sentido ..

Un saludo,
  #3 (permalink)  
Antiguo 30/07/2002, 12:15
 
Fecha de Ingreso: julio-2002
Mensajes: 20
Antigüedad: 15 años, 4 meses
Puntos: 0
Re: Mostrar Ordenamiento en una tabla

Saludos.

Cluster no me quedo muy claro e intente hacerlo como lo entendi con tu valiosa ayuda,nada mas que no me resulta, cuando doy clic en la liga del encabezado de la tabla me muestra el error de que la pagina no existe.

Este es el codigo: Aqui no esta completo por la restriccion de que el mensaje debe de ser no muy largo. Pero se encuentra lo que deseo hacer

Gracias de antemano por tu ayuda.
<head>
<title>Consultas a las bitacora</title>
<body bgcolor="#000066">
<body>
<?
$orden_campo="fecha";$sentido="DES& quot;;
include("conex.php");
$link=Conectarse();
switch($op) {
case "SWITCH":
$result=mysql_query("select * from bitacora where fecha='$Fecha' AND dispositivo='$op' ORDER BY '$orden_campo' '$sentido'" ,$link);
break;
}
.
.
{
?>
<FONT FACE="ARIAL" COLOR=#FFFFFF><H1><CENTER>CONSULTAS </CENTER></H1></FONT><HR><BR>
<TABLE WIDTH=100% BORDER=1 CELLSPACING=0 CELLPADDING=0 BORDERCOLOR="white">
<TR BGCOLOR="#99CC66">
<TD ALIGN=CENTER><FONT FACE="ARIAL" COLOR="#000066" SIZE=2><b>Nombre</FONT></b></TD>
<TD ALIGN=CENTER><FONT FACE="ARIAL" COLOR="#000066" SIZE=2><a href="$consulta.php?orden=fecha"</a><b>Fecha</FONT></b></TD>
</TR>
<?
if ($row = mysql_fetch_array($result)) {
do {
printf("<br><tr bgcolor=#99cc66><td align=top>%s</td><td>  %s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td></tr>",
$row["empleado"],$row["fecha"],$row["hora"],$row["dispositivo"],$row["actividad"],$row["evento"]);
}while ($row = mysql_fetch_array($result));
}
else
{
printf("<FONT FACE=ARIAL COLOR=#FFFFFF SIZE=5>No se encontro ningun registro!!!!!!</FONT><HR>");
}
mysql_free_result($result);
mysql_close($link);
?>







  #4 (permalink)  
Antiguo 30/07/2002, 14:09
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Re: Mostrar Ordenamiento en una tabla

Viendo un pco tu codigo veo algunos detalles:

Código:
$result=mysql_query("select * from bitacora where fecha='$Fecha' AND dispositivo='$op' ORDER BY '$orden_campo' '$sentido'" ,$link);
Las comillas en '$orden_campo' y '$sentido' no son necesarias.

Código:
<a href="$consulta.php?orden=fecha"</a>
Aqui .. haces el link a la pagina consulta.php (sobra el $ delante no?) ..
Tambien .. le pasas como parametro "orden" .. pero el pametro es orden_campo ...

Deberia ser ese link:
Código:
<a href="consulta.php?orden_campo=fecha&sentido=$sentido">Fecha</a>
para otros campos ..
Código:
<a href="consulta.php?orden_campo=empleado&sentido=$sentido">Empleados</a>
etc...


Tambien debes usar una condicion para determinar los valores por defecto que usaras en la consulta si no se indica ninguno ..:

Código:
if (!isset($orden_campo)){
$orden_campo="fecha";
}
if (!isset($sentido)){
$sentido="DESC";
}
(eso en vez de tu linea: $orden_campo="fecha";$sentido="DESC ";
)

Y para cambiar entre DESC y ASC ..
(esto debajo del anterior codigo de seleccion de parametros por defecto)
Código:
if ($sentido=="DESC){
<a href="consulta.php?orden_campo=$orden_campo&sentido=ASC">Orden Ascendente</a>
} else {
<a href="consulta.php?orden_campo=$orden_campo&sentido=DESC">Orden Descendente</a>
}
Espero que lo compredas ahora mejor ..

Un saludo,


  #5 (permalink)  
Antiguo 30/07/2002, 18:14
 
Fecha de Ingreso: julio-2002
Mensajes: 20
Antigüedad: 15 años, 4 meses
Puntos: 0
Re: Mostrar Ordenamiento en una tabla

Gracias Cluster.
  #6 (permalink)  
Antiguo 31/07/2002, 20:40
 
Fecha de Ingreso: julio-2002
Mensajes: 20
Antigüedad: 15 años, 4 meses
Puntos: 0
Re: Mostrar Ordenamiento en una tabla

Saludos :)

En Donde esta el error

if($sentido=="DESC")
{
<a href=consulta.php?orden_campo=$orden_campo&sen tido=ASC">Ascendente</a>
}
else
{
<a href="consulta.php?orden_campo=$orden_campo&a mp;sentido=DESC">Descendente</a>

}

Pues me marca este error: Parse error: parse error, unexpected '<' in /usr/local/apache/htdocs/consulta.php on line 22
Y por mas que ya lo busque no lo enecuentro.

Gracias de antemano por su ayuda.
  #7 (permalink)  
Antiguo 31/07/2002, 20:56
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Re: Mostrar Ordenamiento en una tabla

Como te habras dado cuenta . ahora q te lo digo ... faltan los "echo" para dar salida .. y falta unas comillas ..

if ($sentido=="DESC"){
echo "<a href='consulta.php?orden_campo=$orden_campo&se ntido=ASC'>Orden Ascendente</a>";
} else {
echo "<a href='consulta.php?orden_campo=$orden_campo&se ntido=DESC'>Orden Descendente</a>";
}

Yo puse unos ejemplos .. pensé q .. bueno .. aquí esta la solución ...

Un saludo,
  #8 (permalink)  
Antiguo 01/08/2002, 13:36
 
Fecha de Ingreso: julio-2002
Mensajes: 20
Antigüedad: 15 años, 4 meses
Puntos: 0
Re: Mostrar Ordenamiento en una tabla

Un saludo a todos. :)
El siguiente codigo no me funciona para el orden que quiero mostrar en la tabla. En parte la estoy regando. Lo pueden revisar por favor?.

Gracias Cluster
<?
include("conex.php");
$link=Conectarse();
if (!isset($orden_campo)){
$orden_campo="fecha";
}
if (!isset($sentido)){
$sentido="DESC";
}
if ($sentido=="DESC") {
echo "<a href='consulta.php?orden_campo=$orden_campo&se ntido=ASC'>Orden Ascendente</a>";
}else{
echo "<a href='consulta.php?orden_campo=$orden_campo&se ntido=DESC'>Orden Descendente</a>";
}
switch($op) {
case "SWITCH":
$result=mysql_query("select * from bitacora where fecha='$Fecha' AND dispositivo='$op' ORDER BY $orden_campo $sentido" ,$link);
break;

}
?>
<FONT FACE="ARIAL" COLOR=#FFFFFF><H1><CENTER>CONSULTAS </CENTER></H1></FONT><HR><BR>
<TABLE WIDTH=100% BORDER=1 CELLSPACING=0 CELLPADDING=0 BORDERCOLOR="white">
<TR BGCOLOR="#99CC66">
<TD ALIGN=CENTER><FONT FACE="ARIAL" COLOR="#000066" SIZE=2><b>Nombre</FONT></b></TD>
<TD ALIGN=CENTER><FONT FACE="ARIAL" COLOR="#000066" SIZE=2><a href="consulta.php?orden_campo=fecha&sent ido=$sentido"</a><b>Fecha</FONT></b></TD>
<TD ALIGN=CENTER><FONT FACE="ARIAL" COLOR="#000066" SIZE=2><b>Hora </FONT></TD>
<
</TR>
<?
if ($row = mysql_fetch_array($result)) {
do {
printf("<br><tr bgcolor=#99cc66><td align=top>%s</td><td>  %s</td>",
$row["empleado"],$row ["fecha"]);
}while ($row = mysql_fetch_array($result));

}else{
printf("<FONT FACE=ARIAL COLOR=#FFFFFF SIZE=5>No se encontro ningun registro!!!!!!</FONT><HR>");
}
mysql_free_result($result);
mysql_close($link)

Carlos Sanchez Soto
La felicidad es un estado de animo.
  #9 (permalink)  
Antiguo 02/08/2002, 21:53
 
Fecha de Ingreso: julio-2002
Mensajes: 20
Antigüedad: 15 años, 4 meses
Puntos: 0
Re: Mostrar Ordenamiento en una tabla

Gracias por el interes mostrado, Lo que deseaba hacer me funciono de la siguiente formaa:

<?
include("conex.php");
$link= Conectarse();
$sqltxt= "SELECT * FROM bitacora";

switch($op){
case "SWITCH":
sqltxt .= " WHERE fecha LIKE '$Fecha' AND dispositivo LIKE '$op'";
.
.
.
}


Y para lo del ordenamiento:

switc($orden_campo) {
case "nombre":
$sqltxt .= " ORDER BY nombre";
break;
case "fecha":
$sqltxt .=" ORDER BY fecha";

}

if ($sentido=="DESC" || !isset($sentido))
$sqltxt .= " desc";
else
$sqltct .=" asc";
$result=mysql_query($sqltxt,$link);


Para llamar a las ligas en la tabla de html:

<TD>Nombre < a href ="consulta.php?orden_campo=nombre&sentido =DES">Descendente></a> <a href="consulta.php?orden_campo=nombre&sen tido=ASC">ascendente</a>

Tambien se deben de crear las variables que indica Cluster por que se muestra la consulta con unos valores por defecto y no marque error.

Gracias a todos.
:)
  #10 (permalink)  
Antiguo 02/08/2002, 22:31
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Re: Mostrar Ordenamiento en una tabla

Ok Lord ...

Yo lo hago por el metodo que te he intentado explicar a lo largo de varios mensajes .. y me va ... Eso si, no es lo mismo poner en un foro .. q estar con la BBDD y todo armado para probarlo ..

Un saludo,
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 07:24.