2010-06-11 10 views
2

J'écris une application PHP/MySQL (en utilisant CodeIgniter) qui utilise certaines fonctionnalités de jQuery pour faire glisser des lignes de table. J'ai une table dans laquelle l'utilisateur peut faire glisser des rangées dans l'ordre désiré (sorte de file d'attente pour laquelle j'ai besoin de conserver le rang de chaque rangée). J'ai essayé de comprendre comment (et si je devrais) mettre à jour la base de données chaque fois que l'utilisateur laisse tomber une rangée, afin de simplifier l'interface utilisateur et éviter un bouton "Enregistrer".Mettre à jour la table MySQl onDrop?

Le jQuery fonctionne et peut renvoyer une liste sérialisée au serveur onDrop, mais est-ce une bonne pratique de conception que d'exécuter une requête de mise à jour aussi souvent? La table aura généralement 30-40 lignes max, mais si l'utilisateur traîne la ligne 1 en bas de la liste, alors potentiellement toutes les lignes devront être mises à jour pour mettre à jour le champ rank. Je me demandais si envoyer une requête géante au serveur, faire une boucle sur les lignes dans PHP et mettre à jour chaque ligne avec sa propre requête de mise à jour, pour envoyer une petite liste sérialisée à une procédure stockée pour laisser le serveur faire tout le travail, ou peut-être une meilleure méthode que je n'ai pas considérée. J'ai lu que les procédures stockées dans MySQL ne sont pas très efficaces et utilisent un processus séparé pour chaque appel. Des conseils quant à la bonne solution ici? Merci beaucoup pour votre aide!

Répondre

1

Toute question qui inclut "La table aura habituellement 30-40 lignes maximum" se termine par "Faites ce que vous voulez." Je ne peux pas imaginer une opération, aussi fréquente soit-elle, qui aurait un impact appréciable sur les performances d'une table aussi minuscule.

La seule vraie question est ce que le visiteur va faire pendant que votre demande va et revient du serveur. Seront-ils exclus de faire d'autres changements? Si ce n'est pas le cas, assurez-vous de disposer d'un mécanisme pour vous assurer que la modification la plus récente est réellement effective. (Il est possible que les requêtes atteignent le serveur dans le désordre, et vous ne voudriez pas qu'une requête périmée soit sauvegardée comme état final.)

+0

Je n'avais pas considéré le problème de désordre. Bon point. Merci. – user364661

Questions connexes