日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
jQuery+Ajax+PHP+MySQL實(shí)現(xiàn)分類(lèi)列表管理

在實(shí)際應(yīng)用中,我們要管理一個(gè)客戶分類(lèi),實(shí)現(xiàn)對(duì)客戶分類(lèi)的增加、刪除和修改等操作,如何讓這些操作變得更人性化,讓用戶操作起來(lái)更加方便成了我們必須研究的課題。

創(chuàng)新互聯(lián)主要從事成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)市中,10多年網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專(zhuān)業(yè),歡迎來(lái)電咨詢建站服務(wù):13518219792

本文將采用jQuery+Ajax+PHP+MySQL來(lái)實(shí)現(xiàn)一個(gè)客戶分類(lèi)列表的管理,如何利用Ajax和Json技術(shù)讓用戶操作起來(lái)覺(jué)得更輕松,且看本文一一講解。

展示‖下載

準(zhǔn)備階段

您需要具備HTML和jQuery等前端知識(shí),以及基本的PHP程序和MySQL數(shù)據(jù)庫(kù)相關(guān)知識(shí)。要實(shí)現(xiàn)本文中的DEMO示例,首先需要一個(gè)MySQLl數(shù)據(jù)庫(kù):

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

其次在頁(yè)面中引入jquery庫(kù),以及操作結(jié)果提示插件jNotify和刪除確認(rèn)插件hiAlert。

將需要準(zhǔn)備的文件一并加入到index.php的之間。

 
 
 
 
  1.  
  2.  
  3.  
  4.  
  5.  

準(zhǔn)備完畢我們進(jìn)入主題。

index.php

