Título: Duda con jQuery, Ajax, PHP
Publicado por: Arm144 en 24 Febrero 2017, 23:08 pm
Hola buenas tengo la siguiente duda. Necesito realizar una ordenación en orden ascendente o descendente de las columnas de una tabla cargada desde una BD. Esta ordenación se realiza al pulsar sobre (por ejemplo) columna nombre. la primera vez seria orden ascendente y si volvemos a pulsar descendente. El problema reside en que no consigo cambiar el valor de la query de ASC a DESC. Por favor help me haha. P.D: presento los trozos de código pertinentes. jQuery: function ordenacion(ordenacion){ if(tipo=="ASC"){ tipo="DESC"; }else{ tipo="ASC"; } if(ordenacion=="tdUser"){ ordenar= "order by nombreUsuario "+tipo; }if(ordenacion=="tdNombre"){ ordenar= "order by nombrePropio "+tipo; }if(ordenacion=="tdApellidos"){ ordenar= "order by apellidos "+tipo; }if(ordenacion=="tdDni"){ ordenar="order by DNI "+tipo; }if(ordenacion=="tdFecha"){ ordenar="order by fechaNacimiento "+tipo; } enviarConsulta(); }
function enviarConsulta(){ var dataString=ordenar; $.ajax({ type: "POST", url: "colocarTabla.php", data: {info : dataString}, success: function(data){ $("#mostrarTabla").html(data); } }); }
Php: $ordenar=$_POST['info']??""; $busqueda="SELECT * FROM personas ".$ordenar; $resultado = consulta($busqueda); echo $busqueda; $xml="<?xml version=\"1.0\"?>\n"; $xml.="<personas>"; while($dato=$resultado->fetch()){ $xml.= "<persona>"; $xml.= "<nombreUsuario>".$dato['nombreUsuario']."</nombreUsuario>"; $xml.= "<nombrePropio>".$dato['nombrePropio']."</nombrePropio>"; $xml.= "<apellidos>".$dato['apellidos']."</apellidos>"; $xml.= "<DNI>".$dato['DNI']."</DNI>"; $xml.= "<fechaNacimiento>".$dato['fechaNacimiento']."</fechaNacimiento>"; $xml.= "</persona>"; } $xml.= "</personas>"; $personas=new SimpleXMLElement($xml); ?>
<table> <tr> <td><a id='tdUser' onClick="ordenacion('tdUser');">Usuario</a></td> <td><a id='tdNombre' onClick="ordenacion('tdNombre');">Nombre</a></td> <td><a id='tdApellidos' onClick="ordenacion('tdApellidos');">Apellidos</a></td> <td><a id='tdDni' onClick="ordenacion('tdDni');">Dni</a></td> <td><a id='tdFecha' onClick="ordenacion('tdFecha');">Fecha</a></td> </tr> <?php foreach ($personas->persona as $fila){ echo "<tr><td>".$fila->nombreUsuario."</td>"; echo "<td>".$fila->nombrePropio."</td>"; echo "<td>".$fila->apellidos."</td>"; echo "<td>".$fila->DNI."</td>"; echo "<td>".$fila->fechaNacimiento."</td></tr>"; } ?> </table>
Título: Re: Duda con jQuery, Ajax, PHP
Publicado por: cassiani en 25 Febrero 2017, 09:03 am
Hola, no envíes código SQL por Ajax, envía sólo el nombre del campo por el que quieres filtrar y el tipo de ordenación y luego en PHP recoge los parámetros, filtra los y arma tu Query.
Otra cosa, no pases al query lo que viene directamente por post, debes filtrarlos antes.
Título: Re: Duda con jQuery, Ajax, PHP
Publicado por: Herminio0 en 10 Marzo 2017, 22:47 pm
Mira, yo entendí algo como esto y lo haría así. HTML: <input type="button" value"usuario" data="usuario" clases="ordenarTipo"> <Input type="button" value="nombre" data=nombre" clases="ordenarTipo">
Jquery: $(".ordenarTipo").Click(function(){ Var tipo = $(this).attr("data"); $.ajax({ type: "POST", url: "colocarTabla.php", data: { tipo: tipo }, success: function(data){ $("#mostrarTabla").html(data); } }); });
Y ya en colocarTabla.php solo recoges el parámetro y haces un If dependiendo el valor que traiga: <?php $tipo = $_POST["tipo"]; If($tipo == "usuario"){ $consulta = SELECT * FROM personas ORDER BY nombreUsuario DESC }else if($tipo== "nombre") $consulta = SELECT *FROM personas ORDER BY nombrePropio DESC
?>
Ya depende de ti también pasar a la variable tipo el valor y como lo quieres, si ASC O DESC, suerte.
|