Foros del Web » Programando para Internet » PHP »

ordenar tabla con click

Estas en el tema de ordenar tabla con click en el foro de PHP en Foros del Web. quiero saber como se hace esto tengo una consulta que genera varios resultados y estos van a una tabla esa tabla quiero que si la ...
  #1 (permalink)  
Antiguo 10/03/2010, 12:53
 
Fecha de Ingreso: enero-2010
Mensajes: 152
Antigüedad: 14 años, 2 meses
Puntos: 0
ordenar tabla con click

quiero saber como se hace esto
tengo una consulta que genera varios resultados y estos van a una tabla esa tabla quiero que si la persona apreta en el nombre de la columna se ordene ascendente y/o descendente
esto no es llegar y ocupar order by pq asi saldria ordenado
encontre en el foro unas ideas pero no me resultan
si me pudieran guiar lo agradeceria
esta es mi consulta

Código PHP:
function mostrarEquipos($accion){
            
$dbConexion = new DBMysql();
            
$dbConexion->query("select m.idMaquina, m.hostname, m.ipHost, m.serialNumber, e.nomEstado, a.nomAreaMaquina,
                               i.idimagen, n.nombreContacto
                               from maquina m, estado e, areaMaquina a, imagen i, nombrecontacto n
                               where m.idEstado = e.idEstado AND m.idAreaMaquina=a.idAreaMaquina AND m.idimagen=i.idimagen
                               AND m.idNombreContacto=n.idNombreContacto ORDER BY idMaquina ASC"
);

                while ( 
$res $dbConexion->getRegister() ) {
                        echo 
"<tr><td><a href='detalles.php?m=$res[0]&op=view'>$res[0]</a></td><td>";
                        echo 
$res[4];
                        echo 
"</td><td><a href='detalles.php?m=$res[0]&op=view'>$res[1]</a></td><td>";
                        echo 
$res[2];
                        echo 
"</td><td>$res[3]</td><td>";
                        echo 
"</td><td>$res[5]</td><td>";
                        echo 
"</td><td>$res[7]</td><td>";
                        }
                        } 
aqui se hace la tabla y quisiera que al apretar ID, Area y Nombre contacto se pueda ordenar

<table width="100%" class="menu">
<tr>
<th>ID</th>
<th>Estado</th>
<th>Hostname</th>
<th>IP</th>
<th>Serial Number</th><th></th>
<th>Area<th>
<th>Nombre Contacto</th>
<th>Acci&oacute;n</th>
</tr>
<?php mostrarEquipos($accion); ?>
</table>
  #2 (permalink)  
Antiguo 10/03/2010, 13:03
Avatar de eulloa  
Fecha de Ingreso: octubre-2007
Ubicación: Donde caiga la noche, si mi hijo me deja
Mensajes: 691
Antigüedad: 16 años, 6 meses
Puntos: 5
Respuesta: ordenar tabla con click

Puedes hacer una función que acepte como parámetro la columna a ordenar. ¿No te sirve así?
  #3 (permalink)  
Antiguo 10/03/2010, 13:08
 
Fecha de Ingreso: enero-2010
Mensajes: 152
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: ordenar tabla con click

algo asi fue lo que encontre antes
te podrias explicar un poco mas?
  #4 (permalink)  
Antiguo 10/03/2010, 13:12
Avatar de eulloa  
Fecha de Ingreso: octubre-2007
Ubicación: Donde caiga la noche, si mi hijo me deja
Mensajes: 691
Antigüedad: 16 años, 6 meses
Puntos: 5
Respuesta: ordenar tabla con click

Creo q tu función sería mas como

