Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- SELECT * FROM `mytable` ORDER BY `display_order` DESC;
- UPDATE `my_dispaly_order_table` SET `display_order`='1,9,2,6,23';
- 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;
- -- Move #10 down (i.e. swap #10 and #11)
- UPDATE mytable SET display_order =
- CASE display_order
- WHEN 10 THEN 11
- WHEN 11 THEN 10
- END CASE
- WHERE display_order BETWEEN 10 AND 11;
- -- Move #4 to #10
- UPDATE mytable SET display_order
- CASE display_order
- WHEN 4 THEN 10
- ELSE display_order - 1
- END CASE
- WHERE display_order BETWEEN 4 AND 10;
- -- Swap in two steps will not work as demostrated here:
- UPDATE mytable SET display_order = 10 WHERE display_order = 11;
- -- Now you have two entries with display_order = 10
- UPDATE mytable SET display_order = 11 WHERE display_order = 10;
- -- Now you have two entries with display_order = 11 (both have been changed)
- UPDATE mytable SET display_order =
- CASE id
- WHEN 10 THEN 1
- WHEN 23 THEN 2
- WHEN 4 THEN 3
- END CASE
- WHERE id IN (10, 23, 4)
- $new_order = array(4, 2, 99, 15, 32); // etc
- $query = "UPDATE mytable SET display_order = (CASE id ";
- foreach($new_order as $sort => $id) {
- $query .= " WHEN {$id} THEN {$sort}";
- }
- $query .= " END) WHERE id IN (" . implode(",", $new_order) . ")";
- UPDATE table SET col=col+1 WHERE col > 10
- UPDATE table SET col=10 WHERE id = X
- ...
- Order Item
- ----- ----
- 1 Original Item 1
- 2 Original Item 2
- 3 Original Item 3
- 4 Original Item 4
- 5 Original Item 5
- Order Item
- ----- ----
- 1 Original Item 1
- 1.5 Original Item 4
- 2 Original Item 2
- 3 Original Item 3
- 5 Original Item 5
- Order Item
- ----- ----
- 1 Original Item 1
- 1.5 Original Item 4
- 1.75 Original Item 3
- 2 Original Item 2
- 5 Original Item 5
- CREATE TABLE t_list (
- id INT NOT NULL PRIMARY KEY,
- parent INT NOT NULL,
- value VARCHAR(50) NOT NULL,
- /* Don't forget to create an index on PARENT */
- KEY ix_list_parent ON (parent)
- )
- id parent value
- 1 0 Value1
- 2 3 Value2
- 3 4 Value3
- 4 1 Value4
- SELECT @r := (
- SELECT id
- FROM t_list
- WHERE parent = @r
- ) AS id
- FROM (
- SELECT @r := 0
- ) vars,
- t_list
- id parent value
- 1 0 Value1
- 4 1 Value4
- 3 4 Value3
- 2 3 Value2
- UPDATE table SET display_order = display_order -1 WHERE display_order BETWEEN 10 AND 12
- UPDATE table SET display_order = 12 WHERE row_id = [id of what was row 10]
- function reOrderRows($tablename, $ordercol, $idsarray){
- $query = "UPDATE $tablename SET $ordercol = (CASE $ordercol ";
- foreach($idsarray as $prev => $new) {
- $query .= " WHEN $prev THEN $newn";
- }
- $query .= " END) WHERE $ordercol IN (" . implode(",", array_keys($idsarray)) . ")";
- mysql_query($query);
- }
- function swapRows($tablename, $ordercol, $firstid, $secondid){
- $swaparray = array("$firstid" => "$secondid", "$secondid" => "$firstid");
- reOrderRows($tablename, $ordercol, $swaparray);
- }
Add Comment
Please, Sign In to add comment