精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

使用jQuery設計數據表格之設計表格基類

開發 前端
在本文中,將選取PHP中的著名的開發框架Codeigniter(下簡稱CI)配合jQuery去設計一個日常常見的datagrid數據表格。其中充分利用了jQuery及CI框架的特性,打造一個無刷新的數據表格。本文的閱讀對象為已經具備一定jQuery基礎知識及CI框架基礎知識的用戶。

當前在Web開發中,jQuery和PHP無疑是***的配合。其中PHP由于其簡單易用,深得開發者的喜愛,而jQuery則由于在前端開發中的靈活和簡單,功能強大,可以做出很多很眩目的效果。在本文中,將選取PHP中的著名的開發框架Codeigniter(下簡稱CI)配合jQuery去設計一個日常常見的datagrid數據表格。其中充分利用了jQuery及CI框架的特性,打造一個無刷新的數據表格。本文的閱讀對象為已經具備一定jQuery基礎知識及CI框架基礎知識的用戶。

步驟1 設計生成表格的基類

我們希望設計一個生成表格的基類,它可以針對任意數據庫中的任意表,都能自動生成對應的數據表格,比如我們只需要傳入數據庫中的表名或者表的索引字段即可生成表格。本文中的大部分時間都會圍繞這個基類展開代碼編寫,下面是代碼的片斷定義:

  1. class Datagrid{  
  2.   private $hide_pk_col = true;  
  3.   private $hide_cols = array();  
  4.   private $tbl_name = '';  
  5.   private $pk_col = '';  
  6.   private $headings = array();  
  7.   private $tbl_fields = array();  
  8. }  
  9. ?> 

這里先行定義了一些屬性變量,比如是否隱藏主鍵的列,表的名稱$tbl_name,表頭列$headings,表的字段數組$tbl_fields。這里,我們把這個基類定義為CI中的helper幫助類,因為定義為CI中的library的話,則不容易向其構造函數傳遞參數。

接下來,編寫其構造函數為代碼如:

  1. public function __construct($tbl_name, $pk_col = 'id'){  
  2.   $this->CI =& get_instance();  
  3.   $this->CI->load->database();  
  4.   $this->tbl_fields = $this->CI->db->list_fields($tbl_name);  
  5.   if(!in_array($pk_col,$this->tbl_fields)){  
  6.   throw new Exception("Primary key column '$pk_col' not found in table '$tbl_name'");  
  7.   }  
  8.   $this->tbl_name = $tbl_name;  
  9.   $this->pk_col = $pk_col;  
  10.   $this->CI->load->library('table');  
  11.   }  

在上面的代碼的構造函數中,接收了兩個參數,分別是數據庫表的名稱和主鍵(默認這里為$id)。然后初始化實例化了CI對象,然后調用其加載數據庫及加載表的幫助方法,得出的$this->tbl_fields則是其數據庫的字段了。然后判斷主鍵$pk_col是否在數據表中,如果不存在的話拋出異常,如果存在的話,使用成員變量tbl_name和pk_col分別保存數據的表名和主鍵,這樣下次就不用再訪問數據庫了。***,使用$this->CI->load->library('table')的幫助表格類,將數據庫的字段生成一個HTML的簡單表格。

而為了自定義列的標題,也有一個方法如下:

  1. public function setHeadings(array $headings){  
  2.   $this->headings = array_merge($this->headings, $headings);  
  3.   } 

比如,我們可以將原來表格的列重新自定義要顯示的名稱,比如把regdate字段改為“Registration Date”。而具體的代碼在下文中還會講解。

在數據的呈現過程中,有的時候不是所有的列都需要顯示,要根據實際情況進行隱藏或顯示,這個時候可以編寫相關的方法實現,代碼如下:

  1. public function ignoreFields(array $fields){  
  2.   foreach($fields as $f){  
  3.   if($f!=$this->pk_col)  
  4.   $this->hide_cols[] = $f;  
  5.   }  
  6.   } 

其中,$fields是需要被隱藏的列的名稱數組。代碼中還對主鍵進行了判斷,因為主鍵是必須從數據庫中獲取的。而假如不希望主鍵顯示在用戶界面上的話,可以通過以下方法設置:

  1. public function hidePkCol($bool){  
  2.   $this->hide_pk_col = (bool)$bool;  
  3.   } 

