新鳥初入PHP行業6個月總結心得

1.$_SERVER['HTTP_HOST']返回phpsdudy中設置的服務器地址:127.0.0.1  hml.367edu.cnjavascript

若是沒有使用代理服務器,php

  REMOTE_ADDR = 客戶端IP    HTTP_X_FORWARDED_FOR = 沒數值或不顯示css

  $ip = $_SERVER['REMOTE_ADDR'];html

 

2.file_get_contents(test.txt)讀取的結果是一個字符串;java

file(test.txt)讀取的結果是一個數組;node

 

3.print_r($arr,true)返回一個包含完整數組內容的字符串.mysql

 

4.file_put_contents(‘’test.txt’’,$arr)能夠將數據庫的數據寫入一個文件中,能夠只訪問一次數據庫,減小數據庫壓力.ios

 

5.經過對比,lock in share mode適用於兩張表存在業務關係時的一致性要求,for update適用於操做同一張表時的一致性要求。web

共享鎖(S):SELECT * FROM table_name WHERE ... LOCK IN SHARE MODEajax

排他鎖(X)SELECT * FROM table_name WHERE ... FOR UPDATE

 

6.include dirname(__FILE__).'/../hello.php';

dirnamedirname(__FILE__)./hello.php'; 相同。

 

7.導出數據庫全部表:選中數據庫psd1710,右鍵選擇轉儲SQL文件,選擇結構和數據(保留字段fields).

導入數據庫全部表:新建一個本地數據庫psd1709,右鍵選擇運行SQL文件.

 

8.音頻:audio  

<audio controls>

  <source src="horse.ogg" type="audio/ogg">

  <source src="horse.mp3" type="audio/mpeg">

  您的瀏覽器不支持 audio 元素。

</audio>

 

 

 

 

 

 

9.find() 方法返回被選元素的後代元素。如:$("ul").find("span").css({"color":"red","border":"2px solid red"}); html部分:

<ul>ul (直接父節點)  

<li>li (子節點)

<span>span (孫節點)</span>

</li>

</ul>   

 

 

10.readonly:html只讀,輸入框沒法更改

<input type="text" name="country" value="Norway" readonly>

 

 

11.鏈接數據庫:

@1.mysqli方式

define('DB_HOST', "192.168.0.20");
define('DB_PORT', "3306");
define('DB_USER', "367edu");
define('DB_PASS', "123456");
define('DB_NAME', "367edu");

 

$link = mysqli_connect(DB_HOST, DB_USER, DB_PASS, DB_NAME, DB_PORT);

$sql = "select * from sc_student_query_category";

$result = mysqli_query($link, $sql);