index.php是主體頁(yè)面,讀取了數(shù)據(jù)庫(kù)中的分類(lèi)數(shù)據(jù),以列表展示,并提供了增加、刪除和修改的功能按鈕。

 
 
 
 
  1. include_once('connect.php'); //連接數(shù)據(jù)庫(kù) 
  2. $query = mysql_query("select * from catalist order by cid asc"); 
  3. while($row=mysql_fetch_array($query)){ 
  4.     $list .= " 
  5.     ".$row['title']."
  6. "; 
  7. ?> 

以上代碼通過(guò)讀取數(shù)據(jù)表中的數(shù)據(jù),返回一個(gè)列表字符串。然后我們要將字符串輸出到對(duì)應(yīng)的列表中,代碼如下:

 
 
 
 
  1.  
  2.     

    客戶類(lèi)別

     
  3.      
  4.           
  5.      
  6.     

    新增一項(xiàng)

     
 

試著往數(shù)據(jù)表中添加幾條數(shù)據(jù),可以看到一個(gè)分類(lèi)列表。

CSS

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

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

新增項(xiàng)操作

在global.js加入addOpt()函數(shù):

 
 
 
 
  1. function addOpt(){ 
  2.     var str = "
  3.  
  4.     
  5. "; 
  6.     $("#catalist").append(str); 

通過(guò)單擊“新增一項(xiàng)”鏈接,向DOM中添加了一個(gè)新增項(xiàng)的輸入框。

當(dāng)用戶輸入內(nèi)容后,點(diǎn)擊“保存”,將會(huì)觸發(fā)一個(gè)ajax操作,先看代碼:

 
 
 
 
  1. $(function(){ 
  2.     //保存新增項(xiàng) 
  3.     $(".ok").live('click',function(){ 
  4.         var btn = $(this); 
  5.         var input_str = btn.parent().find('input').val(); 
  6.         if(input_str==""){ 
  7.             jNotify("請(qǐng)輸入類(lèi)別!"); 
  8.             return false; 
  9.         } 
  10.         var str = escape(input_str); 
  11.         $.getJSON("post.php?action=add&title="+str,function(json){ 
  12.             if(json.success==1){ 
  13.                 var li = " 
  14.                 "+ 
  15.                 json.title+"
  16. "; 
  17.                 $("#catalist").append(li); 
  18.                 btn.parent().remove(); 
  19.                 jSuccess("恭喜,操作成功!"); 
  20.             }else{ 
  21.                 jNotify("出錯(cuò)了!"); 
  22.                 return false; 
  23.             } 
  24.         }); 
  25.     }); 
  26. }); 

首先獲取用戶輸入的內(nèi)容,如果沒(méi)有輸入任何內(nèi)容則提示用戶輸入內(nèi)容,然后將用戶輸入的內(nèi)容進(jìn)行escape編碼,保證中文字符能正確傳輸給后臺(tái)程序識(shí)別。然后通過(guò)$.getJSON方法向后臺(tái)post.php發(fā)起一個(gè)異步的Ajax請(qǐng)求。后臺(tái)post.php接收參數(shù)值并進(jìn)行相關(guān)處理,前端代碼通過(guò)響應(yīng)后臺(tái)返回的JSON數(shù)據(jù),如果新增成功,則向列表后面追加一項(xiàng),并提示用戶“操作成功”,如果失敗則提示用戶“出錯(cuò)了”。

如果要取消新增項(xiàng)操作,只需當(dāng)單擊“取消”按鈕時(shí)執(zhí)行以下代碼:

 
 
 
 
  1. //取消新增項(xiàng) 
  2. $(".dels").live('click',function(){ 
  3.      $(this).parent().remove();  //將新增項(xiàng)移除 
  4. }); 

后臺(tái)post.php需要處理新增項(xiàng)內(nèi)容,代碼如下:

 
 
 
 
  1. include_once('connect.php'); //連接數(shù)據(jù)庫(kù) 
  2. $action = $_GET['action']; 
  3. switch($action){ 
  4.     case 'add':  //新增項(xiàng) 
  5.        $title = uniDecode($_GET['title'],'utf-8'); 
  6.        $title = htmlspecialchars($title,ENT_QUOTES); 
  7.        $query = mysql_query("insert into catalist (cid,title) values (NULL,'$title')"); 
  8.        if($query){ 
  9.            $insertid = mysql_insert_id($link); 
  10.            $arr = array('id'=>$insertid,'title'=>$title,'success'=>1); 
  11.        }else{ 
  12.            $arr = array('success'=>2); 
  13.        } 
  14.        echo json_encode($arr); 
  15.        break; 
  16.      case '': 
  17.        break; 

通過(guò)接收前端提交的內(nèi)容,進(jìn)行解碼后,寫(xiě)入數(shù)據(jù)表中,并輸出JSON數(shù)據(jù)格式供前臺(tái)處理。關(guān)于uniDecode()函數(shù),讀者可以下載源碼了解,主要是為了正確讀取解析jquery通過(guò)異步提交的中文字符串。

添加項(xiàng)操作已經(jīng)完成,下面請(qǐng)看刪除項(xiàng)操作。

刪除項(xiàng)操作

回到global.js,在$(function(){})加入下面的代碼:

 
 
 
 
  1. //刪除項(xiàng) 
  2.     $(".del").live('click',function(){ 
  3.         var btn = $(this); 
  4.         var id = btn.parent().attr('rel'); 
  5.         var URL = "post.php?action=del"; 
  6.         hiConfirm('您確定要?jiǎng)h除嗎?', '提示',function(r){ 
  7.             if(r){ 
  8.               $.ajax({ 
  9.                 type: "POST", 
  10.                 url: URL, 
  11.                 data: "id="+id, 
  12.                 success: function(msg){ 
  13.                    if(msg==1){ 
  14.                        jSuccess("刪除成功!"); 
  15.                        btn.parent().remove(); 
  16.                    }else{ 
  17.                        jNotify("操作失敗!"); 
  18.                        return false; 
  19.                    } 
  20.                 } 
  21.              }); 
  22.             } 
  23.         }); 
  24.     }); 

顯然,通過(guò)單擊“刪除”按鈕,同樣是向后臺(tái)post.php發(fā)送一個(gè)ajax請(qǐng)求,將刪除項(xiàng)對(duì)應(yīng)的參數(shù)ID發(fā)送給后臺(tái)并響應(yīng)后臺(tái)處理結(jié)果,如果成功,則提示用戶“刪除成功”,并通過(guò)remove()將數(shù)據(jù)項(xiàng)移除,如果失敗,則提示“操作失敗”。

后臺(tái)post.php接收參數(shù)并作出相應(yīng)的處理:

 
 
 
 
  1. case 'del':  //刪除項(xiàng) 
  2.     $id = $_POST['id']; 
  3.     $query = mysql_query("delete from catalist where cid=".$id); 
  4.     if($query){ 
  5.         echo '1'; 
  6.     }else{ 
  7.         echo '2'; 
  8.     } 
  9.     break; 

以上這段代碼片段,加在post.php的switch語(yǔ)句中,執(zhí)行了刪除語(yǔ)句,并輸出執(zhí)行結(jié)果供前端處理。

#p#

在上篇中,我們?cè)敿?xì)講解了如何實(shí)現(xiàn)列表管理的新增和刪除操作,可以看出,前端頁(yè)面通過(guò)ajax與后臺(tái)通信,根據(jù)后臺(tái)處理結(jié)果響應(yīng)前端頁(yè)面交互操作,這是一個(gè)很典型的Ajax和JSON應(yīng)用的例子。

編輯項(xiàng)操作

用戶通過(guò)單擊“編輯”按鈕,相應(yīng)的項(xiàng)會(huì)立即變?yōu)榫庉嫚顟B(tài),出現(xiàn)一個(gè)輸入框,用戶可以重新輸入新的內(nèi)容,然后點(diǎn)擊“保存”按鈕完成編輯操作,也可以單擊“取消”按鈕取消編輯狀態(tài)。

首先,通過(guò)單擊“編輯”按鈕,實(shí)現(xiàn)編輯狀態(tài),在global.js的$(function(){...})中加入如下代碼:

 
 
 
 
  1. //編輯選項(xiàng) 
  2. $(".edit").live('click',function(){ 
  3.     $(this).removeClass('edit').addClass('oks').attr('title','保存'); 
  4.     $(this).prev().removeClass('del').addClass('cancer').attr('title','取消'); 
  5.     var str = $(this).parent().text(); 
  6.     var input = ""; 
  7.     $(this).next().wrapInner(input); 
  8. }); 

