J'ai une table avec disons 20 lignes chacune avec un numéro pour l'ordre d'affichage (1-20). A partir d'une zone d'administration, vous pouvez faire glisser les lignes ou saisir manuellement un nouveau numéro pour chaque ligne.Mise à jour de l'ordre d'affichage de plusieurs lignes MySQL dans une ou très peu de requêtes
Certes, il n'est pas bon de faire une boucle sur une requête UPDATE pour chaque ligne, quelle est une alternative dans une ou très peu de requêtes appropriées pour mettre à jour une cellule dans 20 lignes ou plus, 50-200 +?
Edit: Beaucoup de bonnes réponses et des idées. Je pourrais développer les idées que j'ai considérées jusqu'ici:
Une chaîne de tableau: Je pourrais avoir l'ordre dans une chaîne énumérant les identifiants uniques de rangée dans l'ordre que je veux - par exemple les rangs 1,9,2, 6,23. Lorsque la commande est mise à jour, une mise à jour de champ masqué avec JavaScript et ajoute que la base de données ou un fichier texte lorsque vous avez terminé:
UPDATE `my_dispaly_order_table` SET `display_order`='1,9,2,6,23';
mise à jour chaque ligne individuellement: C'est ce que je voulais éviter, mais il serait ne changer que très rarement si 20-30 appels en un seul coup une fois par semaine ou par mois pourraient ne pas être un problème si simplement appeler UPDATE sur chaque ligne est ce que je fais habituellement:
UPDATE `mytable` SET `display_order`='1' WHERE `rowId` = 1;
UPDATE `mytable` SET `display_order`='2' WHERE `rowId` = 9;
UPDATE `mytable` SET `display_order`='3' WHERE `rowId` = 2;
UPDATE `mytable` SET `display_order`='4' WHERE `rowId` = 6;
UPDATE `mytable` SET `display_order`='5' WHERE `rowId` = 23;
c'est un problème de liste chaînée. peut-être implique un changement de schéma. – Randy