$queryCategory = mysqli_fetch_all($result,MYSQLI_ASSOC);

 

 

  1. 數據庫數據格式主要有幾種:數字(int)(tinyint(decimal【適合於金額如decimal(10,2)】)  字符串(varchar(char)(text)(LONGTEXT)等    時間(TIMESTAMP通常使用int

 

  1. $(.class).attr(屬性,值)能夠動態改變元素的屬性的值,以下:

$(".shang_payimg img").attr("src","https://static.runoob.com/images/dashang/"+dataid+"img.png");

 

1四、$(#id).text(值)能夠動態改變元素內的值,以下:$("#shang_pay_txt").text(dataid=="alipay"?"支付寶":"微信");

 

15.跳轉到頂部或者尾部:<

a href="#pos" style="color: red;font-size: 50px;

position: relative; left: 600px;">↓↓↓↓跳到底部↓↓↓↓</a>

<div style="height: 8000px;"></div>

<p id="pos"></p>

 

  1. HTTP狀態碼:

1xx:信息類

2xx:成功類

3xx:重定向類

4xx:客戶端錯誤類

5xx:服務端錯誤類

 

 

  1. URL地址去找控制器,先找到後臺,而後在去找前臺頁面.  :

http://9469.367edu.com/?a=wap.article&uid=9469&id=179575先找後臺,再去找前臺. 沒有前臺則不會顯示任何東西.

 

18.按照條件遍歷整個表:

//主頁視頻加載
require_once $_SITE_PATH_."m/m_lib_users_media.php";
$m_lib_users_media = new m_lib_users_media();
$media = $m_lib_users_media->getArray($m_lib_users_media->startGet()->getByusers_id($__users_id__)->getByis_del(0)->setOrder('id desc')->limit(1)->query());

 

importDbModel("sc_wx_rule_app_users");
$m_sc_wx_rule_app_users = new m_sc_wx_rule_app_users($__users_id__);
$app_list = $m_sc_wx_rule_app_users->getPcAppList();

 

18.01增長數據

require_once  str_replace('ucenter','default',$_SITE_PATH_)."m/m_oa_notice_record.php";
$m_oa_notice_record =new m_oa_notice_record();

 

$_data = array(
    'users_id' => $__users_id__,
    'notice_id' => $vals_id,
    'teacher_id' => $tea_id,
    'create_date' => time()
);

$result_row = $m_oa_notice_record->save($_data)->query();

 

 

模型中操做數據庫

public function getResourceListzl(){

$this->_ssql = "select r.id,r.mycolor,st.id as teacher_id, r.title, r.status, r.category_id, r.reback_content, r.publish, r.create_date, st.name as teacher_name, ss.title as subject_title, category.title as category_title from $this->source r left join sc_teacher st on st.id=r.teacher_id left join sc_subject ss on ss.id=r.subject_id left join resource_category category on category.id=r.category_id where $where  order by create_date desc LIMIT $offset, $obj->size";
$list = $this->getArray($this->query());

}

或者

$apply_list = $this->model->table("ls_property_apply", "apply")
   ->join("ls_property", "prop", "inner")->on("apply.prop_id=prop.id AND prop.is_del=0")
   ->join("ls_property_category", "cate", "inner")->on("prop.cate_id=cate.id AND cate.is_del=0")
   ->join("sc_teacher", "st", "inner")->on("apply.apply_teacher_id=st.id AND st.is_del=0")
   ->join("sc_teacher", "sst", "left")->on("apply.mg_teacher_id=sst.id AND sst.is_del=0")
   ->where($where_str, $parameter)
   ->order("apply.apply_time desc, apply.id desc")
   ->limit($offset, $size)
   ->findAll("apply.*, cate.title AS cate_title, prop.pnumber, prop.title AS prop_title, prop.company, prop.speci, st.name AS apply_teacher_name, sst.name AS mg_teacher_name");

 

 

 

 

 

 

$supplement_list = $this->model->table('oa_supplement_attend','attend')
            ->join("sc_teacher", "st", "left")->on('attend.teacher_id=st.id')
            ->where("attend.users_id = $__users_id__ and attend.is_del=0")
            ->order(' (case when attend.status=0 then 1 when attend.status=1 then 2 else 3 end),attend.create_date desc')
            ->findAll('st.name,attend.*');
return $supplement_list;

 

 

 

 


   增長數據庫記錄

$descriptionObj = new stdClass();
$descriptionObj->articles_id = $articlesInfo->id;
$descriptionObj->content = trim($articleContent);
$descriptionInfo = $m_articles_description->saveExpend($descriptionObj);

 

 

  1. 輪播圖不起做用的時候是由於jQuery 加載了兩次,並且jQuery 只能加載於全部JS以前.

 

19.微網導航小圖標加載帶的CSS是:

<link rel="stylesheet" type="text/css" href="/sites/default/static/wap/css/font-awesome.css" media="all" />  web_3g_menu{數據庫}若是該線上數據庫中沒有小圖標字段,則不會顯示.

 

 

  1. 帳號:

東江廣雅學校:ID9479 帳號:djgyxx 密碼:djgyxx163

綿陽東辰教育集團有限公司:ID9470 帳號:mydcjyjt 密碼:mydcjyjt163

 

 

 

 

 

 

 

 

 

 

  1. 數據採集若是走到了沒有文章列表,確定是本分類下文字列表頭尾的標籤沒有寫對.

//獲取當前頁面分類下的全部文章地址

$set_article_url_start = '<script language="javascript" src=';
$set_article_url_end   = '<div align="center">';
$article_url = $Reptile->stringIntercept($typeweb,$set_article_url_start,$set_article_url_end);

 

 

  1. 數據採集若是沒有頁碼,那麼寫成:

for($i=1; $i<=$value['web_page_number']; $i++){   //1
     $typeurl = $config['typeurl'].$value['webId'].'.htm';
//             var_dump($typeurl);exit;

 

若是網址上有頁碼則寫成:

for($i=1; $i<=$value['web_page_number']; $i++){   //1
     $typeurl = $config['typeurl'].$value['webId'].$i.'.htm';
//             var_dump($typeurl);exit;

 

 

  1. FTP傳東西時,必須兩個都傳,不然出現部分電腦網站樣式顯示不全.

 

 

23.若是沒有列表數聽說明:a標籤的href屬性有多是單引號。

preg_match_all('/<a(.*?)href=\'(.*?)\'(.*?)>(.*?)<\/a>/i', $article_url,$article_url_arr);

 

24.下拉選框提交的值是value的值,1或者2,不是顯示的值class.:

<select name="hml">

<option value="1">class</option>

<option value="2">555</option>

</select>

 

  1. PHP防止中文亂碼:

header("Content-type: text/html; charset=utf-8");

 

 

26,獲取當前網址,後面的參數能夠手動添加:

$_SERVER['SERVER_NAME'].$_SERVER["REQUEST_URI"]

 

 

27.一個頁面跳轉到另外一個頁面的tab切換上時,按以下方法加:

  1. html
    <a href="B.html#skip">
    B.html
    <div id="skip">B</div>id應該加在tab,而不是跳轉的內容上

 

28.視頻在iframe中播放http://www.javashuo.com/article/p-tmlwtrql-ng.html

優酷視頻(只能全屏播放):
視頻地址:http://v.youku.com/v_show/id_XNzExOTkwMjA0.html
視頻IDXNzExOTkwMjA0
嵌入地址:http://player.youku.com/embed/XODY3NDMzNjY4
 複製通用代碼

<iframe width="100%%" height="100%" frameborder="0" src="http://player.youku.com/embed/XODY3NDMzNjY4" allowfullscreen=""></iframe>

 

騰訊視頻(微信裏能夠頁面播放但不能全屏):
視頻地址:http://v.qq.com/cover/k/khyb6moudi5fha4.html?vid=d0015bg8v6k
 視頻IDd0015bg8v6k
嵌入地址:http://v.qq.com/iframe/player.html?vid=d0015bg8v6k&tiny=0&auto=0
其它參數:auto=0 不自動播放,去掉 auto=0則會自動放
複製通用代碼
 

<iframe width="100%" height="100%" frameborder=0 src="http://v.qq.com/iframe/player.html?vid=d0015bg8v6k&tiny=0&auto=0" allowfullscreen=""></iframe>

29.小圖標若是失去圖標,可使用代替的就代替,小圖標一概使用的是css控制.:<link rel="stylesheet" type="text/css" href="/sites/default/web/tpl/9470/css/zui.lite.css">

 

  1. ping +網址 找到服務器地址

31.http://119.29.37.67/?a=web.articles&uid=9327&id=13209佛山南海技師百度商橋代碼:<

script>

var _hmt = _hmt || [];

(function() {

  var hm = document.createElement("script");

  hm.src = "https://hm.baidu.com/hm.js?d377926fdd203cffe45d46627493914e";

  var s = document.getElementsByTagName("script")[0];

  s.parentNode.insertBefore(hm, s);

})();

//統計代碼

$(function(){

$("[name='search']").click(function(){

var keywords = $("[name=keyword]").val();

if(keywords == ''){

alert('搜索內容不能爲空!');

return false;

}

window.location.href = '/?a=web.search&uid=9327&keywords='+keywords;

});

$('input[name="keyword"]').keyup(function(evt){

if (evt.keyCode == 13) {

var keywords = $('input[name=keyword]').val();

window.location.href = '/?a=web.search&uid=9327&keywords='+keywords;

}

});

});

</script>

 

32.動態加載左邊欄js: 

(function(){
        var url = self.location.href;
/*        var n = url.split("=").pop();
        console.log(n);
        if( !n ){ n=0 };*/
        try {
            $('#cont-ifr').attr('src', arr[0].list[0].src);
            var str = '<h4><i class="+ arr[0].icon +"></i>'+ arr[0].title +'</h4>'+
                '<ul class="p-list">';
            for(var i=0;i<arr[0].list.length;i++){
                var active = i==0?'class="active"':'';
                str += '<li><a href="'+ arr[0].list[i].src +'" target="ifr" '+active+ '>'+ arr[0].list[i].name +'</a></li>'
            }
            str += '</ul>';
            $(".cont-left").html(str);
            console.log(str);
        } catch (e) {
            return false;
        }
    })();

33. html是替換,而append是追加
例如 <div id="div1">內容</div>
$(#div1").html("<div>這是內容</div>");
這樣的最終結果就是 <div>這是內容</div> //也就是把原來的內容替換了
$(#div1").append("<div>這是內容</div>");
這樣的最終結果就是 <div id="div1">內容</div><div>這是內容</div>

34.申明一個二維的空數組:

$in = array('roomid'=>array(''));

 

  1. 調試接口裏面的數據是在network裏面查看XHR裏面

 

  1. attr("width","500");
  2. css({"background-color":"yellow","font-size":"200%"})
  3. <td><input type="checkbox" value="<?php echo $node->id;?>"></td>
  4. 選中全部多選框:
  5. $(":checkbox[name='ids']"),選中全部多選框$(":checkbox[name='ids']").prop("checked", this.checked); // this指代的你當前選擇的這個元素的JS對象

 

 

39.選中全部ul下的li下的a標籤:$('.cont-left .p-list').find("a")

 

40,騰訊雲圖片上傳:

importClass('tencent_image');
$tencentImageClass = new tencentImage();   //雲圖上傳
$yun_url = $tencentImageClass->upload($savePath, $__users_id__);

 

41.接口的正確寫法:

$uploadPath =  $_ROOT_PATH_."/cache/img/".$__users_id__.'/oa/';
$fname = basename($_FILES['file']['name']);
$f = explode(".", $fname);
$extname = strtolower($f[count($f)-1]);
$rand = rand(1000, 9999);
$fileName = substr(time(),5).$rand.".$extname";
$folder = date("Y-m-d");
$src = $folder."/$fileName";
$savePath = $uploadPath.$src;
importClass('tencent_image');
$tencent_image = new tencentImage();
$result = $tencent_image->upload($savePath,$__users_id__);//上傳到騰訊雲的圖片
$obj = new stdClass();
if($result){
    $obj->type = "success";
    $obj->msg = "上傳成功到雲中";
    $obj->url = $result;
}else{
    $obj->type = "fail";
    $obj->msg = "上傳失敗";
}
echo json_encode($obj);
exit;

 

 

父類中尋找後代元素:

42.$("#usersInfoForm").find("button[type='submit']").bind('click', function(){code...}

 

  1. 排除干擾CSS, 應該註釋一些css,找到精確文件

44.unlink($savePath); //刪除圖片
rmdir($oldSavePath); //刪除前一天的目錄

45. shell上的定時任務,每分鐘執行一次下面的PHP文件, 分時日月周

*/1 * * * * php /wwwroot/367edu.com/services/view_task.php

 

46.$.post('/ucenter.php?a=common.issentImg',{imgUrl:img}, function(data){
    var rs = jQuery.parseJSON(data);
    if(rs.type=='error'){
        bootbox.alert(rs.msg);
    }else{
        $("#block").show();
    }
});

 

  1. 根據某個分組的和的大小排序:   order by field(sgi.teacher_id,16696,17181,15429,17202)

select sgi.rtime,sgi.integral,sgi.content,st.name,stg.title from sc_teacher_growing_record sgi join sc_teacher_growing_type stg on sgi.type_id=stg.id  join sc_teacher st on st.id=sgi.teacher_id where sgi.users_id=9126 and sgi.is_del=0 and sgi.status=1 and sgi.teacher_id in (16696,17181,15429,17202)  order by field(sgi.teacher_id,16696,17181,15429,17202), st.name asc,sgi.status asc,sgi.create_date desc;

 

48.trigger("click")自動執行一次點擊事件

$("#QR_code").on("click",function () {
    document.getElementById('vcode').src = '/?a=code&t='+Math.random();
})
$("#QR_code").trigger("click");//自動執行一次點擊事件,即刷新該驗證碼

 

 

49

若是$_POST沒有打印出值,確定是名字相同形成的.微工具中的表單項不能使用重名的text.

50.新建文件夾,點擊右鍵SVN導出.填地址和帳號.

51. 給下拉選框設定高度的方法:

<select  onmousedown="if(this.options.length>3){this.size=4}" onblur="this.size=0" onchange="this.size=0" >

 

52

css的下拉選框中的內容顯示不全時,應該找style="overflow:hidden/auto",當前級找不到時,找父元素,一直找到爲止.萬豐項目

 

53,定時任務發送 的消息存在sc_wxsms_quene   sc_wxsms

,或從這裏拿消息.

 

54.萬豐小學移動端制度審覈->ajax:

$(document).on("click",'.heBtn1',function () {

    var data_id = $(".h_id").attr('data-id');

    $.ajax({
        type: 'post',
        url: globals.ajax_save_detail,
        data: {data_id : data_id},
        dataType: 'html',
        success: function(data){
            // callback(null,data);
            // $.hideLoading();
        },
        error: function(xhr, type){
            $.alert('請求失敗!')
        }
    });
})

55.刷新當前頁面:location.reload();

  1. 使用strpos,兩個參數都必須是字符串,不然函數將不運行.
  2. 按回車刷新當前頁面函數:

$(document).on("keydown",function(e){
     if(e.keyCode == 13){
           window.location.reload();
     }
})

  1. ajax常規寫法:

$.ajax({
    type: 'POST',
    url: '/ucenter.php?a=systemSettings.ajax_changeFunction',
    data: {module_ids:ids,teacher_id:<?php echo  $__teacher_id__;?>,action:'add'},
    success:function (result) {
        var rs = jQuery.parseJSON(result);
        bootbox.alert(rs.msg,function () {
            window.location.reload();
        });
        // enter鍵時也刷新頁面
        $(document).on("keydown",function(e){
             if(e.keyCode == 13){
                   window.location.reload();
             }
        })
    }
});

  1. 更改數組中的某個值,而且以某個值排序:

function a($value){
    if(is_string($value['create_date'])){
        $value['create_date'] = strtotime($value['create_date']);
    }
    return $value;
}
$h_oa_inform = array_map('a',$h_oa_inform);
array_multisort(array_column($h_oa_inform,'create_date'),SORT_DESC,$h_oa_inform);

  1. 使用group_concat()group by顯示相同名字的人的id號:

 

  1. 採集文章開頭標籤必定要嚴格去寫,尾部能夠隨便寫:錯誤示例以下:

$categoryStart = '<div id="vsb_content';

形成文章內容在開頭位置都帶上了>

  1. 若是一個變量爲空,則有如下幾種可能,空字符串,空數組,空對象,null,false,0以及」0」等.

$a = 0;
$b = '';
$c = array();
$d = null;
$e =FALSE;
$f = (object)null;所有返回空

  1. 直接給出(得到)一個遮罩層:

<style type="text/css">
    #loading {
        position: fixed;
        top: 0;
        left: 0;
        width: 100%;
        height: 100%;
        background: rgba(0, 0, 0, 0.5);
        z-index: 15000;
    }

    #loading div {
        position: absolute;
        top: 35%;
        left: 45%;
        width: 80px;
        height: 80px;
        margin-top: -15px;
        margin-left: -15px;
    }
</style>
<div id="loading">
    <div style="width: 206px;height: 125px;border-radius: 6px;">
        <div>設置成功!</div>
        <div style="margin-top: 25px;margin-left: -83px;"><button style="width: 185px;color: white;" onclick="window.history.back(-1)" >返回</button></div>
    </div>

</div>

  1. strtotime能夠將中文日期如:2018-9-20轉化爲時間戳,還能夠將英文日期字符轉化爲時間戳如:strtotime("-6 day")
  2. 按中文名字進行排序:ORDER BY CONVERT (NAME USING gbk) ASC
  3. 在本頁面的現有表內進行搜索:(萬豐小學通信錄移動端)

$('#search_user').submit(function() {
   var keywords = $('#search_input').val();//搜索框的值
   $(".con-l").find("li").hide();//隱藏全部列表
   $(".con-l").find("li").each(function(i,th) {
      var un = $(th).find("b").text();//單個li的值
      if( un.toString().indexOf(keywords) >= 0 ) { //搜索的值第一次出如今

li中的位置若是大於0,說明搜出來了
         $(th).show();//搜出來的列表展現出來
      }
   });
   return false;
});

  1. a標籤中添加相應屬性能夠在移動端打電話發短信:

<a href="tel:10086">10086</a>     //點擊後直接撥打10086
<a href="sms:10086?body=message_body"> 10086 發短信</a>//點擊後直接給10086發信息,消息內容默認爲message_body   

  1. 點擊a標籤直接下載圖片:(電腦端)

<a href="img/WC.png" download="WC.png">

  1. ios使用以下方法得到NaN,安卓手機則是正常計算,解決方法是換個這個時間的格式 new Date("2017-04-28 23:59:59").getTime()        1 換成以下方式就正常了,就是‘-’換成‘/new Date("2017/04/28 23:59:59").getTime()

增長樹狀組織架構圖:萬豐二期校歷管理->新增活動中.重點是不能在彈出框中再加一個彈出層,要在網頁中彈出一個,只能是彈出一個單層.

<div class="form-group">
    <label class="col-sm-3 control-label" style="float: left; line-height: 40px;"> <b>*</b>查看權限</label>
    <div class="col-sm-8" style="margin-left:10px; padding-left:0; padding-top: 10px;">
        <button class="btn btn-default chooseTeacher" type="button"><span class="fileinput-new">選擇教師</span></button>
        <button class="btn btn-default clearTeacher" type="button"><span class="fileinput-new">重置教師</span></button>
    </div>
    <div class="alert alert-primary with-icon container" style="padding-left: 0">
        <i class="icon-user"></i>
        <div class="content">
            <h4>教師:</h4>
            <hr />
            <ul id="teacherIDS">
                    <?php echo $teacher_str;?>
            </ul>
        </div>
    </div>
    <div class="clear"></div>
</div>

<script>
   $('.chooseTeacher').structureAndPerson({person:'teacher',structure:'group,structure'}).backFunc(function(c, dom){
        console.log(c);
        showName(c);
    });
    //切換清空
    $('.clearTeacher').on('click',function(){
        $("#teacherIDS").find("li").remove();
        $(".container").css("display","none");
    });
    //移除
    $("#teacherIDS").on("click", ".removeItemButton", function(){
        var li_count = $(this).parent().parent().parent().find("li").length;
        if(li_count <= 1) {
            $(this).parents(".container").css("display","none");
        }
        $(this).parent().parent().remove();
    });

    var showName = function(ids){
        var html_str = '';
        $.each(ids, function(i, o){
            if( $("#teacherIDS").find('li[data-id="'+o.teacher_id+'"]').length == 0){
                html_str += '<li style="display: inline;" data-id="'+o.teacher_id+'"><input type="hidden" name="teacher_ids[]" value="'+o.teacher_id+'"/><input type="hidden" name="teacher_names[]" value="'+o.teacher_name+'"/><span class="label label-badge">'+o.teacher_name+' <a href="javascript:void(0);" class="removeItemButton"><img src="/sites/default/static/images/cancel.png" width="26px" alt="取消" /></a></span></li>';
            }
        });
        $("#teacherIDS").parent().parent().css("display","table");
        $("#teacherIDS").append(html_str);

    }
</script>

 

 

 

 

位置跳轉:利用a標籤的跳轉特性<title>位置跳轉</title>
<meta charset="UTF-8">
<div id="top"></div>
<a href="javascript:void(0);">點我沒有反應的!</a>
<a href="#pos" style="color: red;font-size: 50px;position: relative; left: 600px;">↓↓↓↓跳到底部↓↓↓↓</a>

<div style="height: 8000px;"></div>

<p id="pos"></p>
<div><a href="#top" style="color: red;font-size: 50px;position: relative; left: 800px;">↑↑↑跳到頂部↑↑↑</a></div>

 

72.當變量爲如下幾種類型時,返回的就是空;

$a = 0;

$b = '';

$c = array();

$d = null;

$e =FALSE;

 

if (empty($a)) echo '$a 爲空' . "<hr>";

if (empty($b)) echo '$b 爲空' . "<hr>";

if (empty($c)) echo '$c 爲空' . "<hr>";

if (empty($d)) echo '$d 爲空' . "<hr>";

if (empty($e)) echo '$e 爲空' . "<hr>";

 

73.一個神奇的獲取中文字符的英文首字母的方法:(用於手機通信錄排序)

$str = "李剛";

echo  getFirstCharter($str);//輸出L

function getFirstCharter($str){
    if(empty($str)){return '';}
    $fchar=ord($str{0});
    if($fchar>=ord('A')&&$fchar<=ord('z')) return strtoupper($str{0});
    $s1=iconv('UTF-8','gbk',$str);
    $s2=iconv('gbk','UTF-8',$s1);
    $s=$s2==$str?$s1:$str;
    $asc=ord($s{0})*256+ord($s{1})-65536;
    if($asc>=-20319&&$asc<=-20284) return 'A';
    if($asc>=-20283&&$asc<=-19776) return 'B';
    if($asc>=-19775&&$asc<=-19219) return 'C';
    if($asc>=-19218&&$asc<=-18711) return 'D';
    if($asc>=-18710&&$asc<=-18527) return 'E';
    if($asc>=-18526&&$asc<=-18240) return 'F';
    if($asc>=-18239&&$asc<=-17923) return 'G';
    if($asc>=-17922&&$asc<=-17418) return 'H';
    if($asc>=-17417&&$asc<=-16475) return 'J';
    if($asc>=-16474&&$asc<=-16213) return 'K';
    if($asc>=-16212&&$asc<=-15641) return 'L';
    if($asc>=-15640&&$asc<=-15166) return 'M';
    if($asc>=-15165&&$asc<=-14923) return 'N';
    if($asc>=-14922&&$asc<=-14915) return 'O';
    if($asc>=-14914&&$asc<=-14631) return 'P';
    if($asc>=-14630&&$asc<=-14150) return 'Q';
    if($asc>=-14149&&$asc<=-14091) return 'R';
    if($asc>=-14090&&$asc<=-13319) return 'S';
    if($asc>=-13318&&$asc<=-12839) return 'T';
    if($asc>=-12838&&$asc<=-12557) return 'W';
    if($asc>=-12556&&$asc<=-11848) return 'X';
    if($asc>=-11847&&$asc<=-11056) return 'Y';
    if($asc>=-11055&&$asc<=-10247) return 'Z';
    return '#';
}

//$allteacher 爲一個二維數組

foreach($allteacher as $v){
    $firstChar = getFirstCharter($v->name);//獲取中文名字的首字母
    $teacher_list[$firstChar][] = $v;
}
//以鍵值升序
ksort($teacher_list);
if(isset($teacher_list['#'])){
    $jin = $teacher_list['#'];
    unset($teacher_list['#']);
    $teacher_list['#'] = $jin;
}

 

 

 

  1. 設置文字縱向居中的方法:line-height: 30px;vertical-align:middle,top,bottom

選取帶有 type="submit" <input> <button> 元素:

$(":submit")

 

 

  1. 獲取樹形數組:(應用於導航,目錄結構中)

/**
 * 數組轉化爲多級樹形結構
 * @param array $list   須要轉換的數組
 * @param type $pk  主鍵id
 * @param type $pid 父級id
 * @param type $child   父級下子集的數組鍵名
 * @param type $root    根級的pid的值
 * @return type
 */
function list_to_tree($list, $pk = 'id', $pid = 'pid', $child = 'children', $root = 0) {
    // 建立Tree
    $tree = array();
    if (is_array($list)) {
        // 建立基於主鍵的數組引用
        $refer = array();
        foreach ($list as $key => $data) {
            $refer[$data[$pk]] = & $list[$key];
        }
        foreach ($list as $key => $data) {
            // 判斷是否存在parent
            $parentId = $data[$pid];
            if ($root == $parentId) {
                $tree[] = & $list[$key];
            } else {
                if (isset($refer[$parentId])) {
                    $parent = & $refer[$parentId];
                    $parent[$child][] = & $list[$key];
                }
            }
        }
    }
    return $tree;
}

 

77mysqlUNIX_TIMESTAMP能夠將日期轉化成時間戳

:SELECT UNIX_TIMESTAMP("2016-07-11")  結果:-- 1468166400

 

order by UNIX_TIMESTAMP(update_date) desc;

 

78.FROM_UNIXTIME:表示把UNIX_TIMESTAMP還原成標準的時間格式

:SELECT FROM_UNIXTIME(1468166400),FROM_UNIXTIME(1468771199)

結果:2016-07-11 00:00:00 2016-07-17 23:59:59

  1. FIND_IN_SET('35', sorder)對字段sorder進行搜索,前提是sorder字段必須是帶逗號的字符串,其中35在裏面.:WHERE users_id = '9126'  AND FIND_IN_SET('35', sorder)
  2. 按照要求排序,order by field(字段,字符串)
  3. 心知天氣代碼:(網址:https://www.seniverse.com/widget/get)

order by field(字段,1,2,3)會自動按照值1,2,3進行排序,1,2,3能夠是一個字符串

 ORDER BY

field(

sgi.teacher_id,

16696,

17181,

15429,

17202

),

<script>(function(T,h,i,n,k,P,a,g,e){g=function(){P=h.createElement(i);a=h.getElementsByTagName(i)[0];P.src=k;P.charset="utf-8";P.async=1;a.parentNode.insertBefore(P,a)};T["ThinkPageWeatherWidgetObject"]=n;T[n]||(T[n]=function(){(T[n].q=T[n].q||[]).push(arguments)});T[n].l=+new Date();if(T.attachEvent){T.attachEvent("onload",g)}else{T.addEventListener("load",g,false)}}(window,document,"script","tpwidget","//widget.seniverse.com/widget/chameleon.js"))</script>
<script>tpwidget("init", {
        "flavor": "bubble",
        "location": "WS10730EM8EV",
        "geolocation": "disabled",
        "position": "top-left",
        "margin": "100px 100px",
        "language": "zh-chs",
        "unit": "c",
        "theme": "chameleon",
        "uid": "UCB1C36ED3",
        "hash": "e440349d238d707c1d8f58f79ce7a61d"
    });
    tpwidget("show");

</script>

82.

a href="javascript:history.go(-1);" onclick="history.go(-1)"效果相同

 

83.

form表單提交前,驗證表單的輸入項是否正確.能夠在提交按鈕或者form上綁定一個點擊事件:onclick="return check(this.form)"  也能夠綁定一個onsubmit()事件,如在form:onsubmit="return check(this.form)" 請注意必定要帶上return,不然即便驗證失敗也會提交的.

function check(form){
    var startday=$("#gettime").val();
    var endday=$("#getetime").val();
    if(endday<startday){
        alert("結束日期不能小於開始日期");
        return false;
    }
}

  1. 使用strpos時有一個大坑,判斷位置時必須使用!== 或者=== ,不然將會誤判.

$a = 'How are you?';

if (strpos($a, 'are') !== false) {

echo 'true';

} else {

echo 'false';

}

 

  1. 快速排除錯誤的方法是:使用全局搜索某個變量或者文件名,改 一點東西看是否有反應,有的話就定位在這個文件中,不然就返回,嘗試下一個文件繼續排查.

86.如下表示時間的兩種方法是一致的:

date_default_timezone_set('prc');

$a = time()+3600*24*60;//表示兩個月後的時間

echo date('Y-m-d H:i:s',$a);

echo date('Ym-d',strtotime('+60 day'));

  1. parseInt將字符串解析成數字.:parseInt("10")得數字10.
  2. 一個懸而未決的問題:請求ajax404 未找到,說明請求的url是錯誤的 .就是這個URL錯誤因此致使未找到.看一下這裏報的什麼錯.
  3. 迅速定位錯誤:先進行全局搜索,找到這個文件,而後再看其餘文件引用這個文件.在 引用這個文件前截斷它,若是有影響就說明是這個文件形成的.
  4. select選擇器:選中下拉選框中選中的按鈕的值

var  $select_id =  $('.h_select').find("option:selected").val();

var  $select_text =  $('.h_select').find("option:selected").text();

 

  1. 選中多選框checkbox全部被選中的元素:

var $check_length = $('input:checkbox[name="item_id[]"]:checked').length;

$("#editWxMenuForm").find("input[type='submit']").bind('click', function(){...}//選中提交按鈕

 

91.inputchange事件的不一樣之處:oninput 事件在用戶輸入時觸發,它是在元素值發生變化時當即觸發,適合於電腦端使用;change事件在輸入框內容變化的時候不會觸發change,當鼠標在其餘地方點一下才會觸發,適合於微信端使用;

$('.h_select').on('input||change',function(){}

 

  1. htmlspecialchars_decodeHTML實例轉化爲正常的字符.如將"轉成引號」.
  2. Onbind方法的區別:

$(".child").bind("click",function () {//bind只是純粹的綁定

$(".content1").on("click",".child",function () {//on綁定針對有多個相同的兒子,且第二個參數爲兒子的class名或id

 

  1. 點擊增長相同選項時,能夠以下寫:

var trlength = $('#addInputs').find("tr").length;
var checkInputs = true, mess = '';
var inputs_json = '[';
$('#addInputs').find("tr").each(function(i){//獲取tr,循環他,分別獲取td的值
   var input_label = $(this).find('[name=input_label]').val();
   var input_field = $(this).find('[name=input_field]').val();
   var input_type = $(this).find('[name=input_type]').val();
   var input_values = $(this).find('[name=input_values]').val();
   var input_must = $(this).find('[name=input_must]:checked').val()==undefined ? 0 : 1;
   var input_sort = $(this).find('[name=input_sort]').val();
   if( input_label == '' || input_field == '' || input_type == '' || input_sort == '' ) {
      checkInputs = false;
      mess = '請填寫完整的輸入項';
      return false;//若是沒有填入值,截斷它
   }

注意json的格式爲:JSON 數據的書寫格式是:名稱/值對,必須保持都要雙引號.{field:value}
   inputs_json += '{"input_label":"'+input_label+'","input_field":"'+input_field+'","input_type":"'+input_type+'","input_values":"'+input_values+'","input_must":"'+input_must+'","input_sort":"'+input_sort+'"}';
   if( i < trlength-1 ) inputs_json += ',';//i表明的是tr的個數,當其個數小於現有個數時,則串聯他
});
if( !checkInputs ){//若是爲假
   art.dialog.alert(mess);//
   return false;
}
inputs_json += ']';

94. 網頁可能暫時沒法鏈接,或者它已永久性地移動到了新網址de 解決方法:重置本地域名:如將hml.367edu.cn設置爲hml.367edu.com

  1. 雙三元運算符:先運算括號內的,若是沒有括號,則自左到右運算.

isset($_GET['action']) ? in($_GET['action']) : (isset($_GET['ajax_action']) ? in($_GET['ajax_action']) : 'index');

echo $type == 1 ? "" : $type == 2 ? ""  : $type == 3 ? "" : "";//輸出三;

echo $type == 1 ? "" : ($type == 2 ? ""  : ($type == 3 ? "" : ""));//輸出二;

 

 

96.eq()方法遍歷元素,索引從0開始;

$('.h_level i').eq($('.h_level i').length-1).remove()

 

  1. 表單能夠進行計算,可是不能編輯能夠增長這個屬性:

readonly="readonly"

  1. 針對有多個相同的兒子,class名相同的輸入框的驗證:

$("#container").on('input','.the_number',function() {//使用on事件的好處是:on綁定針對有多個相同的兒子,且第二個參數爲兒子的class名或id
    var data = $(this).attr('data');//獲取最大值
    var val = $(this).val();//獲取輸入的值
    if(+val > +data){//使用加號自動轉成整型,防止出錯.
        $(this).val(data);
    }
    if(+val < 0){
        $(this).val(0)
    }

  1. 鍵盤按下同時綁定點擊事件:

$(document).on("keydown",function(e){
             if(e.keyCode == 13 ){
                 $("#formSubmitButton").click();
             }
         });
$("#formSubmitButton").bind('click', function(){code..})

 

  1. 定義一個二維數組:使用方法,

status_arr[+v.status]['name']

 

var status_arr = [
    {
        name:'待審批',
        color:'block'
    },
    {
        name:'審批經過',
        color:'green'
    },
    {
        name:'拒絕審批',
        color:'red'
    }
];

var type = v.type == 1 ? "基礎數據" : "擴展數據";
var dis = (v.status == 1 || v.status == 2) ? "disabled" : "";

 

  1. 微信端搜索功能的實現:ajax加載

$('.html_btn99').click(function(){//點擊搜索按鈕
var obj = {};
obj.html_input98 = $('.html_input98').val();
obj.html_input99 = $('.html_input99').val();//內容
obj.html_select98 = $('.html_select98').val();//數據類型
obj.html_select99 = $('.html_select99').val();//狀態

$.ajax({
type: 'post',
url: '/edu.php?a=teacher.search_info',
data: obj,
success: function (result) {
var suc =jQuery.parseJSON(result);
if(suc.msg != 'success'){
return;
}
var html="";
var page = '';
$.each(suc.data.list,function(k,v) {
var type = v.type == 1 ? "基礎數據" : "擴展數據";
var dis = (v.status == 1 || v.status == 2) ? "disabled" : "";
var status_arr = [
{
name:'待審批',
color:'block'
},
{
name:'審批經過',
color:'green'
},
{
name:'拒絕審批',
color:'red'
}
];
//                        console.log(status_arr);


html +=
'<tr>' +
    '<td>' + v.id + '</td>' +
    '<td class="gName">' + v.name + '</td>' +
    '<td style="width: 830px;">' + v.msg + '</td>' +
    '<td>' + type + '</td>' +
    '<td>'+status_arr[+v.status]['name']+'</td>' +
    '<td>' +
        '<button class="btn approval" ' + dis + ' data-status="1" data-action="/edu.php?a=teacher.save_teacher_update_task&id=' + v.id + '" >' +
        '<i class="icon icon-edit"></i> 批准' +
        '</button>' +
        '<button ' + dis + ' data-status="2" data-action="/edu.php?a=teacher.save_teacher_update_task&id=' + v.id + '" class="btn class-btn refuse_supplement">' +
        '<i class="icon icon-repeat"></i> 拒絕' +
        '</button></td></tr>'
})
page += ' <div class="pager-class">'+
    '<ul class="pager">'+
        suc.page_htmls+
        '</ul>'+
    '</div>';

$("tbody").html(html);
$('.pager-class').html(page);

  1. Ajax select下拉框的請求:

$.ajax({
    type:'post',
    url:'edu.php?a=score.comment.ajax_change_grade',
    data:{h_grade:h_grade},
    success:function (result) {
        var list = jQuery.parseJSON(result);
        $('.h_class').html('<option value="0">請選擇班級</option>');
        for(var i = 0; i < list.data.length; i++){
            $('.h_class').append("<option value='"+list.data[i].class_id+"'>"+list.data[i].title+"</option>");
        }
        return false;
    }
})

 

  1. 在使用form表單的時候,清除actionmethod="post"這兩個屬性可使用ajax來提交表單       <button type="submit" class="btn btn-primary saveInfo">保存</button>必須處在</form>以內

$('.saveInfo').click(function (e) {
    e.preventDefault();//阻止元素髮生默認的行爲。
// var data = new FormData($('.form_')[0]);
    var form = $('.form_').serializeArray();
    $.ajax({
      type:'post',
      url:'oa.php?a=admin.booking.info&action=update_config',
      data:form,
      success:function (result) {....}

})

  1. 文件上傳獲取文件的參數 :

<form id= "uploadForm"  method= "post" enctype ="multipart/form-data">

<input type ="file" name="myfile[]" id="file" multiple="multiple"/>

</form>

 var formData = new FormData($( "#uploadForm" )[0]);

$("#file").change(function(){
    var formData = new FormData($( "#uploadForm" )[0]);

此方法是專用獲取圖片的方法


    console.log(formData);
    $.ajax({
        type:'post',
        url:'/oa.php?a=wap.wfxx_upload_file',
        data:formData,
        contentType: false,    // 注意這裏應設爲false
        processData: false,
        cache: false,
        success:function () {

   
        }

})

 

})

  1. 全部checkboxname屬性都是category[],爲何要這樣設置?這樣設置是由於咱們將全部checkbox複選框做爲一個組,在php服務器端可使用$_POST['category']來獲取全部被選中的複選框的值。

<li><input type ="checkbox" name ="category[]" value ="php">php教程</li>

  <li><input type ="checkbox" name ="category[]"  value ="java">java教程</li>

  <li><input type ="checkbox" name ="category[]" value ="mysql">mysql教程</li>

  <li><input type ="checkbox" name ="category[]" value ="html">html教程</li>

 

  1. 獲取access_token

  經過code獲取access_token(在本身服務器端作)

https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code

$rs_data = http_request_json($url);//curl函數獲取網址裏面的內容,返回json字符串,使用json_decode函數轉換
$rs = json_decode($rs_data);

 

模板消息獲取access_token接口

$url = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid='.$this->appid.'&secret='.$this->appsecret;

 $result = json_decode(file_get_contents($url));

$access_token = $result->access_token;

 

發送模板消息接口

$url = 'https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=' . $Access_token;

return $this->http_request_json($url, $msg);

$msg = '{
             "touser":"' . $openid . '",openid是發送消息的基礎,發送給誰
             "template_id":"'.$userTemplateInfo->wxmsg_id.'",模板id
             "topcolor":"#E02510",頂部顏色
             "url":"' . $url . '",   點擊跳轉地址
             "data":{
                         "first":{
                                 "value":"設備報修",
                                 "color":"#333333"
                         },
                         "keyword1":{
                                 "value":"' . $vals->repair_ren . '",
                                 "color":"#333333"
                         },
                         "keyword2":{
                                 "value":"' . $vals->repair_xq . '",
                                 "color":"#333333"
                         },
                         "keyword3":{
                                 "value":"' . $vals->repair_lx . '",
                                 "color":"#333333"
                         },
                         "keyword4":{
                                 "value":"' . $vals->repair_dz . '",
                                 "color":"#333333"
                         },
                         "keyword5":{
                                 "value":"' .date('Y-m-d H:i',time()) . '",
                                 "color":"#333333"
                         },

                         "remark":{
                                 "value":"點擊查看詳情",
                                 "color":"#333333"
                         }
                 }
}';

 

 

 

這個地址能夠獲取以下信息:{

    "access_token":"ACCESS_TOKEN",  接口調用憑證

    "expires_in":7200, 接口調用憑證超時時間,單位(秒)

    "refresh_token":"REFRESH_TOKEN",用戶刷新access_token

    "openid":"OPENID",  受權用戶惟一標識

    "scope":"SCOPE", 用戶受權的做用域,使用逗號(,)分隔

    "unionid":"o6_bmasdasdsad6_2sgVt7hMZOPfL"只有在用戶將公衆號綁定到微信開放平臺賬號後,纔會出現該字段。

}

 

  1. 聯圖網二維碼接口:<img src="http://qr.liantu.com/api.php?text=x"/>x 必須用UTF8編碼格式,x內容出現 & 符號時,請用 %26 代替,
    換行符使用 %0A.   :x=http://baidu.com


<img src="http://qr.liantu.com/api.php?bg=f3f3f3&fg=ff0000&gc=222222&el=l&w=200&m=10&text=http://baidu.com"/>

 

107.圖片上傳後臺處理程序:

 

<?php
$rs = new stdClass();
//print_r($_FILES);

if(!$_SESSION['jxht'][$__users_id__]['member_id']){
    $rs->type = 'error';
    $rs->msg = "操做錯誤,請從新刷新操做";
    echo json_encode($rs);
    exit;
}


set_time_limit(0);

$fname=basename($_FILES['hml']['name']);
$fsize = $_FILES['hml']['size'];
$f=explode(".",$fname);


if(count($f)<2){
    $rs->type = 'error';
    $rs->msg = "上傳文件格式不正確!";
    echo json_encode($rs);
    exit;
}
$extname= strtolower($f[count($f)-1]);
$ext = array('doc', 'docx', 'wps', 'wpt', 'ppt', 'pptx', 'xls', 'xlsx', 'et', 'ett', 'pdf', 'mp3', 'mp4', 'zip', 'rar', 'jpg', 'gif', 'png', 'jpeg', 'bmp'); // 容許文件
if(!in_array($extname,$ext)){
    $rs->type = 'error';
    $rs->msg = "上傳文件格式不正確!";
    echo json_encode($rs);
    exit;
}
if(in_array($extname,array("tpl","html","js","php","php3"))){
    $rs->type = 'error';
    $rs->msg = "上傳文件格式不正確!";
    echo json_encode($rs);
    exit;
}

$rand = rand(1000, 9999);
$fileName= substr(time(),5).$rand.".$extname";


$uploadPath = $_SITE_PATH_ . "upload/".$__users_id__."/oa/";
if(!is_dir($uploadPath)){
    mkdir($uploadPath, 0777, true);
}

$folder = date("ymd");
if(!file_exists($uploadPath.$folder."/0.hide")){
    mkdir($uploadPath.$folder, 0777, true);
    file_put_contents($uploadPath.$folder."/0.hide", "");
}
$src=$folder."/$fileName";
$savePath=$uploadPath.$src;

$test = $uploadPath.$folder;

if (!move_uploaded_file($_FILES['hml']['tmp_name'], $savePath)) {
    $rs->type = 'error';
    $rs->msg = "文件上傳出現錯誤";
    echo json_encode($rs);
    exit;
}

$data = new stdClass;
$data->download_url = "/sites/oa/upload/".$__users_id__."/oa/".$src;

$rs->type = 'succeed';
$rs->msg = "添加成功";
$rs->data = $data;
echo json_encode($rs);
exit;

107表單的提交獲取值:

<form action="code.php" method="post">

    <input type="text" name="input_name" value=""><br><br>

    <select name="color" id="">

        <option value="0">紅色</option>

        <option value="1">藍色</option>

    </select><br>

    <input type="checkbox" name="vehicle[]" value="bike">bike<br>

    <input type="checkbox" name="vehicle[]" value="car">car <br>

    <input type="radio" name="sex" value="male">Male<br>

    <input type="radio" name="sex" value="female">Female

    <input type="submit" value="提交">

</form>

打印的值:Array

(

    [input_name] =fsdfsdf

    [color] =0

    [vehicle] =Array

        (

            [0] =bike

            [1] =car

        )

 

    [sex] =female

)

相關文章
相關標籤/搜索