Regresar a la página www.ComoCrearTuWeb.com
Resultados 1 al 6 de 6

Tema: Ordenar y guardar (sortable) listas en base de datos con jquery

  1. #1
    Recien Llegado! Habitante
    Fecha de Ingreso
    15 ago, 13
    Mensajes
    29
    Poder de Reputación
    7

    Ordenar y guardar (sortable) listas en base de datos con jquery

    Hola.
    Tengo unas listas extraídas de una base de datos que se pueden ordenar arrastrando y soltando, pero no consigo que los cambios se guarden en la base de datos.
    El código que utilizo es este:
    Base de datos bdconvoca con 5 campos:
    Id (PK), orden (es el campo que ha de indicar el orden de las filas después de los cambios), nombre, apellidos y codigousu.
    La consulta a la base de datos:

    mysql_select_db($database_connecta, $connetado);
    $query_convocatoria = "SELECT * FROM bdconvoca ORDER BY bdconvoca.orden ASC";
    $convocatoria = mysql_query($query_convocatoria, $connecta) or die(mysql_error());
    $row_convocatoria = mysql_fetch_assoc($convocatoria);
    $totalRows_convocatoria = mysql_num_rows($convocatoria);

    Algunos estilos css que no viene al caso y una librería de jquery, que no creo importante incluir aquí, pero que es esta, para más información.
    <script type="text/javascript" src="../js/jquery-1.4.2.min.js"></script>
    <script type="text/javascript" src="../js/jquery-ui-1.8.custom.min.js"></script>
    <script type="text/javascript" src="../js/jquery.cookie.js"></script>

    Luego este script en el head:

    <script type="text/javascript">
    $(document).ready(function(){
    $(function() {
    $("#contentLeft ul").sortable({ opacity: 0.6, cursor: 'move', update: function() {
    var order = $(this).sortable("serialize") + '&action=updateRecordsListings';
    $.post("updatedataB.php", order, function(theResponse){
    $("#contentRight").html(theResponse);
    }); }
    });
    });
    });
    </script>

    Hasta aquí funciona perfectamente el arrastrar y soltar ordenando las listas.

    Y finalmente el código del archivo updatedataB.php, que seguramente no es correcto, ya que no realiza la función de guardar los cambios:

    $action = mysql_real_escape_string($_POST['action']);
    $updateRecordsArray = $_POST['recordsArray'];
    if ($action == "updateRecordsListings"){
    $listingCounter = 1;
    foreach ($updateRecordsArray as $recordIDValue) {
    $query = "UPDATE bdconvoca SET id = " . $listingCounter . " WHERE id = " . $recordIDValue;
    mysql_query($query) or die('Error, insert query failed');
    $listingCounter = $listingCounter + 1;
    }
    echo '<pre>';
    print_r($updateRecordsArray);
    echo '</pre>';
    echo 'Si actualiza la página verá que los cambios se mantienen.';

    Y esto es todo, si alguien me puede ayudar le estaría muy agradecido, ya que llevo mucho tiempo intentando solucionar este problema.

    También aceptaría una copia del código necesario, si alguien dispone del mismo en páginas suyas, aunque sea distinto.

    Gracias

  2. #2
    Esto empieza a ser un vicio... Habitante
    Fecha de Ingreso
    02 may, 11
    Ubicación
    Santiago, Chile
    Mensajes
    2,044
    Poder de Reputación
    21
    Hola!

    Qué muestra la consola del navegador (F12)?

  3. #3
    Recien Llegado! Habitante
    Fecha de Ingreso
    15 ago, 13
    Mensajes
    29
    Poder de Reputación
    7
    Hola.
    En pantalla se muestran las listas con sus campos correctamente, y el orden de las listas, se puede modificar, pero el problema es que no guarda estos cambios en la base de datos, en el momento de actualizar la pagina con F5 vuelve a mostrar el orden inicial. No hay ningún aviso de error tampoco.
    Saludos.

  4. #4
    Esto empieza a ser un vicio... Habitante
    Fecha de Ingreso
    02 may, 11
    Ubicación
    Santiago, Chile
    Mensajes
    2,044
    Poder de Reputación
    21
    ¿Qué librería usas para ordernar los arreglos/listas?

  5. #5
    Recien Llegado! Habitante
    Fecha de Ingreso
    15 ago, 13
    Mensajes
    29
    Poder de Reputación
    7
    Arriba esta indicada:
    <script type="text/javascript" src="../js/jquery-1.4.2.min.js"></script>
    <script type="text/javascript" src="../js/jquery-ui-1.8.custom.min.js"></script>
    <script type="text/javascript" src="../js/jquery.cookie.js"></script>

  6. #6
    Esto empieza a ser un vicio... Habitante
    Fecha de Ingreso
    02 may, 11
    Ubicación
    Santiago, Chile
    Mensajes
    2,044
    Poder de Reputación
    21
    XD, pensé que estabas usando una librería ajena a jQuery.

    ¿Qué te muestra después de reordenar? ¿Te muestra el mensaje devuelto por PHP?

    Código PHP:
    echo '<pre>';
    print_r($updateRecordsArray);
    echo 
    '</pre>';
    echo 
    'Si actualiza la página verá que los cambios se mantienen.'
    También pon esto antes de $("#contentRight").html(theResponse);

    Código:
    console.log(theResponse);
    Lo que debería mostrarte la respuesta del servidor en la consola (presionando F12).

    Por último, por favor, formatea el código de manera que sea fácil de leer, utilizando las etiquetas [code]código aquí[/code], [html]código HTML[/html] y/o [php]código PHP[/php] y, ojalá, utilices un formateador de código online para que el código quede ordenado. Por ejemplo, esto:

    Código:
    $i = 0;
    
    while ($i < 1000)
    {
        echo $i . '<br />';
    }
    Es más fácil de leer (y entender) que:

    Código:
    $i = 0;
    while($i<1000)
    {echo $i.'<br />';}

Temas Similares

  1. Error al guardar base de datos
    Por anyka en el foro Php Bases de Datos y MySQL (Nuevo!)
    Respuestas: 4
    Último Mensaje: 07/09/2011, 18:01
  2. Problemas en guardar imagenes en base de datos
    Por toti en el foro Foro General
    Respuestas: 0
    Último Mensaje: 08/08/2011, 11:14
  3. Crear enlaces a los visitantes para ordenar resultados de base de datos
    Por Doodleo en el foro Php Bases de Datos y MySQL (Nuevo!)
    Respuestas: 4
    Último Mensaje: 24/07/2011, 02:44
  4. Respuestas: 3
    Último Mensaje: 30/07/2008, 06:51

Permisos de Publicación

  • No puedes crear nuevos temas
  • No puedes responder temas
  • No puedes subir archivos adjuntos
  • No puedes editar tus mensajes
  •