ホームページ  >  記事  >  バックエンド開発  >  PHP実践9日目_PHPチュートリアル

PHP実践9日目_PHPチュートリアル

WBOY
WBOYオリジナル
2016-07-14 10:11:06765ブラウズ

1.jquery事件可以绑定N个,如果不进行取消就会重复调用绑定的事件。深感体会,搞了两小时终于发现其中奥妙。
以下代码不能单独运行的。需要 bootstrap和jquery
[javascript]  /**
* 用于显示对话框消息框
* 参数 title 消息标题
* 参数 content 消息内容
* 参数 buttomTitle 处理消息的按钮自定义的,比如确认删除
* 参数 fun 自定义按钮click事件
* 参数 passOnData 传递到自定义fun里的参数
*/ 
function show_Msg (title,content,buttomTitle,fun,passOnData) { 
    $("#msg #myModalLabel").html(title); 
    $("#msg .modal-body").html(content); 
    $('#msg #msg_c').html(buttomTitle).click(function(){ 
        fun(passOnData);//调用自定义的函数,以及传递自定义的数据  
        $('#msg').modal('hide');//点击完就把窗口隐藏了  
        $(this).unbind('click');//如果不取消事件,那么将重复调用。。  
    });; 
    $('#msg').modal('show'); 

/**
* 用于显示对话框消息框
* 参数 title 消息标题
* 参数 content 消息内容
* 参数 buttomTitle 处理消息的按钮自定义的,比如确认删除
* 参数 fun 自定义按钮click事件
* 参数 passOnData 传递到自定义fun里的参数
*/
function show_Msg (title,content,buttomTitle,fun,passOnData) {
 $("#msg #myModalLabel").html(title);
 $("#msg .modal-body").html(content);
 $('#msg #msg_c').html(buttomTitle).click(function(){
  fun(passOnData);//调用自定义的函数,以及传递自定义的数据
  $('#msg').modal('hide');//点击完就把窗口隐藏了
  $(this).unbind('click');//如果不取消事件,那么将重复调用。。
 });;
 $('#msg').modal('show');
}html消息框模板
[html]   

 


ルーチンの呼び出し
[javascript] show_Msg('タイトルは長くしてください', '太字フォントなどのHTMLを記述できます', '削除', function(e){
アラート (e); },'削除をクリックした後に渡したデータは次のとおりです');
show_Msg('タイトルは長くしてください', '太字フォントなどのHTMLを記述できます','削除',function(e){

アラート(e);

},'削除をクリックした後に渡したデータは次のとおりです');

[javascript] 関数 admin_content_del (id) {

var data=リストデータ[id]; Show_Msg('削除の確認',data.content,'削除の確認',function(delId){

$.ajax({
URL: 'http://localhost/l/index.php'、
タイプ: 'get'、
データ型: 'json'、
データ: {
m: 「管理者」、
a: 'delcontent'、
id: delId
}、
完了: function(xhr, textStatus) {
// 完了時に呼び出されます
}、
成功: function(data, textStatus, xhr) {
If(data.state='ok'){
admin_content(1); show_Msg_success('正常に削除されました');                                                  }その他{
show_Msg_success('削除に失敗しました');                                                                        }、
エラー: function(xhr, textStatus, errorThrown) {
//エラーが発生した場合に呼び出されます
}
});
},データ.id); }

関数 admin_content_del (id) {
var data=listData[id];
show_Msg('削除の確認',data.content,'削除の確認',function(delId){
$.ajax({
URL: 'http://localhost/l/index.php',
タイプ: 'get'、
データ型: 'json'、
データ: {
m: 「管理者」、

a: 'デルコンテンツ'、

id:delId
}、
完全: function(xhr, textStatus) {
//完了時に呼び出されます
}、
成功: function(data, textStatus, xhr) {
If(data.state='ok'){
admin_content(1);
Show_Msg_success('削除に成功しました');

}その他{
Show_Msg_success('削除に失敗しました');
}
}、
エラー: function(xhr, textStatus, errorThrown) {
//エラーが発生したときに呼び出されます
}
});

},data.id);
}


2. setTimeout はイベントの実行を遅らせます。このメッセージは非常に優れており、非常によく使用されますが、メッセージをクリアするこの方法は単純で粗雑です。


[javascript]  /**
* 用于显示顶部消息。显示的消息3秒后自动销毁。
* 参数 content 消息内容
* 参数 face 消息的样式,真,为成功绿色的;假,为错误红色的
*/ 
function show_Msg_success(content,face){ 
    if (face==null) { 
        face=true; 
    } 
 
    face = face?'success':'error'; 
     
    strTag='

'+content+'
'; 
 
    $(strTag).prependTo('#main'); 
 
    setTimeout(function(){ 
        $(".alert").alert('close'); 
    },3000); 

/**
* 用于显示顶部消息。显示的消息3秒后自动销毁。
* 参数 content 消息内容
* 参数 face 消息的样式,真,为成功绿色的;假,为错误红色的
*/
function show_Msg_success(content,face){
 if (face==null) {
  face=true;
 }

 face = face?'success':'error';
 
    strTag='

'+content+'
';

$(strTag).prependTo('#main');

setTimeout(function(){
) $(".alert").alert('close');
},3000);
}


3. チェックボックスを選択するには純粋な DOM を使用する方が良いです。jquery の art() メソッドは不正です
checkbox.attr('checked',$(this).get()[0].checked);

チェックボックスをオンにしますが、最初は機能し、3回目以降は奇妙なことに失敗します。問題は真実ではありません。
[JavaScript]関数 click_tr() {
var checkbox = $("#mainData tr input");
checkbox.eq(0).click(function() {
//checkbox.attr('checked',$(this).get()[0].checked);
bool = $(this).get()[0].checked;
for (var i = 1; i checkbox[i].checked = bool;
;
});
$("#mainData tr").each(function(index) {
$(this).click(function() {

if (インデックス == 0) {

                                                                                           var val = checkbox.eq(index); val = val.get()[0]; var bool = val.checked;
//alert(index); If (ブール値) {
チェックされた値 = FALSE;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          });
});
関数 click_tr() {
var checkbox = $("#mainData tr input");

checkbox.eq(0).click(function() {
//checkbox.attr('checked',$(this).get()[0].checked);

bool = $(this).get()[0].checked;

for (var i = 1; i チェックボックス[i].checked = bool;
};

});

$("#mainData tr").each(function(index) {
$(this).click(function() {

if (インデックス == 0) {


} 他 {

var val = checkbox.eq(index);

val = val.get()[0];
var bool = val.checked;

//アラート(インデックス);

If (ブール値) {

val.checked = false;
} その他 {
val.checked = true;

}

}

});

}); いくつか調べてテストコードを書きましたが、それでも役に立たず、真実を知らない人を選択することはできませんでした。
[html]



<入力タイプ="送信" 値="送信"> すべて選択 チェックを外します

<スクリプトタイプ="text/javascript">
$(ドキュメント).ready(function() {

$("#quanxuan").click(function(){
$("#myform input").attr('checked',true); });
$("#quxiao").click(function(){
$("#myform input").attr('checked',false); }); });



<頭>














すべて選択
チェックを外します



<スクリプトタイプ="text/javascript">

$(document).ready(function() {

$("#quanxuan").click(function(){
$("#myform input").attr('checked',true);
});

$("#quxiao").click(function(){

$("#myform input").attr('checked',false);
});
});




4. たくさん話した後、レンダリングはありません。




5. タイトルにはPHPの実践とありますが、これまでの投稿はすべてPHPのコードです。 。以下に一括削除用のPHPコードを掲載します
[php] /**
* メッセージを一括削除するために使用します
*/
関数バッチDelContent(){
$json['state']="いいえ";
$data=配列();
$arr=$_POST['delcontent']
If (count($arr)>0) {
$json['state']="ok"; }

foreach ($arr as $value) {

$result=$this->db
->where("id=".$value)
->テーブル("データ")
->削除();
If ($result) {
$arr_data['state']="ok"; }その他{
$arr_data['state']="no"; }
$arr_data['id']=$value;
$data[]=$arr_data; }

$json['データ']=$データ
エコー json_encode($json); }

/**
* メッセージを一括削除するために使用します
​*/
関数バッチDelContent(){
$json['state']="いいえ";

$data=Array();

$arr=$_POST['delcontent'];

if (count($arr)>0) {
$json['state']="ok";
}

foreach ($arr as $value) {

$result=$this->db

->where("id=".$value)

->テーブル("データ")
->削除();

if ($result) {

$arr_data['state']="ok";

}その他{

$arr_data['state']="いいえ";

}
$arr_data['id']=$value;

$data[]=$arr_data;

}


$json['data']=$data;
echo json_encode($json);
}今日書いたphpコードはこれですべてです。 。そのほとんどは JavaScript です


誰でも見れるように admin.js を投稿しました。
[javascript] // JavaScript ドキュメント
$(document).ready(function(e) {

$("#メニューa").click(function() {

switch ($(this).text()) {
ケース「すべてのメッセージ」:
admin_content(1); 壊す;
ケース「基本設定」:
$("#main #mainData").load('admin_config.html?r='+Math.random()); 壊す;
デフォルト:
壊す; }



});
$("#main #mainData").load('admin_config.html?r='+Math.random()); //$("#start").click(); });

/**
*メッセージ管理
*/
リストデータ=null; 関数 admin_content(ページ) {

$.ajax({
url: 'http://localhost/l/admin.php?m=admin&a=content&page=' + page + '&rand=' + Math.random(),
タイプ: 'get'、
データ型: 'json'、
データ: {}、
完全: function(xhr, textStatus) {
// 完了時に呼び出されます
}、
成功: function(json, textStatus, xhr) {
If (json['state'] == 'ok') {
var page_start = json['start'];// ページングを開始します
var page_end = json['end'];// ページングの終了
var page_page = json['page'];// 現在のページをページングします
listData = json['data'];// ページングデータ

table_html=''; table_html+='一括削除'; /**                                          * テーブルコンテンツを生成します
*/
table_html+= '

< th>メッセージの内容'; for (i = 0; i < listData.length; i++) {
var trClass = (i % 2 == 0) 'class="info"' : '';
//var tr_html = '';  
                    tr_html = ''; 
                    tr_html+=''; 
                    //删除  
 
                    tr_html+=''; 
                    tr_html+=''; 
                    tr_html+=''; 
 
                    テーブル_html += tr_html; 
                }
                table_html += '
操作ユーザー名公開時間
删除' + listData[i].userName + '
' + listData[i].content + '
' + getLocalTime(listData[i].time) + '
'+listData[i].id+'' + listData[i].userName + '
' + listData[i].content + '
' + getLocalTime(listData[i].time) + '
'; 
 
/**
*ページネーションを生成します
*/
                var page_html = '
';

var mainData = $("#main #mainData"); Maindata.html (テーブル_html); Maindata.append (Page_html);
admin_content_page(page_page,page_end); // admin_content_page(page_page,page_end) // ページングのクリック イベントをフックします
Click_tr (); // クリックイベントをハングします。                                                                       


//alert(json.data); }、
エラー: function(xhr, textStatus, errorThrown) {
//エラーが発生した場合に呼び出されます
}
}); }

/**
* オンフックページングイベント
* パラメータ page_page 現在のページ
* パラメータ page_end ページ数
*/
function admin_content_page(page_page,page_end) {
$("#mainPage a").click(function() {
var charStr = $(this).text(); var num = charStr; If (charStr == "»") {
num = parseInt(page_page) + 1; If (page_end 戻る
                                                                      
} else if (charStr == "«") {
num = parseInt(page_page) - 1; If (数値 戻る
                                                                       }

admin_content(番号);
}); }



関数 getLocalTime(nS) {
新しい Date(parseInt(nS) * 1000).toLocaleString().replace(/:d{1,2}$/, ' '); を返します。 }

関数 admin_content_del (id) {
var data=リストデータ[id]; Show_Msg('削除の確認',data.content,'削除の確認',function(delId){
$.ajax({
URL: 'http://localhost/l/index.php'、
タイプ: 'get'、
データ型: 'json'、
データ: {
m: 「管理者」、
a: 'デルコンテンツ'、
id: delId
}、
完了: function(xhr, textStatus) {
// 完了時に呼び出されます
}、
成功: function(data, textStatus, xhr) {
If(data.state='ok'){
admin_content(1);                show_Msg_success('删除成功'); 
                 
            }その他{
                show_Msg_success('删除失败'); 
            }
          }、
          エラー: function(xhr, textStatus, errorThrown) {
            //エラーが発生した場合に呼び出されます
          }
        }); 
         
    },データ.id); 
}
 
関数 admin_content_del_pl() {
 
    var checkbox = $("#mainData :checked"); 
 
    var listId = Array(); 
 
    checkbox.each(function() {
        //alert($(this).get()[0].name);  
        if ($(this).get()[0].name == 'delcontent[]') {
            listId.unshift($(this).val()); 
        }
    }); 
 
    $.ajax({
      URL: 'http://localhost/l/admin.php?m=admin&a=batchDelContent'、
      タイプ: 「POST」、
      データ型: 'json'、
      データ: {delcontent: listId
      }、
      complete: function(xhr, textStatus) {
        // 完了時に呼び出されます
      }、
      成功: function(json, textStatus, xhr) {
        if(json.state=='ok'){
            var データ = json.data; 
            for (var i = 0; i                 if(data[i]['state']=='ok'){
                    show_Msg_success(data[i].id + '删除成功'); 
                }その他{
                    show_Msg_success(data[i].id + '删除失败',false); 
                }
            }; 
 
        }その他{
 
        }
        admin_content(1); 
      }、
      エラー: function(xhr, textStatus, errorThrown) {
        //エラーが発生した場合に呼び出されます
      }
    }); 
     
// alert(listId);  
}
 
 
/**
* ダイアログメッセージボックスを表示するために使用されます
*パラメータタイトルメッセージタイトル
*パラメータ内容メッセージ内容
* パラメータbuttomTitleは、削除の確認などのメッセージを処理するためのカスタマイズされたボタンです
*パラメータ楽しいカスタムボタンクリックイベント
* パラメータ passOnData はカスタム fun
のパラメータに渡されます*/
function show_Msg (title,content,buttomTitle,fun,passOnData) {
    $("#msg #myModalLabel").html(title); 
    $("#msg .modal-body").html(コンテンツ); 
    $('#msg #msg_c').html(buttomTitle).click(function(){
        fun(passOnData);//调用自定义的函数,以及传递自定义的数据  
        $('#msg').modal('hide');//点击完就把窗口隐藏了  
        $(this).unbind('click');//如果不取消事件,那么将重复调用。。  
    });; 
    $('#msg').modal('show'); 

/**
* 用于显示顶部消息。显示的消息3秒后自动销毁。
* 参数 content 消息内容
* 参数 face 消息的样式,真,为成功绿色的;假,为错误红色的
*/ 
function show_Msg_success(content,face){ 
    if (face==null) { 
        face=true; 
    } 
 
    face = face?'success':'error'; 
     
    strTag='
'+content+'
';
$(strTag).prependTo('#main');
setTimeout(function(){
$(".alert").alert('close'); },3000); }

//show_Msg_content('ああああああああああああ所得税')
/*
show_Msg('タイトルは長くする必要があります', '太字 フォント などの HTML をここに記述できます','削除',function(e){
アラート(e);
},'削除をクリックした後に渡したデータは次のとおりです');
*/

関数 click_tr() {
var checkbox = $("#mainData tr input");
checkbox.eq(0).click(function() {
//checkbox.attr('checked',$(this).get()[0].checked);
bool = $(this).get()[0].checked;
for (var i = 1; i checkbox[i].checked = bool;
;
});
$("#mainData tr").each(function(index) {
$(this).click(function() {

if (インデックス == 0) {

                                                                                           var val = checkbox.eq(index); val = val.get()[0]; var bool = val.checked;
//alert(index); If (ブール値) {
チェックされた値 = FALSE;                                                                                                                                                                                                                                                                                                                                                                                                                                               
});
}); }

//JavaScript ドキュメント
$(document).ready(function(e) {

$("#menu a").click(function() {

switch ($(this).text()) {
'すべてのメッセージ' の場合:
admin_content(1);
休憩

ケース「基本設定」:
$("#main #mainData").load('admin_config.html?r='+Math.random());
休憩

デフォルト:
休憩
}


});


$("#main #mainData").load('admin_config.html?r='+Math.random());

//$("#start").click();

});


/**
*メッセージ管理
*/

listData=null;

関数 admin_content(ページ) {

 $.ajax({
  url: 'http://localhost/l/admin.php?m=admin&a=content&page=' + page + '&rand=' + Math.random(),
  type: 'get',
  dataType: 'json',
  data: {},
  complete: function(xhr, textStatus) {
   //called when complete
  },
  success: function(json, textStatus, xhr) {
   if (json['state'] == 'ok') {
    var page_start = json['start'];//分页开始
    var page_end = json['end'];//分页结束
    var page_page = json['page'];//分页当前页面
        listData = json['data'];//分页数据

    table_html='';
    table_html+='批量删除';
/**    
* 生成 表格内容
*/    
    table_html+= '

';
    for (i = 0; i < listData.length; i++) {
     var trClass = (i % 2 == 0) ? 'class="info"' : '';

     //var tr_html = '

';
     tr_html = '';
     tr_html+='';
     //删除

     tr_html+='

';
     tr_html+='';
     tr_html+='';

     table_html += tr_html;
    }
    table_html += '

操作用户名留言内容发表时间
删除' + listData[i].userName + '
' + listData[i].content + '
' + getLocalTime(listData[i].time) + '
'+listData[i].id+' ' + listData[i].userName + '
' + listData[i].content + '
' + getLocalTime(listData[i].time) + '
';

/**
*生成分页
*/
    var page_html = '

';


    var mainData = $("#main #mainData");
    mainData.html(table_html);
    mainData.append(page_html);

admin_content_page(page_page,page_end); //挂接分页点击イベント
    click_tr();//挂接行点击イベント;
   }

//alert(json.data);
  }、
  エラー: function(xhr, textStatus, errorThrown) {
   //エラーが発生したときに呼び出されます
  }
 });
}

/**
* オンフックページングイベント
* パラメータ page_page 現在のページ
* パラメータ page_end ページ数
*/
function admin_content_page(page_page,page_end) {
 $("#mainPage a").click(function() {
  var charStr = $(this).text();
  var num = charStr;
  if (charStr == "»") {
   num = parseInt(page_page) + 1;
   if (page_end     戻ります;
   }

} else if (charStr == "«") {
   num = parseInt(page_page) - 1;
   if (数値     戻ります;
   }
  }

admin_content(番号);

});
}

関数 getLocalTime(nS) {
 return new Date(parseInt(nS) * 1000).toLocaleString().replace(/:d{1,2}$/, ' ');
}

関数 admin_content_del (id) {
 var data=listData[id];
 show_Msg('确认删除',data.content,'确认删除',function(delId){
  $.ajax({
    URL: 'http://localhost/l/index.php',
    タイプ: 'get'、
    データ型: 'json',
    データ: {
     m: 「管理者」、
     a: 'デルコンテンツ'、
     id:delId
    }、
    完了: function(xhr, textStatus) {
      //完了時に呼び出されます
    }、
    成功: function(data, textStatus, xhr) {
     if(data.state='ok'){
      admin_content(1);
      show_Msg_success('删除成功');
      
     }その他{
      show_Msg_success('删除失败');
     }
    }、
    エラー: function(xhr, textStatus, errorThrown) {
      //エラーが発生したときに呼び出されます
    }
  });
  
 },data.id);
}

関数 admin_content_del_pl() {

var checkbox = $("#mainData :checked");

var listId = Array();

checkbox.each(function() {
  //alert($(this).get()[0].name);
  if ($(this).get()[0].name == 'delcontent[]') {
   listId.unshift($(this).val());
  }
 });

$.ajax({
   URL: 'http://localhost/l/admin.php?m=admin&a=batchDelContent',
   タイプ: 'POST'、
   データ型: 'json',
   データ: {delcontent: listId
   }、
   完了: function(xhr, textStatus) {
     //完了時に呼び出されます
   }、
   成功: function(json, textStatus, xhr) {
     if(json.state=='ok'){
      var data = json.data;
      for (var i = 0; i        if(data[i]['state']=='ok'){
        show_Msg_success(data[i].id + '删除成功');
       }その他{
     show_Msg_success(data[i].id + '删除失败',false);
       }
      };

}その他{

}
     admin_content(1);
   }、
   エラー: function(xhr, textStatus, errorThrown) {
     //エラーが発生したときに呼び出されます
   }
 });
 
// alert(listId);
}


/**
* 用于显示对话框消息框
* 参数 title 消息标题
* 参数 content 消息内容
* 参数 buttomTitle 处理消息的按钮自定义的,比如确认删除
* 参数 fun 自定义按钮click事件
* 参数 passOnData 传递到自定义fun里的参数
*/
function show_Msg (title,content,buttomTitle,fun,passOnData) {
 $("#msg #myModalLabel").html(title);
 $("#msg .modal-body").html(content);
 $('#msg #msg_c').html(buttomTitle).click(function(){
  fun(passOnData);//调用自定义的函数,以及传递自定义的数据
  $('#msg').modal('hide');//点击完就把窗口隐藏了
  $(this).unbind('click');//如果不取消事件,那么将重复调用。。
 });;
 $('#msg').modal('show');
}
/**
* 用于显示顶部消息。显示的消息3秒后自动销毁。
* 参数 content 消息内容
* 参数 face 消息的样式,真,为成功绿色的;假,为错误红色的
*/
function show_Msg_success(content,face){
 if (face==null) {
  face=true;
 }

 face = face?'success':'error';
 
    strTag='

'+content+'
';

 $(strTag).prependTo('#main');

 setTimeout(function(){
  $(".alert").alert('close');
 },3000);
}

//show_Msg_content('啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊所得税')
/*
show_Msg('标题要长长长长的','这里可以写html比如加粗的的字体噢','删除',function(e){
 alert(e);
},'这里是点击删除后我传递过去的数据');
*/

function click_tr() {
 var checkbox = $("#mainData tr input");

 checkbox.eq(0).click(function() {
  //checkbox.attr('checked',$(this).get()[0].checked);

  bool = $(this).get()[0].checked;

  for (var i = 1; i < checkbox.length; i++) {
checkbox[i].checked = bool;
};

});

$("#mainData tr").each(function(index) {
$(this).click(function() {

if (index == 0) {

} else {
var val = checkbox.eq(index);
val = val.get()[0];
var bool = val.checked;

//alert(index);
if (bool) {
val.checked = false;
} else {
val.checked = true;
}
}

});

});
}index.html代码
[html]  
 
 
   
  无标题文档 
   
 
 
 
 

 
   
 
     
 
       

瀑布流留言板管理系统

 
     
 
   
 
 
   
 
     
 
       
     
               
             
  •  
                すべての留言 
             
  •  
               
             
  •  
                基本設置 
             
  •