Guest User

Untitled

a guest
Jun 23rd, 2018
124
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.28 KB | None | 0 0
  1. SELECT * FROM `mytable` ORDER BY `display_order` DESC;
  2.  
  3. UPDATE `my_dispaly_order_table` SET `display_order`='1,9,2,6,23';
  4.  
  5. UPDATE `mytable` SET `display_order`='1' WHERE `rowId` = 1;
  6. UPDATE `mytable` SET `display_order`='2' WHERE `rowId` = 9;
  7. UPDATE `mytable` SET `display_order`='3' WHERE `rowId` = 2;
  8. UPDATE `mytable` SET `display_order`='4' WHERE `rowId` = 6;
  9. UPDATE `mytable` SET `display_order`='5' WHERE `rowId` = 23;
  10.  
  11. -- Move #10 down (i.e. swap #10 and #11)
  12. UPDATE mytable SET display_order =
  13. CASE display_order
  14. WHEN 10 THEN 11
  15. WHEN 11 THEN 10
  16. END CASE
  17. WHERE display_order BETWEEN 10 AND 11;
  18.  
  19. -- Move #4 to #10
  20. UPDATE mytable SET display_order
  21. CASE display_order
  22. WHEN 4 THEN 10
  23. ELSE display_order - 1
  24. END CASE
  25. WHERE display_order BETWEEN 4 AND 10;
  26.  
  27. -- Swap in two steps will not work as demostrated here:
  28.  
  29. UPDATE mytable SET display_order = 10 WHERE display_order = 11;
  30. -- Now you have two entries with display_order = 10
  31.  
  32. UPDATE mytable SET display_order = 11 WHERE display_order = 10;
  33. -- Now you have two entries with display_order = 11 (both have been changed)
  34.  
  35. UPDATE mytable SET display_order =
  36. CASE id
  37. WHEN 10 THEN 1
  38. WHEN 23 THEN 2
  39. WHEN 4 THEN 3
  40. END CASE
  41. WHERE id IN (10, 23, 4)
  42.  
  43. $new_order = array(4, 2, 99, 15, 32); // etc
  44.  
  45. $query = "UPDATE mytable SET display_order = (CASE id ";
  46. foreach($new_order as $sort => $id) {
  47. $query .= " WHEN {$id} THEN {$sort}";
  48. }
  49. $query .= " END) WHERE id IN (" . implode(",", $new_order) . ")";
  50.  
  51. UPDATE table SET col=col+1 WHERE col > 10
  52. UPDATE table SET col=10 WHERE id = X
  53. ...
  54.  
  55. Order Item
  56. ----- ----
  57. 1 Original Item 1
  58. 2 Original Item 2
  59. 3 Original Item 3
  60. 4 Original Item 4
  61. 5 Original Item 5
  62.  
  63. Order Item
  64. ----- ----
  65. 1 Original Item 1
  66. 1.5 Original Item 4
  67. 2 Original Item 2
  68. 3 Original Item 3
  69. 5 Original Item 5
  70.  
  71. Order Item
  72. ----- ----
  73. 1 Original Item 1
  74. 1.5 Original Item 4
  75. 1.75 Original Item 3
  76. 2 Original Item 2
  77. 5 Original Item 5
  78.  
  79. CREATE TABLE t_list (
  80. id INT NOT NULL PRIMARY KEY,
  81. parent INT NOT NULL,
  82. value VARCHAR(50) NOT NULL,
  83. /* Don't forget to create an index on PARENT */
  84. KEY ix_list_parent ON (parent)
  85. )
  86.  
  87. id parent value
  88.  
  89. 1 0 Value1
  90. 2 3 Value2
  91. 3 4 Value3
  92. 4 1 Value4
  93.  
  94. SELECT @r := (
  95. SELECT id
  96. FROM t_list
  97. WHERE parent = @r
  98. ) AS id
  99. FROM (
  100. SELECT @r := 0
  101. ) vars,
  102. t_list
  103.  
  104. id parent value
  105.  
  106. 1 0 Value1
  107. 4 1 Value4
  108. 3 4 Value3
  109. 2 3 Value2
  110.  
  111. UPDATE table SET display_order = display_order -1 WHERE display_order BETWEEN 10 AND 12
  112. UPDATE table SET display_order = 12 WHERE row_id = [id of what was row 10]
  113.  
  114. function reOrderRows($tablename, $ordercol, $idsarray){
  115.  
  116. $query = "UPDATE $tablename SET $ordercol = (CASE $ordercol ";
  117. foreach($idsarray as $prev => $new) {
  118. $query .= " WHEN $prev THEN $newn";
  119. }
  120. $query .= " END) WHERE $ordercol IN (" . implode(",", array_keys($idsarray)) . ")";
  121.  
  122. mysql_query($query);
  123. }
  124.  
  125. function swapRows($tablename, $ordercol, $firstid, $secondid){
  126. $swaparray = array("$firstid" => "$secondid", "$secondid" => "$firstid");
  127. reOrderRows($tablename, $ordercol, $swaparray);
  128. }
Add Comment
Please, Sign In to add comment