從代碼中可以看出,其實(shí)是改變了“編輯”按鈕和“刪除”按鈕的class樣式,修改了其title屬性,然后將分類(lèi)名稱(chēng)用一個(gè)input輸入框包裹(wrapInner),這樣就生成了一個(gè)編輯狀態(tài)。

要將修改好的內(nèi)容提交給后臺(tái)處理,通過(guò)單擊“保存”按鈕,會(huì)發(fā)生下面的事情,請(qǐng)看代碼:

 
 
 
 
  1. //編輯處理 
  2. $(".oks").live('click',function(){ 
  3.     var input_str = $(this).parent().find('input').val(); 
  4.     if(input_str==""){ 
  5.         jNotify("請(qǐng)輸入類(lèi)別名稱(chēng)!"); 
  6.         return false; 
  7.     } 
  8.     var str = escape(input_str); 
  9.     var id = $(this).parent().attr("rel"); 
  10.     var URL = "post.php?action=edit"; 
  11.          
  12.     var btn = $(this); 
  13.     $.ajax({ 
  14.             type: "POST", 
  15.             url: URL, 
  16.             data: "title="+str+"&id="+id, 
  17.             success: function(msg){ 
  18.                 if(msg==1){ 
  19.                     jSuccess("編輯成功!"); 
  20.                     var strs = "
  21.                     title='編輯'>"+input_str+"; 
  22.                     btn.parent().html(strs); 
  23.                 }else{ 
  24.                     jNotify("操作失敗!"); 
  25.                     return false; 
  26.                 } 
  27.            } 
  28.     }); 
  29. }); 

通過(guò)單擊編輯狀態(tài)下的“保存”按鈕,首先獲取輸入框的內(nèi)容,如果沒(méi)有輸入任何內(nèi)容則提示用戶輸入內(nèi)容,然后將用戶輸入的內(nèi)容進(jìn)行escape編碼,同時(shí)還要獲取編輯項(xiàng)對(duì)應(yīng)的ID,將輸入的內(nèi)容和ID作為參數(shù)通過(guò)$.ajax提交給后臺(tái)post.php處理,并響應(yīng)后臺(tái)返回的信息,如果返回成功,則提示用戶“編輯成功”,并且解除編輯狀態(tài),如果返回失敗,則提示用戶“操作失敗”。

后臺(tái)post.php處理編輯項(xiàng)操作與上篇的新增項(xiàng)操作差不多,代碼如下:

 
 
 
 
  1. case 'edit':  //編輯項(xiàng) 
  2.     $id = $_POST['id']; 
  3.     $title = uniDecode($_POST['title'],'utf-8'); 
  4.     $title = htmlspecialchars($title,ENT_QUOTES); 
  5.     $query = mysql_query("update catalist set title='$title' where cid='$id'"); 
  6.     if($query){ 
  7.         echo '1'; 
  8.     }else{ 
  9.         echo '2'; 
  10.     } 
  11.     break; 

以上代碼片段加在post.php的switch語(yǔ)句中,代碼接收了前端傳來(lái)的id和title參數(shù),并對(duì)title參數(shù)進(jìn)行解碼,然后更新數(shù)據(jù)表中對(duì)應(yīng)的項(xiàng),并輸出執(zhí)行結(jié)果給前臺(tái)處理。

要取消編輯狀態(tài),則通過(guò)單擊“取消”執(zhí)行以下代碼:

 
 
 
 
  1. //取消編輯 
  2. $(".cancer").live('click',function(){ 
  3.     var li = $(this).parent().html(); 
  4.     var str_1 = $(this).parent().find('input').val(); 
  5.     var strs = " 
  6.     "+str_1+""; 
  7.     $(this).parent().html(strs); 
  8. }); 

其實(shí),代碼重新組裝了一個(gè)字符串,重新將組裝的字符串替代了編輯狀態(tài),即取消了編輯狀態(tài)。

總結(jié)

通過(guò)這樣一個(gè)實(shí)際應(yīng)用的案例,我們可以體驗(yàn)前端技術(shù)的優(yōu)越性,用戶完成的每一步操作是那么的友好,這是用戶體驗(yàn)的一個(gè)方面。Jquery庫(kù)讓ajax操作變得如此簡(jiǎn)單,文中代碼中還用到了jquery的live方法,這是為了綁定動(dòng)態(tài)創(chuàng)建DOM元素所必需的。此外,文中沒(méi)有提到驗(yàn)證輸入類(lèi)表的重復(fù)性,這個(gè)是需要后臺(tái)驗(yàn)證的,讀者朋友們可以自行寫(xiě)一段驗(yàn)證代碼。最后,順便提一下,如果本例再加上一個(gè)拖動(dòng)排序的功能,是不是會(huì)更完美呢?關(guān)于拖動(dòng)排序的實(shí)現(xiàn),helloweba.com也有相關(guān)實(shí)例講解,各位讀者朋友可以先熟知。


新聞名稱(chēng):jQuery+Ajax+PHP+MySQL實(shí)現(xiàn)分類(lèi)列表管理
文章源于:http://m.5511xx.com/article/dpdiddp.html