這里傳入的$bool是一個布爾值,代表是否需要在界面中顯示主鍵。

接下來,再看一個方法,代碼如下:

  1. private function _selectFields(){  
  2.   foreach($this->tbl_fields as $field){  
  3.   if(!in_array($field,$this->hide_cols)){  
  4.   $this->CI->db->select($field);  
  5.   //判斷是否隱藏了主鍵 if($field==$this->pk_col && $this->hide_pk_col) continue;  
  6.   $headings[]= isset($this->headings[$field]) ? $this->headings[$field] : ucfirst($field);  
  7.   }  
  8.   }  
  9.   if(!empty($headings)){  
  10.   array_unshift($headings,"");  
  11.   $this->CI->table->set_heading($headings);  
  12.   }  
  13.   } 

這里是一個helper的幫助類方法,注意CI中的helper類,命名是private的,以下劃線+方法名的方法命名。這個方法是在下文中的generate()中用到的,其中主要的功能是,循環查找$this->tbl_fields中的每個字段,是否屬于隱藏顯示的字段,如果不屬于隱藏字段,則通過$this->CI->db->select($field);將相關字段取出。另外要注意的是

  1.  array_unshift($headings,""); 

這句代碼中,實際的作用是,在數據表格的***列中,加一項代表“全選/反選”功能的checkbox,這個功能可以用在對數據進行選擇或刪除的時候。

接下來,是生成數據表格的generate()方法,代碼如下:

  1. public function generate(){  
  2.   $this->_selectFields();  
  3.   $rows = $this->CI->db  
  4.   ->from($this->tbl_name)  
  5.   ->get()  
  6.   ->result_array();  
  7.   foreach($rows as &$row){  
  8.   $id = $row[$this->pk_col];  
  9.   array_unshift($row, "");  
  10.   if($this->hide_pk_col){  
  11.   unset($row[$this->pk_col]);  
  12.   }  
  13.   }  
  14.   return $this->CI->table->generate($rows);  
  15.   }  

在這個方法中,首先是調用了上文中的 $this->_selectFields();

方法,以決定顯示數據庫指定表中的哪些字段。然后使用CI中的獲得數據表記錄的方法獲得數據集($rows)。然后在循環中,為每一條記錄前都生成一個checkbox(array_unshift一句)。***,判斷是否需要屏蔽顯示主鍵,如果是的話,則屏蔽顯示(unset一句)。

接下來,為數據表格增加表單提交按鈕。為了通用起見,我們期望可以根據用戶的要求,指定生成什么類型的按鈕。比如,在這個例子中,期望生成一個刪除的按鈕,所以我們編寫如下的一個生成按鈕的方法:

  1. public static function createButton($action_name, $label){  
  2.   return "";  
  3.   } 

在這個靜態方法中,$action_name為要生成的方法名,比如我們要生成的是Delete方法,則傳入的$action_name參數為delete,而label則為按鈕的標簽名。

而如果得知這個按鈕被用戶點擊并提交呢?則可以用如下方法判斷

  1. public static function getPostAction(){  
  2.   if(isset($_POST['dg_action'])){  
  3.   return key($_POST['dg_action']);  
  4.   }  
  5.   }  

如果用戶選擇了數據表格中的多行并提交的話,可以使用如下方法去獲得

  1. public static function getPostItems(){  
  2.   if(!empty($_POST['dg_item'])){  
  3.   return $_POST['dg_item'];  
  4.   }  
  5.   return array();  
  6.   } 

返回的是一個表示了用戶選擇多少個記錄的數組。本例子中涉及的是刪除按鈕的功能,所以編寫一個方法,用于將用戶選擇的數據刪除,代碼如下:

  1. public function deletePostSelection(){  
  2.   if(!empty($_POST['dg_item']))  
  3.   return $this->CI->db  
  4.   ->from($this->tbl_name)  
  5.   ->where_in($this->pk_col,$_POST['dg_item'])  
  6.   ->delete();  
  7.   } 

比如用戶在表格中選擇了若干條記錄,點delete按鈕提交,則deletePostSelection方法會等價于執行如下的SQL語句:

  1. DELETE FROM my_table WHERE id IN (1,5,7,3,etc...)。 

