首页>>表单>>jquery添加和删除数据 无刷新,拖动改变排序,jquery无刷新编辑内容并提交(续)(2013-09-20)

jquery添加和删除数据 无刷新,拖动改变排序,jquery无刷新编辑内容并提交(续)

内容太多了,这边是续

 

jquery添加和删除数据 无刷新,拖动改变排序,jquery无刷新编辑内容并提交(续)
赞赏支持
立刻微信赞赏支持 关闭

 class.php

PHP Code
  1. <?php  
  2.   
  3. /* Defining the ToDo class */  
  4.   
  5. class ToDo{  
  6.       
  7.     /* An array that stores the todo item data: */  
  8.       
  9.     private $data;  
  10.       
  11.     /* The constructor */  
  12.     public function __construct($par){  
  13.         if(is_array($par))  
  14.             $this->data = $par;  
  15.     }  
  16.       
  17.     /* 
  18.         This is an in-build "magic" method that is automatically called  
  19.         by PHP when we output the ToDo objects with echo.  
  20.     */  
  21.           
  22.     public function __toString(){  
  23.           
  24.         // The string we return is outputted by the echo statement  
  25.           
  26.         return ' 
  27.             <li id="todo-'.$this->data['id'].'" class="todo"> 
  28.                 <div class="position">'.$this->data['position'].'.</div> 
  29.                 <div class="text">'.$this->data['text'].'</div> 
  30.                  
  31.                 <div class="actions"> 
  32.                     <a href="#" class="edit">Edit</a> 
  33.                     <a href="#" class="delete">Delete</a> 
  34.                 </div> 
  35.                  
  36.             </li>';  
  37.     }  
  38.       
  39.       
  40.     /* 
  41.         The following are static methods. These are available 
  42.         directly, without the need of creating an object. 
  43.     */  
  44.       
  45.       
  46.       
  47.     /* 
  48.         The edit method takes the ToDo item id and the new text 
  49.         of the ToDo. Updates the database. 
  50.     */  
  51.           
  52.     public static function edit($id$text){  
  53.           
  54.         $text = self::esc($text);  
  55.         if(!$textthrow new Exception("Wrong update text!");  
  56.           
  57.         mysql_query("   UPDATE add_delete_record 
  58.                         SET text='".$text."' 
  59.                         WHERE id=".$id  
  60.                     );  
  61.           
  62.         if(mysql_affected_rows($GLOBALS['lr'])!=1)  
  63.             throw new Exception("Couldn't update item!");  
  64.     }  
  65.       
  66.     /* 
  67.         The delete method. Takes the id of the ToDo item 
  68.         and deletes it from the database. 
  69.     */  
  70.       
  71.     public static function delete($id){  
  72.           
  73.         mysql_query("DELETE FROM add_delete_record WHERE id=".$id);  
  74.           
  75.         if(mysql_affected_rows($GLOBALS['lr'])!=1) 
  76.             throw new Exception("Couldn'delete item!");  
  77.     }  
  78.       
  79.     /* 
  80.         The rearrange method is called when the ordering of 
  81.         the todos is changed. Takes an array parameter, which 
  82.         contains the ids of the todos in the new order. 
  83.     */  
  84.       
  85.     public static function rearrange($key_value){  
  86.           
  87.         $updateVals = array();  
  88.         foreach($key_value as $k=>$v)  
  89.         {  
  90.             $strVals[] = 'WHEN '.(int)$v.' THEN '.((int)$k+1).PHP_EOL;  
  91.         }  
  92.           
  93.         if(!$strValsthrow new Exception("No data!");  
  94.           
  95.         // We are using the CASE SQL operator to update the ToDo positions en masse:  
  96.           
  97.         mysql_query("   UPDATE add_delete_record SET position = CASE id 
  98.                         ".join($strVals)." 
  99.                         ELSE position 
  100.                         END");  
  101.           
  102.         if(mysql_error($GLOBALS['lr']))  
  103.             throw new Exception("Error updating positions!");  
  104.     }  
  105.       
  106.     /* 
  107.         The createNew method takes only the text of the todo, 
  108.         writes to the databse and outputs the new todo back to 
  109.         the AJAX front-end. 
  110.     */  
  111.       
  112.     public static function createNew($text){  
  113.           
  114.         $text = self::esc($text);  
  115.         if(!$textthrow new Exception("Wrong input data!");  
  116.           
  117.         $posResult = mysql_query("SELECT MAX(position)+1 FROM add_delete_record");  
  118.           
  119.         if(mysql_num_rows($posResult))  
  120.             list($position) = mysql_fetch_array($posResult);  
  121.   
  122.         if(!$position$position = 1;  
  123.   
  124.         mysql_query("INSERT INTO add_delete_record SET text='".$text."', position = ".$position);  
  125.   
  126.         if(mysql_affected_rows($GLOBALS['lr'])!=1)  
  127.             throw new Exception("Error inserting TODO!");  
  128.           
  129.         // 这里的lr是连接conn.php里面设置的  
  130.           
  131.         echo (new ToDo(array(  
  132.             'id'    => mysql_insert_id($GLOBALS['lr']),  
  133.             'position'  => $position,  
  134.             'text'  => $text  
  135.         )));  
  136.           
  137.         exit;  
  138.     }  
  139.       
  140.     /* 
  141.         A helper method to sanitize a string: 
  142.     */  
  143.       
  144.     public static function esc($str){  
  145.           
  146.         if(ini_get('magic_quotes_gpc'))  
  147.             $str = stripslashes($str);  
  148.           
  149.         return mysql_real_escape_string(strip_tags($str));  
  150.     }  
  151.       
  152. // closing the class definition  
  153.   
  154. ?>  

 


原文地址:http://www.freejs.net/article_biaodan_39.html