Page 1 sur 1

jquery sortable en BDD

Posté : 23 févr. 2010, 15:07
par x@v
Bonjour,
je souhaite enregistrer l'ordre d'un menu dans ma table:
mon alert sur la requette est bonne mais ne s'enregistre pas !
        UPDATE categorie SET id=1,
        dateModification= NOW() 
        WHERE id=1;
        UPDATE categorie SET id=2,
        dateModification= NOW() 
        WHERE id=1;
        UPDATE categorie SET id=3,
        dateModification= NOW() 
        WHERE id=3;
        UPDATE categorie SET id=4,
        dateModification= NOW() 
        WHERE id=4;
        UPDATE categorie SET id=5,
        dateModification= NOW() 
        WHERE id=5;
        UPDATE categorie SET id=6,
        dateModification= NOW() 
        WHERE id=6;
        UPDATE categorie SET id=7,
        dateModification= NOW() 
        WHERE id=7;
        UPDATE categorie SET id=8,
        dateModification= NOW() 
        WHERE id=8;
structure de la table
CREATE TABLE IF NOT EXISTS `categorie` (
  `id` mediumint(9) NOT NULL,
  `nom` varchar(250) NOT NULL,
  `baliseTitle` text NOT NULL,
  `dateCreation` datetime NOT NULL,
  `dateModification` datetime NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
je change l'id qui n'est donc pas incrémentable.

le js (jquery ui) :

Code : Tout sélectionner

$("#sortable").sortable({ helperclass : 'movingModule', activeclass : 'sortableactive', hoverclass : 'sortablehover', opacity: 0.8, revert: true, floats: true, tolerance: 'pointer', update: function(){ serial = $(this).sortable('serialize'); $.ajax({ url: "order.php", type: "POST", data: serial, success: function(feedback){ $('#data').html(feedback); alert(feedback); } }); } });
le html
                    <ul id="sortable">    <!-- menu catégorie -->
                        <?php 
                        $i=1;
               	        $sql="SELECT *, DATE_FORMAT(dateCreation, '%d/%m/%Y \à %H%i') as dateCreation, DATE_FORMAT(dateModification, '%d/%m/%Y \à %H%i') as dateModification FROM categorie ORDER BY id ASC";
                        $result=$connection->select($sql);
                        foreach ($result as $row):?>
                        <li id="ordreCat_<?php echo $row['id']?>">
                            <span class="id"><?php echo $i?></span> / 
                            <?php echo $row['nom']?>
	                        <a href="admin/index.php?admin=formulaireCategorie&modifierCategorie=<?php echo $row['id']?>" title=" modifier : <?php echo $row['nom']?>">
                                <img src="./admin/adminImg/Modify.png" class="imgEditionTaille" />
                        	</a>
                            <a href="admin/requete.php?suprimerCategorie=<?php echo $row['id']?>" class="suprimerCategorie" title=" suprimer : <?php echo $row['nom']?>">
                                <img src="./admin/adminImg/Delete.png" class="imgEditionTaille" />
                            </a>
                        </li>
                        <?php $i++?>
                        <?php endforeach;?>
                    </ul>
la page order.php :
require_once('./class/class.pdo.php');
$connection = new Connection();
if(isset($_POST['ordreCat']))
{
        $i=1;
    foreach ($_POST['ordreCat'] as $val => $cle)
    {
        
        $sql="
        UPDATE categorie SET id=".$i.",
        dateModification= NOW() 
        WHERE id=".$cle.";";
        $result= $connection->select($sql);
        echo $sql;
               $i++;
    }
}

Re: jquery sortable en BDD

Posté : 24 févr. 2010, 01:34
par x@v
la réponse est dans la création d'un autre champ, puisque la serialisation renvoie les anciennes et les nouvelles valeurs

Re: jquery sortable en BDD

Posté : 24 févr. 2010, 12:16
par Truc
Je ne comprends... rien :?
Ni la question ni la réponse (si ça en est une) désolé

Comme ça peut servir à d'autres ça serait bien de refaire un topo :)

Re: jquery sortable en BDD

Posté : 24 févr. 2010, 13:16
par x@v
c'est pour une administration d'un blog open source.
dans deux jours je partage le code.
J'ai du refaire la structure de la base et utiliser deux champs pour le trie...

Re: jquery sortable en BDD

Posté : 02 mars 2010, 11:51
par Applejuice
Je viens peut-être un peu tard, mais j'ai aussi cherché longtemps et je crois que ce que tu (on) cherche est ici:

http://www.wil-linssen.com/musings/entr ... jax-mysql/

Tout est emballé, pesé et écrit.
Y a plus qu'à copy/paste. :wink:

Re: jquery sortable en BDD

Posté : 02 mars 2010, 12:14
par x@v
il y a un probleme avec sont update, ça m'étonnerais qu'il fonctionne.
Il trie les id mais pas la colonne trie.
C'était justement ce que j'avais fait.

Re: jquery sortable en BDD

Posté : 15 mars 2010, 22:14
par Applejuice
Pourtant ça marche bien sur la démo du site. D'ailleurs, il fait un "print_r" de chaque requete SQL.
Regarde: à chaque changement, pour chaque ID, il y a une nouvelle position.
De plus il montre les requêtes dans l'ordre "position".

En fait, il fait un "foreach" pour chaque occurrence du tableau "listItem[]" créée par le script JQuery (en php, l'équivalent de listItem[position]=id) .
A chaque "foreach", il appelle l'ID ($id) auquel il donne le nouvel ordre ($position) créé par la fonction ('serialize') de Jquery.

Re: jquery sortable en BDD

Posté : 16 mars 2010, 00:14
par applejuice
Ca m'a l'air un peu plus compliqué, mais il y a ça aussi.

http://www.webresourcesdepot.com/dynami ... ry-and-php

Re: jquery sortable en BDD

Posté : 16 mars 2010, 02:42
par x@v
j'ai mis la possibilité de modifier les catégories en drag and drop.

http://groups.google.fr/group/blognline ... tion?hl=fr

open source...

Re: jquery sortable en BDD

Posté : 31 mars 2010, 21:35
par Applejuice
Voilà, j'ai essayé dans mon cms le code qui se trouve sur le blog de Musings et ça marche à merveille. :D
http://www.wil-linssen.com/musings/entr ... jax-mysql/

J'ai adapté le remplissage du tableau en requête sql et rajouté "$position++" dans la boucle "foreach" car je voudrais le commencement du classement à 1, c'est tout ce que j'ai fait. :P
Et, comme dans ta démo, ça marche en combinaison avec d'autres liens et fonctions dans les DIV.

Sinon, elle est pas mal aussi ta demo... :wink:

Re: jquery sortable en BDD

Posté : 31 mars 2010, 22:20
par x@v
Merci :)

je trouve que c'est un enchantement...