***,我們綜合整理一下完整的數據表格生成類,如下代碼:

  1. class Datagrid{  
  2.   private $hide_pk_col = true;  
  3.   private $hide_cols = array();  
  4.   private $tbl_name = '';  
  5.   private $pk_col = '';  
  6.   private $headings = array();  
  7.   private $tbl_fields = array();  
  8.   function __construct($tbl_name, $pk_col = 'id'){  
  9.   $this->CI =& get_instance();  
  10.   $this->CI->load->database();  
  11.   $this->tbl_fields = $this->CI->db->list_fields($tbl_name);  
  12.   if(!in_array($pk_col,$this->tbl_fields)){  
  13.   throw new Exception("Primary key column '$pk_col' not found in table '$tbl_name'");  
  14.   }  
  15.   $this->tbl_name = $tbl_name;  
  16.   $this->pk_col = $pk_col;  
  17.   $this->CI->load->library('table');  
  18.   }  
  19.   public function setHeadings(array $headings){  
  20.   $this->headings = array_merge($this->headings, $headings);  
  21.   }  
  22.   public function hidePkCol($bool){  
  23.   $this->hide_pk_col = (bool)$bool;  
  24.   }  
  25.   public function ignoreFields(array $fields){  
  26.   foreach($fields as $f){  
  27.   if($f!=$this->pk_col)  
  28.   $this->hide_cols[] = $f;  
  29.   }  
  30.   }  
  31.   private function _selectFields(){  
  32.   foreach($this->tbl_fields as $field){  
  33.   if(!in_array($field,$this->hide_cols)){  
  34.   $this->CI->db->select($field);  
  35.   if($field==$this->pk_col && $this->hide_pk_col) continue;  
  36.   $headings[]= isset($this->headings[$field]) ? $this->headings[$field] : ucfirst($field);  
  37.   }  
  38.   }  
  39.   if(!empty($headings)){  
  40.   array_unshift($headings,"");  
  41.   $this->CI->table->set_heading($headings);  
  42.   }  
  43.   }  
  44.   public function generate(){  
  45.   $this->_selectFields();  
  46.   $rows = $this->CI->db  
  47.   ->from($this->tbl_name)  
  48.   ->get()  
  49.   ->result_array();  
  50.   foreach($rows as &$row){  
  51.   $id = $row[$this->pk_col];  
  52.   array_unshift($row, "");  
  53.   if($this->hide_pk_col){  
  54.   unset($row[$this->pk_col]);  
  55.   }  
  56.   }  
  57.   return $this->CI->table->generate($rows);  
  58.   }  
  59.   public static function createButton($action_name, $label){  
  60.   return "";  
  61.   }  
  62.   public static function getPostAction(){  
  63.   if(isset($_POST['dg_action'])){  
  64.   return key($_POST['dg_action']);  
  65.   }  
  66.   }  
  67.   public static function getPostItems(){  
  68.   if(!empty($_POST['dg_item'])){  
  69.   return $_POST['dg_item'];  
  70.   }  
  71.   return array();  
  72.   }  
  73.   public function deletePostSelection(){  
  74.   if(!empty($_POST['dg_item']))  
  75.   return $this->CI->db  
  76.   ->from($this->tbl_name)  
  77.   ->where_in($this->pk_col,$_POST['dg_item'])  
  78.   ->delete();  
  79.   }  
  80.   } 

我們把這個類保存為datagrid_helper.php,保存在application/helper目錄下。

原文:http://tech.it168.com/a2011/1024/1262/000001262979_all.shtml

【編輯推薦】

  1. 10月10款有趣強大的jQuery插件推薦
  2. 當jQuery遭遇CoffeeScript——妙不可言
  3. 10個新鮮的Ajax相關的jQuery插件
  4. 20個教你得到酷炫效果的jQuery教程
  5. jQuery插件開發實戰場
責任編輯:陳貽新 來源: it168
相關推薦

2011-10-28 14:01:30

jQuery

2017-08-10 13:43:00

大數據數據表格優化設計

2011-05-19 11:01:14

ERWin數據庫設計

2010-12-13 10:36:45

CSS表格

2022-01-14 10:34:59

B端表格設計APP

2011-01-26 08:59:11

jQueryjavascriptweb

2013-09-03 09:55:42

iOS無線客戶端框架設計

2015-09-08 11:06:46

設計編輯窗體

2010-07-05 16:23:39

UML類圖

2022-06-29 08:28:58

數據可視化數據可視化平臺

2023-07-26 12:38:42

