Les cuento que estoy con un inconveniente y necesito ayuda para resolverlo.
Tengo un panel de administracion de un sitio, en el cual utilizado sortable() para ordenar las posiciones en la BD y asi mostrar el contenido en la web de acuerdo al orden elegido.
Al arrastrar un elemento y soltarlo en otro placeholder, se produciría el update que actualiza envia por ajax las variables a php.
El tema es que no logro hacer llegar las variables a mi php, y la bd queda exactamente igual cuando actualizo el navegador (por mas que intente destruirla ingresando datos en blanco)..
les muestro lo que tengo asi se dan una idea:
este es el php+html:
Código PHP :
<?php include $root . 'include/bd.php'; $fwk_query = mysql_query("SELECT idCliente, cliente, posicion, descripcion, ruta FROM clientes ORDER BY posicion ASC"); $i = 1; echo '<ul id="sortme">'; while($query_clientes = mysql_fetch_array($fwk_query)) { echo "<li id='cliente_".$query_clientes['idCliente']."'> <div class='pos'># " . $query_clientes['posicion'] . " </div> <div class='cliente'>" . $query_clientes['cliente'] . " </div> <div class='descripcion'>" . $query_clientes['descripcion'] . " </div> <div class='imagen'>" . $query_clientes['ruta'] . " </div> <div class='botonera'> <a title='Modificar información' class='icon editar' href='admin_clientes_edita.php?id=". $query_clientes['idCliente'] ."&oldPos=" . $query_clientes['posicion'] . "&oldCl=" . $query_clientes['cliente'] . "&oldDe=" . $query_clientes['descripcion'] . "'>f</a> <a title='Modificar imagen' class='icon photo'>f</a>"; $confirm = '"Seguro quieres eliminar a ' . $query_clientes['cliente'] . ' de la lista? \n\n Esta acción no podrá deshacerse."'; echo "<a title='Eliminar cliente' class='icon eliminar' onclick='return confirm(".$confirm.")' href='ingresa.php?accion=1&id=". $query_clientes['idCliente'] ."&ruta=". $query_clientes['ruta'] ."&pos=" . $query_clientes['posicion'] . "&cl=" . $query_clientes['cliente'] . "&de=" . $query_clientes['descripcion'] . "'></a> </div> <div class='clear'></div> </li>"; $i++; } echo '</ul>'; echo '<input type="hidden" name="tabla" id="tabla" readonly="readonly" value="clientes" />'; ?>
el codigo jquery que utilizo:
Código Javascript :
$(document).ready(function(){ // Ahora continuemos // Obtenemos el valor del campo que contiene el nombre de la tabla utilizando var tabla=document.getElementById("tabla").value; // Asociamos a la lista (que llamamos sortme) a la función sortable de JQuery UI $("#sortme").sortable({ update : function () { // creamos la función que se encargará de actualizar las posiciones de los elementos // Separamos (serializar) los elementos individuales de la lista serial = $('#sortme').sortable('serialize'); // Lo próximo por hacer es asignar los valores predeterminados de los datos que se enviarán $.ajax({ url: "includes/ordenar.php?tabla="+tabla, //asignamos la url del archivo que ordenará los elementos en la BD type: "GET", //especificamos el método por el que se envían los datos (POST o GET) data: serial,//asignamos los datos que obtuvimos al serializar los elementos error: function(){ alert("Ocurrió un error al intentar ordenar los elementos"); }//esta función la utilizamos en caso de algún problema }) } }) })
y el archivo php que la recibe
Código PHP :
<?php //ordenar //realizamos nuestra conexión a la BD $root = "../"; include $root . 'include/bd.php'; //obtenemos el array de id de elementos del listado $cliente = $_GET['cliente']; //obtenemos el nombre de la tabla que será modificada en la BD $tabla=$_GET['tabla']; //el ciclo recorre los elementos del listado 1 a 1 para asignarles su nuevo orden for ($i = 0; $i < count($cliente); $i++) { $query= mysql_query("UPDATE ".$tabla." SET posicion=".$i." WHERE idCliente=".$cliente[$i]); } ?>