Código PHP:
Ver original
  1. function mostrarEquipos($accion){
  2.             $dbConexion = new DBMysql();
  3.             $dbConexion->query("select m.idMaquina, m.hostname, m.ipHost, m.serialNumber, e.nomEstado, a.nomAreaMaquina,
  4.                               i.idimagen, n.nombreContacto
  5.                               from maquina m, estado e, areaMaquina a, imagen i, nombrecontacto n
  6.                               where m.idEstado = e.idEstado AND m.idAreaMaquina=a.idAreaMaquina AND m.idimagen=i.idimagen
  7.                               AND m.idNombreContacto=n.idNombreContacto ORDER BY '".$accion."' ASC");
  8.  
  9.                 while ( $res = $dbConexion->getRegister() ) {
  10.                         echo "<tr><td><a href='detalles.php?m=$res[0]&op=view'>$res[0]</a></td><td>";
  11.                         echo $res[4];
  12.                         echo "</td><td><a href='detalles.php?m=$res[0]&op=view'>$res[1]</a></td><td>";
  13.                         echo $res[2];
  14.                         echo "</td><td>$res[3]</td><td>";
  15.                         echo "</td><td>$res[5]</td><td>";
  16.                         echo "</td><td>$res[7]</td><td>";
  17.                         }
  18.                         }

De todas formas no veo que estés utilizando el parámetro $accion una vez q lo pasas a la función
  #5 (permalink)  
Antiguo 10/03/2010, 13:14
Avatar de Chupytoloco  
Fecha de Ingreso: julio-2007
Mensajes: 88
Antigüedad: 16 años, 9 meses
Puntos: 1
Respuesta: ordenar tabla con click

El truco esta aqui ORDER BY idMaquina ASC

cuando el usuario pinche sobre una columna tienes k recargar la pagina pasandole por get una variable la cual la pondras en el order.

Por ejemplo <a href='detalles.php?ordenar='idMaquina'>, solo tienes que recoger la variable con $_GET['odernar']

ORDER BY '".$_GET['ordenar']."' ASC
__________________
Creador de blackmoons.net
----------------------------------------------------------------------
  #6 (permalink)  
Antiguo 10/03/2010, 13:19
 
Fecha de Ingreso: enero-2010
Mensajes: 152
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: ordenar tabla con click

pero 'ordenar' debo igualarlo a idmaquina¡
  #7 (permalink)  
Antiguo 10/03/2010, 13:26
Avatar de Chupytoloco  
Fecha de Ingreso: julio-2007
Mensajes: 88
Antigüedad: 16 años, 9 meses
Puntos: 1
Respuesta: ordenar tabla con click

tienes que igualarlo con el nombre exacto de tu campo, mi ejemplo es suponiendo que aprieta sobre idMaquina
__________________
Creador de blackmoons.net
----------------------------------------------------------------------
  #8 (permalink)  
Antiguo 10/03/2010, 13:26
 
Fecha de Ingreso: enero-2010
Mensajes: 152
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: ordenar tabla con click

Cita:
Iniciado por eulloa Ver Mensaje

De todas formas no veo que estés utilizando el parámetro $accion una vez q lo pasas a la función
accion lo ocupo mas adelante pero no viene al caso mas que el llamado a la funcion
si pongo $accion en el order by no hace aun lo q quiero que haga
  #9 (permalink)  
Antiguo 10/03/2010, 13:29
Avatar de eulloa  
Fecha de Ingreso: octubre-2007
Ubicación: Donde caiga la noche, si mi hijo me deja
Mensajes: 691
Antigüedad: 16 años, 6 meses
Puntos: 5
Respuesta: ordenar tabla con click

Cita:
Iniciado por d4n13l4 Ver Mensaje
pero 'ordenar' debo igualarlo a idmaquina¡
¿Has visto el ejemplo q te puse arriba? ¿No te ha servido? ¿Porqué?
  #10 (permalink)  
Antiguo 10/03/2010, 13:33
Avatar de eulloa  
Fecha de Ingreso: octubre-2007
Ubicación: Donde caiga la noche, si mi hijo me deja
Mensajes: 691
Antigüedad: 16 años, 6 meses
Puntos: 5
Respuesta: ordenar tabla con click

Idea general.
1. En el HTML de la página le pones
Código HTML:
Ver original
  1. <a href='detalles.php?ordenar='idMaquina'>
Como te indicaron más arriba.
2. Lo recibes en PHP con
Código PHP:
Ver original
  1. $_GET['odernar']
Como te indicaron más arriba tb
3. Armas tu consulta como la tienes en la función, pasándole otro parámetro (ya q dices q utilizas $accion más adelante, aunq no se vea donde)


Duda: ¿porqué no te sirve?
  #11 (permalink)  
Antiguo 10/03/2010, 13:33
 
Fecha de Ingreso: enero-2010
Mensajes: 152
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: ordenar tabla con click

el tuyo? o el de Chupytoloco
con tu cambio no me paso nada
y con el de Chupytoloco pregunte eso que me citaste
  #12 (permalink)  
Antiguo 10/03/2010, 13:36
 
Fecha de Ingreso: enero-2010
Mensajes: 152
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: ordenar tabla con click

voy a revisar lo que pusiste recien
  #13 (permalink)  
Antiguo 10/03/2010, 13:40
Avatar de JessicaTJ  
Fecha de Ingreso: enero-2007
Ubicación: 127.0.0.1
Mensajes: 472
Antigüedad: 17 años, 3 meses
Puntos: 25
Respuesta: ordenar tabla con click

Código HTML:
<a href='detalles.php?ordenar='idMaquina'>
Código PHP:
$sql $_GET['ordenar'
Código PHP:
$dbConexion->query("select m.idMaquina, m.hostname, m.ipHost, m.serialNumber, e.nomEstado, a.nomAreaMaquina,
                               i.idimagen, n.nombreContacto
                               from maquina m, estado e, areaMaquina a, imagen i, nombrecontacto n
                               where m.idEstado = e.idEstado AND m.idAreaMaquina=a.idAreaMaquina AND m.idimagen=i.idimagen
                               AND m.idNombreContacto=n.idNombreContacto "
.$sql); 
Algo asi
__________________
٩(͡๏̯͡๏)۶ || ٩(͡๏̯͡๏)۶
  #14 (permalink)  
Antiguo 10/03/2010, 13:45
 
Fecha de Ingreso: enero-2010
Mensajes: 152
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: ordenar tabla con click

me falta lo que pregunte ps
pq ya tengo la referencia
<a href='nuevo.php?ordenar='idMaquina'>

en nuevo.php esta la consulta con el order by $_GET['ordenar'] ASC

entonces en nuevo.php antes de la consulta deberia hacer
$idMaquina= $_GET['ordenar'];
??
  #15 (permalink)  
Antiguo 10/03/2010, 13:47
Avatar de JessicaTJ  
Fecha de Ingreso: enero-2007
Ubicación: 127.0.0.1
Mensajes: 472
Antigüedad: 17 años, 3 meses
Puntos: 25
Respuesta: ordenar tabla con click

Cita:
Iniciado por d4n13l4 Ver Mensaje
me falta lo que pregunte ps
pq ya tengo la referencia
<a href='nuevo.php?ordenar='idMaquina'>

en nuevo.php esta la consulta con el order by $_GET['ordenar'] ASC

entonces en nuevo.php antes de la consulta deberia hacer
$idMaquina= $_GET['ordenar'];
??
Sipi, debes de setear la variable antes de realizar la consulta
__________________
٩(͡๏̯͡๏)۶ || ٩(͡๏̯͡๏)۶
  #16 (permalink)  
Antiguo 10/03/2010, 13:48
 
Fecha de Ingreso: enero-2010
Mensajes: 152
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: ordenar tabla con click

no me hace la referencia ordenar='idMaquina'
me sale ordenar=
  #17 (permalink)  
Antiguo 10/03/2010, 13:50
Avatar de eulloa  
Fecha de Ingreso: octubre-2007
Ubicación: Donde caiga la noche, si mi hijo me deja
Mensajes: 691
Antigüedad: 16 años, 6 meses
Puntos: 5
Respuesta: ordenar tabla con click

Cita:
Iniciado por d4n13l4 Ver Mensaje
me falta lo que pregunte ps
pq ya tengo la referencia
<a href='nuevo.php?ordenar='idMaquina'>

en nuevo.php esta la consulta con el order by $_GET['ordenar'] ASC

entonces en nuevo.php antes de la consulta deberia hacer
$idMaquina= $_GET['ordenar'];
??
  #18 (permalink)  
Antiguo 10/03/2010, 13:51
Avatar de eulloa  
Fecha de Ingreso: octubre-2007
Ubicación: Donde caiga la noche, si mi hijo me deja
Mensajes: 691
Antigüedad: 16 años, 6 meses
Puntos: 5
Respuesta: ordenar tabla con click

Pon el código q estás utilizando ahora mismo
  #19 (permalink)  
Antiguo 10/03/2010, 13:53
 
Fecha de Ingreso: enero-2010
Mensajes: 152
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: ordenar tabla con click

no no aplaudas no me resulto
:(
  #20 (permalink)  
Antiguo 10/03/2010, 13:56
Avatar de eulloa  
Fecha de Ingreso: octubre-2007
Ubicación: Donde caiga la noche, si mi hijo me deja
Mensajes: 691
Antigüedad: 16 años, 6 meses
Puntos: 5
Respuesta: ordenar tabla con click

Cita:
Iniciado por d4n13l4 Ver Mensaje
no no aplaudas no me resulto
:(
Bueno pon todo el código q tienes ahora mismo
  #21 (permalink)  
Antiguo 10/03/2010, 14:00
 
Fecha de Ingreso: enero-2010
Mensajes: 152
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: ordenar tabla con click

es que sabes el problema esta en la referencia creo yo
pq la llamada no se debe hacer a detalles.php
los pasos son asi
yo eligo ver equipos y entro al archivo equipos.php en donde esta la consulta
Código PHP:
function mostrarEquipos($accion){
$dbConexion = new DBMysql();
$dbConexion->query("select m.idMaquina, m.hostname, m.ipHost, m.serialNumber, e.nomEstado, a.nomAreaMaquina,
                               i.idimagen, n.nombreContacto
                               from maquina m, estado e, areaMaquina a, imagen i, nombrecontacto n
                               where m.idEstado = e.idEstado AND m.idAreaMaquina=a.idAreaMaquina AND m.idimagen=i.idimagen
                               AND m.idNombreContacto=n.idNombreContacto");
    
        while ( $res = $dbConexion->getRegister() ) {
                        echo "<tr><td><a href='detalles.php?m=$res[0]&op=view'>$res[0]</a></td><td>";
                        if ($res[4]=='Eliminado'){
                                echo "<div id='requerido'>$res[4]</div>";
                        }else if($res[4]=='Disponible'){
                                echo "<div id='disponible'>$res[4]</div>";
                        }else{
                                echo $res[4];
                        }
                        echo "</td><td><a href='detalles.php?m=$res[0]&op=view'>$res[1]</a></td><td>";
                        mostrarIP($res[2]);
                        echo "</td><td>$res[3]</td><td>";
                        echo "</td><td>$res[5]</td><td>";
                        echo "</td><td>$res[7]</td><td>";
                  ?>
<a href='im.php?m=<?php echo "$res[6]"?>' target="popup" onclick='window.open("", "popup","width=600,height=400,scrollbars=NO")'>Imagen</a>
<?php
}
                        echo 
"</td></tr>";
                }
        }
mas adelante en ese mismo archivo esta la tabla que quiero que funcione al hacer click
<h2>Ver equipos</h2>
<table width="100%" class="menu">
<tr>
<th>ID</th>
<th align="center">Estado</th>
<th>Hostname</th>
<th>IP</th>
<th>Serial Number</th><th></th>
<th>Area<th>
<th>Nombre Contacto</th>
<th align="center">Acci&oacute;n</th>
</tr>

ese detalles.php que uds ven es otra cosa, no aparece ahi la tabla
si no en equipos.php

ese es parte del archivo equipos.php que compete a esto y q esta sin modificar
  #22 (permalink)  
Antiguo 10/03/2010, 14:08
Avatar de eulloa  
Fecha de Ingreso: octubre-2007
Ubicación: Donde caiga la noche, si mi hijo me deja
Mensajes: 691
Antigüedad: 16 años, 6 meses
Puntos: 5
Respuesta: ordenar tabla con click

¿Y donde está la clausula Order By que pides? Ahora no la veo por ningún lado.
¿La encargada de ordenar no es esta función mostrarEquipos?
Si no lo es, bueno, podrías hacer algo parecido a
Código PHP:
Ver original
  1. function mostrarEquipos($accion,$orden='columnaXDefecto'){
  2. $dbConexion = new DBMysql();
  3. $dbConexion->query("select m.idMaquina, m.hostname, m.ipHost, m.serialNumber, e.nomEstado, a.nomAreaMaquina,
  4.                                i.idimagen, n.nombreContacto
  5.                                from maquina m, estado e, areaMaquina a, imagen i, nombrecontacto n
  6.                                where m.idEstado = e.idEstado AND m.idAreaMaquina=a.idAreaMaquina AND m.idimagen=i.idimagen
  7.                                AND m.idNombreContacto=n.idNombreContacto order by '".$orden."'");
  8.    
  9.         while ( $res = $dbConexion->getRegister() ) {
  10.                         echo "<tr><td><a href='detalles.php?m=$res[0]&op=view'>$res[0]</a></td><td>";
  11.                         if ($res[4]=='Eliminado'){
  12.                                 echo "<div id='requerido'>$res[4]</div>";
  13.                         }else if($res[4]=='Disponible'){
  14.                                 echo "<div id='disponible'>$res[4]</div>";
  15.                         }else{
  16.                                 echo $res[4];
  17.                         }
  18.                         echo "</td><td><a href='detalles.php?m=$res[0]&op=view'>$res[1]</a></td><td>";
  19.                         mostrarIP($res[2]);
  20.                         echo "</td><td>$res[3]</td><td>";
  21.                         echo "</td><td>$res[5]</td><td>";
  22.                         echo "</td><td>$res[7]</td><td>";
  23.                   ?>
  24. <a href='im.php?m=<?php echo "$res[6]"?>' target="popup" onclick='window.open("", "popup","width=600,height=400,scrollbars=NO")'>Imagen</a>
  25. <?php
  26. }
  27.                         echo "</td></tr>";
  28.                 }
  #23 (permalink)  
Antiguo 10/03/2010, 14:11
 
Fecha de Ingreso: enero-2010
Mensajes: 152
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: ordenar tabla con click

no es que lo que te mostre era todo desde 0 ya que no me sirvio poner order by ni nada

y la referencia como iria? pq no se si me entendiste pero tendria que llamar al mismo equipos.php se puede hacer aun asi?

no es simplemente
<a href='equipos.php?ordenar='idMaquina'>

Última edición por d4n13l4; 10/03/2010 a las 14:22

Etiquetas: tablas
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 00:24.