国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

Jquery+Ajax+PHP+MySQL實現分類列表管理(上)

2019-11-20 11:23:27
字體:
來源:轉載
供稿:網友

在實際應用中,我們要管理一個客戶分類,實現對客戶分類的增加、刪除和修改等操作,如何讓這些操作變得更人性化,讓用戶操作起來更加方便成了我們必須研究的課題。

 

準備階段
您需要具備HTML和Jquery等前端知識,以及基本的PHP程序和MySql數據庫相關知識。要實現本文中的DEMO示例,首先需要一個mysql數據庫:

CREATE TABLE `catalist` (  `cid` int(11) NOT NULL auto_increment,  `title` varchar(100) NOT NULL,  `sort` mediumint(6) NOT NULL default '0',  PRIMARY KEY (`cid`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; 

其次在頁面中引入jquery庫,以及操作結果提示插件jNotify和刪除確認插件hiAlert。后者兩個插件在本站都有詳細的講解,讀者可以通過鏈接了解下:
將需要準備的文件一并加入到index.php的<head>之間。

<script type="text/javascript" src="js/jquery.js"></script> <script type="text/javascript" src="js/jNotify.jquery.js"></script> <script type="text/javascript" src="js/jquery.alert.js"></script> <script type="text/javascript" src="js/global.js"></script> <link rel="stylesheet" type="text/css" href="css/alert.css" /> 

準備完畢我們進入主題。
index.php
index.php是主體頁面,讀取了數據庫中的分類數據,以列表展示,并提供了增加、刪除和修改的功能按鈕。

<?php include_once('connect.php'); //連接數據庫 $query = mysql_query("select * from catalist order by cid asc"); while($row=mysql_fetch_array($query)){  $list .= "<li rel='".$row['cid']."'><span class='del' title='刪除'></span>  <span class='edit' title='編輯'></span><span class='txt'>".$row['title']."</span></li>"; } ?> 

以上代碼通過讀取數據表中的數據,返回一個列表字符串。然后我們要將字符串輸出到對應的列表中,代碼如下:

<div class="selectlist">  <h3>客戶類別</h3>  <ul id="catalist">    <?php echo $list;?>  </ul>  <p><a href="javascript:;" onclick="addOpt()">新增一項</a></p> </div> 

試著往數據表中添加幾條數據,可以看到一個分類列表。
CSS

.input{width:160px; padding:2px; border:1px solid #d3d3d3} .cur_tr{background:#ffc} .selectlist{width:280px; margin:30px auto; border:1px solid #ccc;} .selectlist h3{height:32px; line-height:32px; padding:0 4px; border-bottom:1px dotted #d3d3d3;  background:#f7f7f7} .selectlist h3 span{float:right; font-weight:500} .selectlist ul{margin-top:4px; margin-left:20px; list-style-type: disc} .selectlist ul li{line-height:26px} .selectlist p{line-height:28px; padding-left:6px} .selectlist ul li span{width:20px; height:20px} .selectlist ul li span.edit{ float:right;background:url(images/edits.gif) no-repeat 0 5px; cursor:pointer} .selectlist ul li span.del,.selectlist ul li span.dels,.selectlist ul li span.cancer{  float:right;background:url(images/del.gif) no-repeat 0 5px; cursor:pointer} .selectlist ul li span.ok,.selectlist ul li span.oks{float:right;background:url(images/ok.gif) no-repeat 0 5px; cursor:pointer} 

CSS我就不詳細講解,看下就明白了,最終顯示的效果如圖:

新增項操作
在global.js加入addOpt()函數:

function addOpt(){  var str = "<li><span class='dels' title='取消'></span><span class='ok' title='保存'></span>  <input type='text' class='input' /></li>";  $("#catalist").append(str); } 

通過單擊“新增一項”鏈接,向DOM中添加了一個新增項的輸入框。
當用戶輸入內容后,點擊“保存”,將會觸發一個ajax操作,先看代碼:

$(function(){  //保存新增項  $(".ok").live('click',function(){   var btn = $(this);   var input_str = btn.parent().find('input').val();   if(input_str==""){    jNotify("請輸入類別!");    return false;   }   var str = escape(input_str);   $.getJSON("post.php?action=add&title="+str,function(json){    if(json.success==1){     var li = "<li rel='"+json.id+"'><span class='del' title='刪除'>     </span><span class='edit' title='編輯'></span><span class='txt'>"+     json.title+"</span></li>";     $("#catalist").append(li);     btn.parent().remove();     jSuccess("恭喜,操作成功!");    }else{     jNotify("出錯了!");     return false;    }   });  }); }); 

首先獲取用戶輸入的內容,如果沒有輸入任何內容則提示用戶輸入內容,然后將用戶輸入的內容進行escape編碼,保證中文字符能正確傳輸給后臺程序識別。然后通過$.getJSON方法向后臺post.php發起一個異步的Ajax請求。后臺post.php接收參數值并進行相關處理,前端代碼通過響應后臺返回的JSON數據,如果新增成功,則向列表后面追加一項,并提示用戶“操作成功”,如果失敗則提示用戶“出錯了”。
如果要取消新增項操作,只需當單擊“取消”按鈕時執行以下代碼:

//取消新增項 $(".dels").live('click',function(){   $(this).parent().remove(); //將新增項移除 }); 

后臺post.php需要處理新增項內容,代碼如下:

include_once('connect.php'); //連接數據庫 $action = $_GET['action']; switch($action){  case 'add': //新增項   $title = uniDecode($_GET['title'],'utf-8');   $title = htmlspecialchars($title,ENT_QUOTES);   $query = mysql_query("insert into catalist (cid,title) values (NULL,'$title')");   if($query){    $insertid = mysql_insert_id($link);    $arr = array('id'=>$insertid,'title'=>$title,'success'=>1);   }else{    $arr = array('success'=>2);   }   echo json_encode($arr);   break;   case '':   break; } 

通過接收前端提交的內容,進行解碼后,寫入數據表中,并輸出JSON數據格式供前臺處理。關于uniDecode()函數,讀者可以下載源碼了解,主要是為了正確讀取解析jquery通過異步提交的中文字符串。
添加項操作已經完成,下面請看刪除項操作。刪除項操作
回到global.js,在$(function(){})加入下面的代碼:

//刪除項  $(".del").live('click',function(){   var btn = $(this);   var id = btn.parent().attr('rel');   var URL = "post.php?action=del";   hiConfirm('您確定要刪除嗎?', '提示',function(r){    if(r){     $.ajax({     type: "POST",     url: URL,     data: "id="+id,     success: function(msg){      if(msg==1){       jSuccess("刪除成功!");       btn.parent().remove();      }else{       jNotify("操作失敗!");       return false;      }     }     });    }   });  }); 

顯然,通過單擊“刪除”按鈕,同樣是向后臺post.php發送一個ajax請求,將刪除項對應的參數ID發送給后臺并響應后臺處理結果,如果成功,則提示用戶“刪除成功”,并通過remove()將數據項移除,如果失敗,則提示“操作失敗”。
后臺post.php接收參數并作出相應的處理:

case 'del': //刪除項  $id = $_POST['id'];  $query = mysql_query("delete from catalist where cid=".$id);  if($query){   echo '1';  }else{   echo '2';  }  break; 

以上這段代碼片段,加在post.php的switch語句中,執行了刪除語句,并輸出執行結果供前端處理。
限于篇幅,修改項操作在下此文章中再進行講解,敬請關注,不要錯過嘍。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 雷山县| 平度市| 海宁市| 正阳县| 白城市| 化州市| 太康县| 平乐县| 桂阳县| 富锦市| 亚东县| 大余县| 河北省| 阳朔县| 永吉县| 吉木乃县| 巴楚县| 清流县| 乌兰县| 行唐县| 方山县| 广元市| 高阳县| 吉安县| 七台河市| 佛冈县| 隆林| 云和县| 缙云县| 延安市| 江北区| 筠连县| 鹿泉市| 织金县| 崇义县| 林芝县| 东光县| 星座| 阿拉善左旗| 巴林右旗| 东城区|