2010-09-04 6 views
0

J'utilise PHP/MYSQL. Je veux dans mon interface, pour les utilisateurs de trier et de réorganiser les enregistrements de base de données entrés par l'utilisateur lui-même dans une étape antérieure. Les enregistrements téléchargés par l'utilisateur peuvent parfois être insérés dans la base de données de manière aléatoire, de sorte que dans le profil de l'utilisateur, il/elle pourrait avoir la possibilité de réorganiser les lignes dans la base de données selon ce sage. Quelqu'un peut-il me fournir un script qui m'aiderait à le faire?Réorganiser les lignes d'enregistrement de base de données à travers le front-end en utilisant php

id title  date  desc 
1 s1  s1_date s1_desc 
2 s2  s2_date s2_desc 
3 s3  s3_date s3_desc 
4 s4  s4_date s4_desc 
5 s5  s5_date s5_desc 

Dans le profil de l'utilisateur qu'il veut réorganiser les lignes de telle sorte que s2 sera l'un et économisera comme S2-> s1 et S1-> s2 pour chaque champ .. peut être échanger des enregistrements entre

Je le regarde d'une autre manière .. la page d'utilisateur montrera le champ dans les rangées sages et dans le côté il y aura une boîte d'entrée de chaque l'identification actuelle de rangée (id) est définie comme valeur de cette boîte d'entrée que l'utilisateur peut changer entre et soumettre toute la liste réorganisée à l'arrière-plan. Dans ce cas, que pouvons-nous faire ... il y aura beaucoup de swapings à concurremment ..

Répondre

4

La meilleure solution est d'ajouter un autre champ "ordering" où vous pouvez stocker par défaut int ID, et tout en réorganisant les lignes, vous pourriez permuter les valeurs de l'ordre entre ces rangées. Dans la requête que vous feriez ORDER BY par ASC/DESC

0

Obtenez les lignes et les mettre à jour en arrière les valeurs:

En supposant que le tablename est: t

$result = mysql_query("SELECT title, `date`, `desc` FROM t WHERE id = 1"); 
$row1 = mysql_fetch_assoc($result); 

$result = mysql_query("SELECT title, `date`, `desc` FROM t WHERE id = 2"); 
$row2 = mysql_fetch_assoc($result); 

mysql_query("UPDATE t SET title = '{$row2['title']}', `date` = '{$row2['date']}', `desc` = '{$row2['desc']}' WHERE id = 1"); 
mysql_query("UPDATE t SET title = '{$row1['title']}', `date` = '{$row1['date']}', `desc` = '{$row1['desc']}' WHERE id = 2"); 
+0

Merci pour votre réponse. J'aime votre script .. Je le regarde d'une autre manière .. la page d'utilisateur montrera le champ dans les rangées sages et dans le côté ici sera une boîte d'entrée de chacun l'id actuel de rangée indique ('id') est défini comme valeur de cette boîte de saisie de sorte que l'utilisateur peut changer entre et soumettre toute la liste réorganisée à l'arrière-plan. Dans ce cas, que pouvons-nous faire ... il y aura beaucoup de swapings à concurremment ... y a-t-il une idée ... problème peut également se produire pendant que nous appliquons le code ci-dessus en boucle dans ce cas ... n'est ce pas –

+1

ne donnez pas de réponses en utilisant l'interface mysql_query' grinçante et archaïque et ignorez complètement [procédures d'échappement appropriées] (http://bobby-tables.com/php). C'est juste la pointe de l'iceberg. Réécrire arbitrairement des données d'une rangée à l'autre est totalement fou, surtout en dehors d'une transaction. Désolé d'être dur, mais tout à propos de cette réponse est complètement faux. – tadman

Questions connexes