Join the social network of Tech Nerds, increase skill rank, get work, manage projects...
 
  • Drag and drop with jQuery UI Sortable

    • 0
    • 0
    • 0
    • 0
    • 0
    • 0
    • 0
    • 0
    • 212
    Comment on it

    If you want to make the drag and drop with jQuery UI Sortable then you have to do the following things. The jQuery UI sortable feature include the serialize method. A text string in standard URL-encoded notation is created with serialize ().

     Setting up the Database.

    You have to make a database with dragli in that database you have to create a table with name items. The you have to make three field in the table items. First is id that is primary key and it is auto-increment. Second is Display_order. Display_order is the field that keeps on changing everytime when the user drag and drop the li.

    CREATE TABLE `items` (
      `ID` int(11) NOT NULL,
      `Display_Order` int(11) NOT NULL,
      `created` datetime NOT NULL,
      `modified` datetime NOT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
    
    

    Inserting the data in the database

    
    INSERT INTO `items` (`ID`, `Display_Order`, `created`, `modified`) VALUES
    (1, 2, '0000-00-00 00:00:00', '2016-04-13 12:48:54'),
    (2, 1, '0000-00-00 00:00:00', '2016-04-13 12:48:54'),
    (3, 3, '0000-00-00 00:00:00', '2016-04-13 12:48:54'),
    (4, 4, '0000-00-00 00:00:00', '2016-04-13 12:48:54'),
    (5, 5, '0000-00-00 00:00:00', '2016-04-13 12:48:55'),
    (6, 6, '0000-00-00 00:00:00', '2016-04-13 12:48:55'),
    (7, 7, '0000-00-00 00:00:00', '2016-04-13 12:48:55'),
    (8, 8, '0000-00-00 00:00:00', '2016-04-13 12:48:55');0.

     

    Adding the drag and drop

    We use the jQuery UI sortable to make the drag and drop you can download the jQuery UI pluglin from here http://jqueryui.com/download  then you need to add links to these javascript files in the head of your page.

    <script type="text/javascript" src="/jquery-1.4.2.min.js"></script><br>
    <script type="text/javascript" src="/jquery-ui-1.8.1.custom.min.js"></script>

    If you need to make your li draggable then you need to write the following script in the index.ctp

    <script type="text/javascript">
    $(document).ready(function(){
    
      $("ul#categoryorder").sortable({ 
             opacity: 0.7, 
             cursor: 'move'  
             });
    
    });
    </script>

    To show that the user have changed  li by drag and drop you should have to add the add the following script.

    <script type="text/javascript">
    $(document).ready(function(){
    
      $("ul#categoryorder").sortable({ 
             opacity: 0.6, 
             cursor: 'move'<span>,  
             update: function(){
                    $('#categorysavemessage').html('Changes not saved');
                    $('#categorysavemessage').css("color","red");
                    }</span>
             });
    
    });
    </script>

     For updating the database you have to write the following code on your controller.

    	public function updateDisplayorder()
    	{
    		$this->layout=null;	
    
    		$newOrder = $_POST['ID'];
    		$counter = 1;
    			//print_r($newOrder);																							
    		foreach ($newOrder as $recordIDValue) {
    			  $query = "UPDATE items SET Display_Order = " . $counter;  
    			  $query .= " WHERE ID = " . (int)$recordIDValue;
    			  
    			  $data['ID'] = $recordIDValue;
    			  $data['Display_Order'] = $counter;
    
    			  $this->Item->id = $data['ID'];
    
    			  if($this->Item->saveField('Display_Order', $data['Display_Order'])) {
    			  		echo $query.'<br/>';
    			  }else {
    			  		die('Error, insert query failed');
    			  } 
    			  $counter ++;
    		  }
    
    		echo 'Changes saved';die;
    
    	}

     Code to make the li that the user drag and drop this should be placed on index.ctp

    <div id="container">
    		<ul id="categoryorder" class="ui-sortable">
    				<li id="ID_1">1</li>
    				<li id="ID_2">2</li>
    				<li id="ID_3">3</li>
    				<li id="ID_4">4</li>
    				<li id="ID_5">5</li>
    				<li id="ID_6">6</li>
    				<li id="ID_7">7</li>
    				<li id="ID_8">8</li>
    		</ul>
    	<div id="results">
    		<a id="button" href="">Save changes</a>
    		<div id="message"> </div>
        </div>
    </div>

     

 0 Comment(s)

Sign In
                           OR                           
                           OR                           
Register

Sign up using

                           OR                           
Forgot Password
Fill out the form below and instructions to reset your password will be emailed to you:
Reset Password
Fill out the form below and reset your password: