發表文章

目前顯示的是 2017的文章

PHP获取本周第一天和最后一天

$date=new DateTime(); //带要算的日期 $date->modify('this week'); $first_day_of_week=$date->format('Y-m-d'); $date->modify('this week +6 days'); $end_day_of_week=$date->format('Y-m-d');

Vue.js v-for裡面再包一個v-for

html的部分 < div class = "list-block" id = "official_choise" > < div class = "content-block-title" > 官方分类 </ div > <!-- <ul> <li> <div class="dom-C empty_content">已无官方分类可供选择</div> </li> </ul> --> < ul > < li class = "accordion-item" v-for="todo in mydata" > < a href = "#" class = "item-content item-link" > < div class = "item-inner" > < div class = "item-title" > {{ todo.sort_name }} </ div > </ div > </ a > < div class = "accordion-item-content" > < div class = "con

js 跨網域使用api 解決方法

===========這個是js的部分=========== $.ajax({             url: "http://123456.com/"  //api網址             dataType:"jsonp",             jsonpCallback: " OnceTemple ", //這個值要跟api那邊連動的,這個要改的話要連api一起改         }).done(function(temple){             //取到資料之後要處理的事情         }); ===========api傳回來的資料============ echo " OnceTemple (".json_encode($once).");"; 就是你的資料要用一個字串和括號包起來再傳回來 如果不用個的話瀏覽器會報錯

formData ajax送資料

前陣子因為有個需求 送出表單的時候不想要畫面重刷,資料及時回填到頁面來。 這樣的話就是要用到ajax的技術, 單純的文字資料沒什麼問題, 但是如果要用圖片或影片的話,就必須麻煩一些了。 資料找了好久找到了一篇使用formData 和 XMLHTTPRequest 資料來源 : https://gist.github.com/ebidel/2410898 這個網站裡面有兩段code handle_file_upload.php <?php $fileName = $_FILES['afile']['name']; $fileType = $_FILES['afile']['type']; $fileContent = file_get_contents($_FILES['afile']['tmp_name']); $dataUrl = 'data:' . $fileType . ';base64,' . base64_encode($fileContent); $json = json_encode(array( 'name' => $fileName, 'type' => $fileType, 'dataUrl' => $dataUrl, 'username' => $_REQUEST['username'], 'accountnum' => $_REQUEST['accountnum'] )); echo $json; ?> 第一行第二行都是在宣告一個變數來接post過來的資料 第三行是把圖片做成實體檔案到指定路徑 第四行是把圖片轉成base64 第五行開始到倒數第二行都是在建立一個json陣列的資料 最後一行是把json的資料show出來 <!DOCTYPE html> <!-- Copyright 2012 Google Inc. Licensed under the Apac

CI 使用ckeditor,ckfinder的替代品

圖片
ckeditor 免費使用的沒錯 但是如果要上傳圖片的話就需要另外掛載ckfinder來使用 然而ckfinder需要付費才能使用全部的功能 例如把上傳的圖片刪除就需要付費才有辦法使用 而且要根據使用者來自定義資料夾的話ckfinder實現起來頗複雜(在網路上找了很久都看不懂) 後來找到了這一款 "Filemanager" https://github.com/simogeo/Filemanager 這一款不輸ckfinder,重點是免費使用 把這兩個ckeditor 和 Filemanager 下載下來後放到想放的assets裡 再來就參考這一篇 https://github.com/moemoe89/codeigniter-ckeditor-filemanager STEP1 去找 CI的 index.php 檔案 把 $application_folder = 'application'; 改成 $application_folder = dirname(__FILE__) . DIRECTORY_SEPARATOR . 'application'; 把 $system_path = 'system'; 改成 $system_path = dirname(__FILE__) . DIRECTORY_SEPARATOR . 'system'; STEP2 找到filemanager資料夾裡面的scripts裡的  filemanager.config.js.default  這個檔案 複製一份把檔名的.default去掉 STEP3 再來到filemanager -> connnectors -> php 找到這個檔案   default.config.php 在裡面任意處加上 ob_start(); include('../../../../index.php'); ob_end_clean(); $CI =& get_instance(); $CI->load->driver('session');

把base64l讓PHP存成實體檔案

$data = 'data:image/png;base64,AAAFBfj42Pj4' ; list ( $type , $data ) = explode ( ';' , $data ); list (, $data ) = explode ( ',' , $data ); $data = base64_decode ( $data ); file_put_contents ( '/tmp/image.png' , $data ); 資料來源 http://stackoverflow.com/questions/18230573/dataurl-to-image-for-download-in-php

Codeigniter Pagination 分頁實作

CI官方說明 :https://codeigniter.org.tw/userguide3/libraries/pagination.html?highlight=page#id5 $this->load->library('pagination'); $config['base_url'] = 'http://example.com/index.php/test/ page /'; //要產生頁籤的網址 $config['total_rows'] = 200; //資料總共幾筆 $config['per_page'] = 20; //一次想要顯示幾筆 $this->pagination->initialize($config); echo $this->pagination->create_links(); //這一行就是分頁的html 分頁bar這樣就有了 但是還要跟資料連動 因此我會加一這一行 $config['page_query_string'] = TRUE; 加了這行後你可以在觀察網址上會多出per_page參數 這個參數的意思就是你的資料是從第幾筆開始的 所以你只要把這個參數和一次要幾筆的參數給你取資料的function就可以跟分頁頁籤有連動了 --------------------------------------------------------- ex: $this->load->library('pagination'); // 載入 //從第幾筆開始 $per_page = $this->input->get_post('per_page'); //一頁幾筆 $qty = 2; if ($per_page == "") { //因為第一頁沒有這個參數,所以要自己補上 $per_page = 0; } // from men

Vue.js 基礎用法

要使用Vue.js定義的參數時用{{}}把參數包在裡面就可以跟著Vue.js裡面設定的參數連動 <p id=" test ">{{msg}}</p> <script> var test = new Vue{       el:"# tset ",     // 這裡就跟選擇器寫法一樣,#代表選擇ID .代表選擇class       data:{                 msg:"測試文字",     //這裡就是用兩個大括號包起來的參數       } } </script> Vue.js文件裡面提到的瀏覽器控制台就是開發人員模式(ctrl+shift+i)的console頁籤 v-bind 用: 替代 example v-bind:title="asd" => :title="asd" v-if v-show 裡面的變數值要true 或 false 效果是true的時候會顯示在畫面上,反之則看不見。 if和show差別在於,當判斷為false的時候,綁定if的tag會完全消失,show只是隱藏起來而已 v-for <div id="test">   <table>     <tr v-for=" AAA in BBB ">   //BBB為Vue的data裏面的變數,AAA類似each的k       <td>{{ AAA  . a }}</td>       <td>{{ AAA  . b }}</td>      </tr>   </table> </div> <script>           var test = new Vue({                el:"#test",                data:{                        BBB :[                  

javascript 製作複製按鈕

< p > 点击复制后在右边textarea CTRL+V看一下 </ p > < input type = " text " id = " inputText " value = " 测试文本 " /> < input type = " button " id = " btn " value = " 复制 " /> < textarea rows = " 4 " > </ textarea > < script type = " text/javascript " > var btn = document . getElementById ( 'btn' ) ; btn . addEventListener ( 'click' , function ( ) { var inputText = document . getElementById ( 'inputText' ) ; var currentFocus = document . activeElement ; inputText . focus ( ) ; inputText . setSelectionRange ( 0 , inputText . value . length ) ; document . execCommand ( 'copy' , true ) ; currentFocus . focus ( ) ; } ) ; </ script >

javascript 移動到指定位置

$(' #按鈕名稱 ').click(function(){ $('html,body').animate({scrollTop:$(' #指定區塊塊名稱 ').offset().top},  速度 ); }); //代表一個完整的執行區塊