Foro de elhacker.net

Programación => Desarrollo Web => Mensaje iniciado por: Arm144 en 24 Febrero 2017, 23:08 pm



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:
Código:
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:
Código:
$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:
Código:
  <input type="button" value"usuario" data="usuario" clases="ordenarTipo">
 <Input type="button" value="nombre" data=nombre" clases="ordenarTipo">

Jquery:
Código:
$(".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:
Código:
<?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.