PyGWalker數據類型

2011-06-30 16:38:07

Qt QTableWidg

2013-03-20 13:35:12

數據庫數據庫設計

2013-03-20 13:25:53

數據庫數據庫設計

2013-03-20 11:25:47

數據庫數據庫設計

2013-03-20 11:33:31

2012-04-28 10:07:43

數據庫數據庫設計

2011-07-26 15:30:32

jQuery

2025-10-27 01:36:00

C#數據模型

2021-11-09 08:15:18

Grafana 數據可視化運維
點贊
收藏

51CTO技術棧公眾號

日韩精品国产欧美| 欧美人妖在线| 黄色精品一区二区| 欧美一进一出视频| 国产又粗又黄又爽的视频| 欧美.日韩.国产.一区.二区| 日韩精品在线播放| 伊人影院综合在线| 国产探花视频在线观看| 久久久精品日韩欧美| 91视频国产精品| 日韩大片免费在线观看| 日韩欧美国产精品综合嫩v| 日韩女优av电影| 91在线视频观看免费| 午夜成年人在线免费视频| 久久影院视频免费| 97人人干人人| 老熟妇一区二区三区啪啪| 欧美激情日韩| 色悠悠久久久久| 醉酒壮男gay强迫野外xx| 99久久久成人国产精品| 欧美午夜片欧美片在线观看| 中国女人做爰视频| 国产精品一二三区视频| 成人丝袜18视频在线观看| 国产精品影院在线观看| 9i看片成人免费看片| 欧美日本免费| 久久亚洲私人国产精品va| 青青草福利视频| 欧美精品国产白浆久久久久| 欧美一级理论片| 日本超碰在线观看| 欧美大片免费观看网址| 天天影视网天天综合色在线播放| 福利在线小视频| 欧美日韩在线资源| 国产喂奶挤奶一区二区三区| 精品视频一区在线| 亚洲伦理在线观看| 国产一区二区三区黄视频| 国产精品入口免费视频一| 亚洲欧美偷拍视频| 国产亚洲精品v| 97精品一区二区三区| 久久国产露脸精品国产| 欧美精品观看| 久久夜精品va视频免费观看| 国产老头老太做爰视频| 天天做天天爱综合| 日韩在线www| 亚洲综合久久av一区二区三区| 精品一区二区三| 亚洲欧美综合区自拍另类| 欧美大片免费播放器| 国产一区二区在线视频你懂的| 精品日韩成人av| 男人添女人荫蒂国产| 欧美成年网站| 日韩欧美国产不卡| 久久无码专区国产精品s| 91精品久久久久久综合五月天| 日韩精品一区二区三区在线| 9191在线视频| 国产精品久久久网站| 精品国产麻豆免费人成网站| 国产麻豆剧传媒精品国产av| 都市激情亚洲欧美| 日韩高清不卡av| 97伦伦午夜电影理伦片| 欧美精选视频在线观看| 色播久久人人爽人人爽人人片视av| 日本视频在线免费| 中文精品电影| 97精品国产97久久久久久免费| 午夜影院免费在线观看| 日本成人中文字幕在线视频| 国产精品一区二区久久精品| 国产精品一二三四五区| 国产乱码一区二区三区| 国产精品毛片一区视频| 飘雪影院手机免费高清版在线观看| 久久久精品2019中文字幕之3| 亚洲精品在线免费看| 黄色在线观看网站| 亚洲一二三区不卡| 欧美牲交a欧美牲交aⅴ免费真 | 日本久久精品视频| 天天干天天插天天射| 国产在线精品不卡| 精品一区在线播放| 91.xxx.高清在线| 亚洲曰韩产成在线| 97xxxxx| 一区在线不卡| 日韩成人中文字幕| 亚洲精品自拍视频在线观看| 亚洲经典三级| 成人黄色大片在线免费观看| 色综合视频在线| 国产精品久久午夜| 免费看国产曰批40分钟| 国产精品诱惑| 日韩激情视频在线| 国产探花在线免费观看| 日韩高清在线电影| 91日韩久久| 午夜老司机在线观看| 亚洲成人一二三| 中文字幕成人免费视频| 欧美一区二区三区红桃小说| 精品国内自产拍在线观看| 成人毛片在线播放| 粉嫩av一区二区三区粉嫩| 特级西西444www大精品视频| free性护士videos欧美| 91精品国产乱码| 一级黄色片网址| 亚洲专区一区| 国产麻豆日韩| 尤物yw193can在线观看| 欧洲国产伦久久久久久久| 性囗交免费视频观看| 午夜精品久久久久久久四虎美女版| 热99精品只有里视频精品| 蜜桃视频污在线观看| 亚洲天堂久久久久久久| 午夜久久久精品| 国产欧美日韩精品高清二区综合区| 久久免费视频网| www.国产.com| 亚洲欧美精品午睡沙发| 亚洲免费av一区| 欧州一区二区| 国产成人免费av| 欧美日韩影视| 欧美午夜激情在线| 中文字幕av网址| 亚洲免费综合| 日本午夜精品一区二区| av资源亚洲| 亚洲一区二区精品| 激情五月婷婷网| 久久精品一区二区| 日韩在线xxx| 国产一区二区三区91| 日韩美女中文字幕| 精品999视频| 欧美午夜宅男影院| 五月婷婷综合激情网| 久久精品国产99国产精品| 日韩亚洲欧美精品| 欧美黑粗硬大| 欧美超级免费视 在线| 99热这里只有精| 一区二区激情小说| 一级黄色电影片| 99国产精品视频免费观看一公开| 国产欧美综合精品一区二区| а√在线天堂官网| 精品在线小视频| 欧美在线视频精品| 国产精品传媒在线| 成人在线短视频| 影音国产精品| 欧美视频小说| 日韩午夜视频在线| 九九热精品视频| 天堂中文在线资源| 色爱区综合激月婷婷| 欧美成人短视频| 国产一区二区不卡在线| 亚洲 自拍 另类小说综合图区| 欧美天堂社区| 国产精品日韩专区| 日韩激情av| 亚洲理论在线a中文字幕| 中文字幕av在线免费观看| 亚洲视频在线一区观看| 在线看黄色的网站| 水蜜桃久久夜色精品一区的特点| 亚洲一区二区在线观| 亚洲精品黑牛一区二区三区| 热99精品里视频精品| 国产美女av在线| 日韩精品在线观看网站| 国产一区二区麻豆| 亚洲电影第三页| 五月天精品在线| www.在线欧美| 激情黄色小视频| 亚洲美女网站| 中日韩在线视频| 日韩大胆成人| 91久久精品美女高潮| 松下纱荣子在线观看| 波霸ol色综合久久| 亚洲欧美日韩成人在线| 777午夜精品视频在线播放| 日本中文字幕免费| 中文字幕一区二区三区精华液 | wwwav在线播放| 欧美在线免费观看亚洲| 精品在线视频免费观看| 国产精品丝袜久久久久久app| 免费黄色av网址| 麻豆精品视频在线观看| 亚洲成人免费视频| 男女激情免费视频| 欧美先锋资源| 久久国产一区二区| 欧美1区2区3| 国产在线精品自拍| 自拍偷自拍亚洲精品被多人伦好爽| 萌白酱国产一区二区| 成年人在线观看视频| 日韩av在线免费播放| 国产精品福利电影| 在线观看亚洲精品| 久久久精品免费看| 亚洲妇女屁股眼交7| 一区视频免费观看 | 污污视频网站在线免费观看| 91丨porny丨在线| 亚洲美女精品视频| 国产精品99久久久久久久女警| www.色偷偷.com| 麻豆精品网站| 日本免费黄视频| 国产一区二区三区的电影 | 欧美性xxx| 91精品国产91久久久久久| 性欧美1819sex性高清大胸| 日韩一区视频在线| 欧美激情午夜| 中文字幕一精品亚洲无线一区 | 精品人妻一区二区三区蜜桃| 欧美美女直播网站| 中文字幕一二区| 日本久久电影网| 好吊色在线视频| 一本色道久久综合狠狠躁的推荐| 国产成人无码精品久久久久| 亚洲国产成人91porn| 国产精品 欧美 日韩| 精品久久久久久久久久久久久| 久久久午夜影院| 色综合婷婷久久| 在线观看亚洲黄色| 欧美日韩国产三级| 国产精品欧美激情在线| 91精品国产免费| 日本精品一二区| 亚洲免费伊人电影在线观看av| 欧洲天堂在线观看| 国产小视频国产精品| 国产女人在线观看| 色妞在线综合亚洲欧美| 黄网页在线观看| 欧美激情视频网站| 在线男人天堂| 国产精品视频午夜| 成人在线啊v| 国产精品一区二区你懂得| 女仆av观看一区| 秋霞久久久久久一区二区| 成人在线免费观看91| 男同互操gay射视频在线看| 欧美日本不卡| 日韩有码免费视频| 久99久精品视频免费观看| 久久av一区二区三| 91免费视频网| 婷婷国产成人精品视频| 一区二区三区四区中文字幕| 国产成人在线观看网站| 在线免费不卡电影| 国产成人三级在线播放| 亚洲精品国产精品自产a区红杏吧| 久久电影中文字幕| 久久亚洲国产成人| 爱啪啪综合导航| 国产精品日韩欧美大师| 97一区二区国产好的精华液| 欧美精品一区在线发布| 99久久激情| www.av中文字幕| 精品一区二区三区免费观看| 91传媒理伦片在线观看| 欧美极品xxx| 久久免费在线观看视频| 欧美在线观看18| 成人小说亚洲一区二区三区| 伊人久久久久久久久久久| 日韩三级免费| 国产又爽又黄的激情精品视频| 久久这里只有精品一区二区| 亚洲天堂电影网| 国产一区二区你懂的| 韩国三级在线播放| 国产欧美精品区一区二区三区| 国产一级在线播放| 欧美日韩精品三区| 日韩一卡二卡在线| 久久国产精品久久久久久久久久| 亚洲精品动漫| 国产精品久久久久久久久久直播 | 99在线精品一区二区三区| 糖心vlog免费在线观看| 在线观看国产一区二区| 人妻va精品va欧美va| 久久综合色影院| 欧美天堂一区二区| 欧美二区在线| 99精品国产一区二区青青牛奶| 激情久久综合网| 欧美国产欧美综合| 国产精品第5页| 日韩电影中文字幕av| 爱看av在线入口| 91久久国产精品91久久性色| 日本不卡高清| 99视频精品免费| 久久久久亚洲蜜桃| 在线观看精品国产| 精品sm捆绑视频| 欧美1—12sexvideos| 亚洲白虎美女被爆操| 精品一区二区三区四区五区六区| 中文字幕综合网| 一区二区视频免费| 亚洲欧美另类在线观看| 99爱在线视频| 国产一区二区无遮挡| 国一区二区在线观看| 人妻精油按摩bd高清中文字幕| 亚洲精品免费电影| 国产视频一区二区三| 久久黄色av网站| 日本成人在线网站| 亚洲一区二区三区精品在线观看| 狂野欧美性猛交xxxx巴西| 91中文字幕永久在线| 色综合久久久久综合| 男女网站在线观看| 青青a在线精品免费观看| 亚洲人成网77777色在线播放| 国产深夜男女无套内射| 99久久精品国产一区二区三区 | 91在线免费看片| 国产综合精品| 日本少妇xxxx| 欧美性极品xxxx做受| 精品电影在线| 国产在线精品自拍| 欧美日本在线| 艳妇乳肉豪妇荡乳xxx| 黑人巨大精品欧美一区二区| 青青久草在线| 国产精品日韩在线一区| 一区二区中文字| 中文字幕在线国产| 欧美视频在线观看免费网址| 国产在线资源| 成人午夜在线视频一区| 狠狠色丁香久久综合频道| yy6080午夜| 欧美在线啊v一区| 超碰在线免费公开| 国产午夜精品一区| 三级一区在线视频先锋| 亚洲怡红院在线观看| 精品日韩一区二区三区免费视频| 特黄毛片在线观看| 亚洲欧美99| 成人网男人的天堂| www五月天com| 久色乳综合思思在线视频| 极品尤物一区| 国产精品久久久毛片| 亚洲激情av在线| 美国一级片在线免费观看视频| 国产欧美一区二区三区视频 | 国产精品久久久一本精品| www.天堂在线| 日本一区二区在线播放| 婷婷综合视频| 99久久人妻精品免费二区| 欧美午夜精品一区二区蜜桃| 先锋影音在线资源站91| 欧美日韩一区在线视频| 国产综合久久久久久久久久久久| 日韩精品成人一区| 日韩在线观看免费网站| 欧美黑白配在线| 天天操夜夜操很很操| 91黄视频在线观看| 蜜臀av在线播放|