flash 轉 html5


目前測試
 1.as2.0, as3.0基本語法(按紐動作都可被正常轉換)
2.限制1MB以下大小才可轉換


目前兩種方法:

1.使用google web線上轉換
developers.google.com/swiffy )


2.下載Adobe 輔助外掛在flash內轉換
(參考以下步驟)



步驟1.至 google develop  ( swiffy download )





步驟2.安裝Adobe Extension Manager CS6













步驟3.開啟flash,在 Commands 下拉選擇 HTML5轉換

php版本正負顏色千分號轉換


php版本正負顏色千分號轉換

在做網頁報表時,常用的格式轉換
此為php版本 , for laravel blade , 需要使用時可以依自己需求再修改

從外部參數傳遞給 $spend , 可接受 %


<style type="text/css">

    .LoseStyle{
 color:#E23636;
    }
</style>


<?php
       
     $spend02 = 0;
       
      if( substr($spend, -1) == "%" )
      (String)$spend02 = explode( substr($spend, -1) ,$spend  )[0];
      else 
      $spend02 = $spend;
        
      if( $spend02 >= 0 )
      {
            if( substr($spend, -1) != "%" )
            echo number_format($spend02,2);
            else 
            echo number_format($spend02,2).substr($spend, -1);
   
      }else{ 
?>
       
 <a class="LoseStyle">
 <?php 
       
      if( substr($spend, -1) != "%" )
      echo number_format($spend02,2);
      else
      echo number_format($spend02,2).substr($spend, -1);
       
 ?></a>
<?php } ?>

js 千分正負號顏色格式轉換


在做網頁報表時,常用的格式轉換


FormatNumber( 欲輸入的金額(可以是%數字) , 至小數點第幾位 , 欲修改之物件內容 , 是否開啟正負顏色);


ex :
FormatNumber( 1277.32 , 2 , BetScoreTag[i] , 1 );  


function FormatNumber(n , m , obj , c ) {
   
     var _tmpNum = n ; 
   
     if( String(n).substr(-1,1) == "%")
     {
         _tmpNum = Number(n.split("%")[0]);
     }
   
     _tmpNum = _tmpNum.toFixed(m);

     _tmpNum += "";
     var arr = _tmpNum.split(".");
  
     var re = /(\d{1,3})(?=(\d{3})+$)/g;
      
     var spend = arr[0].replace(re,"$1,") + (arr.length == 2 ? "."+arr[1] : "");
      
     if( parseFloat(spend) < 0 && c == 1 )
     {
           obj.style.color = "D81A1A";
     }
 
     obj.innerHTML = spend;
     
     if( String(n).substr(-1,1) == "%")
     obj.innerHTML = spend +(String(n).substr(-1,1));

}

jquery 拖曳 div 技術


在製作網站時,因某種需求要在
視窗特定範圍內可以拖曳,在某些範圍內不可













這邊做一個備忘錄



<!-- Javascript -->
<script>
$(function () {
        $("#drag").draggable({
                handle: "#handle"
        });
 
        $("#drag1").draggable({
                cancel: "#handle1"
        });
});
</script>
 
<!-- HTML -->
<div id="box" style="width:600px;height:200px;border:0px solid black;margin-bottom:5px">
    <div id="drag" class="drag">        
        <p id="handle">可拖曳</p>
        <p style="font-size:12px;">將滑鼠移到黃色區塊內即可拖曳此方框</p>
    </div>
   
        <div id="drag1" class="drag" style="cursor:pointer;">        
        <p id="handle1">不可拖曳</p>
        <p style="font-size:12px;">不在黃色區塊的範圍內都可拖曳此方框</p>
    </div>
</div>


參考文章 :
原文網頁連結

html 轉 pdf 教學

此篇為 html2pdf 備忘錄,

記載 :

1.將 html 內容轉換至 pdf
2.解決語系utf 問題
3.順道理解 ob_start() 緩存在php的作法

以下連結包含解決中文顯示的問題 , 搭配底下的 code 一起看
https://github.com/spipu/html2pdf


直接帶入code來看 , 分為兩部份


//Content.php
<table>

<?php for($i = 0 ; $i < 5 ; $i++ ){ ?>

 <tr>
 <td><?php echo "---->".$i."<br>"; ?></td>
 </tr>

<?php } ?>
</table>



<!-- 開始緩存 -->
<?php ob_start(); ?>

要轉成pdf的內容こんにちは世界

<!-- 取得緩存內容 -->
<?php $content = ob_get_contents(); ?>

<!-- 關閉緩存 -->
<?php ob_flush(); ?>

<!-- 關閉緩存 印出 -->
<?php ob_get_flush(); ?>

<!-- 關閉緩存 不印出 -->
<?php ob_end_clean(); ?>

<!-- 測試緩存內容 -->
<?php echo "<br>php Cache:".ob_get_contents()."<br>"; ?>

    <form method="post" action="html2pdf.php">
     <input type="hidden" name="Content" value=<?php echo $content; ?>
     <input type="submit" name="submit" value="Submit">
    </form>


整體的理解
1.整個 html 資源由上到下,若需轉成 pdf 部份 以 ob_start()為起始
2.執行 ob_start() 表由該行開始將內容記入 php 緩存
3.ob_get_contents 取出緩存內容放入變數 $Content 中
4.為什麼需要這麼做?網路上得到的解答是只有字串才能放入寫檔函式中
因此透過緩存返回的字串塞進轉換函式中

5.記入緩存的內容以下列兩種方式來清除
    5.1.ob_get_flush 清除緩存並且將緩存內容導致瀏覽器
    5.2.ob_get-_clean 只清除緩存




//html2pdf.php
<?php
    require_once(dirname(__FILE__).'../html2pdf.class.php');
    try
    {
     
     //freeserif
     $content = '<page style="font-family:javiergb">'.$_REQUEST['Content'].'</page>';
        $html2pdf = new HTML2PDF('P', 'A4', 'fr', true, 'UTF-8', 0);
        $html2pdf->pdf->SetDisplayMode('fullpage');
        $html2pdf->setDefaultFont('javiergb');
        $html2pdf->writeHTML($content, isset($_GET['vuehtml']));
        $html2pdf->Output('ticket.pdf');
    }
    catch(HTML2PDF_exception $e) {
        echo $e;
        exit;
    }
?>
html2pdf.php
這支檔案內容理解很簡單,單純將form post的內容傳送至此做轉換
唯一要注意是
$html2pdf->setDefaultFont('javiergb');
此字型支援 Utf 各種語系顯示,轉換出來的中文才會正常


google authenticator驗證教學

google authenticator驗證
可以在各語系下實行,C#,java
最近剛好在使用php,於是便有下列範例供參考





















相信大家玩遊戲為了防止自己辛苦拿到的道具被偷走,
都有用過 google authenticator 來做進一步帳號登入


其中邏輯非常簡單 , 取得 google api return 的 code
用該code與手機上取得的 6位數 字拼出一個結果

可以在google search任一個 git 下載
PHPGangsta/GoogleAuthenticator 其實裡面有一個 example code寫的很清楚
這裡底下看到是我重新改過符合現實的狀況


我們準備三支 php 檔案

//input.php
<form method="post" action="verif.php"> 
   <input type="text" name="inputAuth">
   <input type="submit" name="submit" value="Submit"> 
</form>


//verif.php
<?php

require_once '../PHPGangsta/GoogleAuthenticator.php';

$ga = new PHPGangsta_GoogleAuthenticator();

$checkResult = $ga->verifyCode("K12QLNQAICOTOP6C", $_REQUEST['inputAuth'], 1);// 2 = 2*30sec clock tolerance    
if ($checkResult) {
    echo 'OK';
} else {
    echo 'FAILED';
}


//getAuth
<?php

require_once '../PHPGangsta/GoogleAuthenticator.php';

$ga = new PHPGangsta_GoogleAuthenticator();

$secret = $ga->createSecret();
echo "Secret is: ".$secret."\n\n<br>";
//得出key(手動輸入)

$qrCodeUrl = $ga->getQRCodeGoogleUrl('Blog', $secret);
echo "Google Charts URL for the QR-Code: ".$qrCodeUrl."\n\n<br>";
//得出QrCode(手動輸入)
?>
這邊透過google api 可以產出 key , 跟 QrCode , 都可以在手機app設定上輸入
當然QrCode輕鬆多了不用輸入Key

每一次從手機上得到的 6位數字 與 api 產生的 key K12QLNQAICOTOP6C可以得出一個參數便是結果囉




CSS loading動畫



作者這邊分享幾個相當不錯以css來製作 loading 動畫的公開源碼的站台

要注意拿到 code 要再小小加工一下
為div 給它一個 id 方便 js 隱藏控制


<div id="c3" class="spinner" style="z-index: 999;visibility:hidden">
    <div class="rect1"></div>
    <div class="rect2"></div>
    <div class="rect3"></div>
    <div class="rect4"></div>
    <div class="rect5"></div>
</div>

在 css 裡面補上 ,使它可以跨越html結構,位移到自己想要的位置顯示

#c3{

    top:33%;
    left:27%;
    position:fixed;

}






















http://www.css-spinners.com/

















http://projects.lukehaas.me/css-loaders/
















http://tobiasahlin.com/spinkit/






城堡與巨龍( CASTLE&DRAGON/城とドラゴン)





























在這邊特別介紹一款手遊
城堡與巨龍CASTLE&DRAGON/城とドラゴン)
無意間在Qoo發現,但仔細一查其實在 2015/2就已發行
是一款相較於現代塔防遊戲戰鬥算是小有創意一款手遊
簡單,輕鬆,無負擔的,無法沉迷的的一款遊戲


雖無法像其他遊戲一般靠著蠻幹日以繼夜的衝等
,但它有著其他遊戲沒有的特殊魅力




(1).肉來源(雞,種蘋果)應該是蘋果? ,
      肉的用處 :
      1.用來提升部份功能升級金錢上限
      2.提升防禦相關上限
      3.提升兵種武器防具升級
      4.攻城搶奪需支付相對應的肉


肉的上限要提升,環環相扣就是需要憑著金幣
















































(2).金幣 , 用來支付各種兵種升級,防禦工事,肉類上限提升
      每天記得點擊右邊 寶箱 ,有時候會出現幾顆鑽石





(3).研究所 : 研發兵種裝備武器 , 裡面有各種兵種,兵種的來源增加,是藉由購買蛋孵化產生
      孵化出來的兵種,便可以在研究所內進行研發武器與裝備,要注意的是武器與裝備的研發
      是需要兵種等級到達一定才可以進行研發的喔,有些則是需要研究所等級到達才可
 
      可以看到每次研發都需要蠻長一段時間(大部份都是落在1小時 - 4小時間)
      一次只能研發一種,所以基本上點下去研發後,就可以去休息了)











(4).訓練場 : 訓練兵種的地方,可以隨時更換,兵種的等級上限也是需要藉由提升項目
      隨之才可以練至最高等級 , 兵種頭上冒出 綠色泡泡(表示該兵種訓練有一定成果 )
      超過該等級之數字便提升等級 , 在研究裡找到新的武器與裝備項目





花費金幣提升兵種等級上限























當然如果你等不及,也可以花費鑽石來快速提升訓練





(5).好友 : 一開始沒有好友(趕緊去新增)不但會送鑽石,兵種還可以與好友相練成長
                下圖可以看到,已經新增好幾個好友,

                這裡注意,可以與朋友訓練時,朋友的訓練場會冒出驚嘆號,點擊選擇你要訓練
                的兵種即可,與朋友訓練的次數是藉由上方玉(時間到會變成綠色)有點像攻城
                時紅色的玉,綠色的玉增加亦可使用鑽石來增加

























(6).購物車 : 畫面左下角有一個長的購物車的按紐 ,
                     可以購買孵化兵種所需的蛋(如下圖)
                     有一些蛋是限定時間販賣
                     其他兵種的蛋都是2天換一次(不用怕買不到,下一次會再輪到)
                     大約是2000CP - 5000CP左右(當然也可用鑽石購買)



























那至於要買那些蛋好用呢?
可以參考網路上準備好的資料



































(7).主城升級 : 畫面左上角會看到自己的主城等級
      每一次升主城等級就會送3000CP(購買蛋的點數)

       而升級主城的方法
        1.兵種提升等級
        2.孵蛋孵化完成
        3.與朋友訓練勝利有機會提升
























(8).攻城搶奪 : 點擊畫面右下角兩把刀的按紐便可進入攻城(又可分單人與多人)

                         每日都有提供固定與它人玩家連線獲得鑽石的獎勵
                       


























攻城前 : 通常我會選擇比自己等級低或接近自己等級主城的玩家或電腦AI
               除非是肉多到沒地方花,亦可挑戰越級玩家

               剛開始進入時會叫你選擇一個你一定要用的角色,通常我會選擇狀況良好
               (上面有表示圖示),其他角色則是從剩下的角色中隨機選出
               接著就開始需在10秒內配置好進攻或防守的兵種
               (在黃色線內 ),黃色線會隨著進攻城 ( 前線則隨之推進 )

               網路youtube上亦有許多影片參考
               ゲームプレイ 03 マタンゴアーチャー中心























攻城前先偷看一下敵方兵力的配置
























最後結算時會以你攻城占下的城數,與損傷程度百分比換算成金幣給您
























更多的賺金幣技巧(參考youtube影片)
簡易高效100%搶錢法




(9).基本設定與防禦工事(換裝) :
      在村莊右上角點擊會出現四個圖案
      1.換裝(研發後可以在這邊換裝備)
      2.主城目前排行
      3.防禦工事佈置(當敵人來打你時陣行)
      4.基本設置(音效畫面提醒 ... )










在做表單更新update時常會使用到的JQuery技術


本篇為紀錄 , 為解決
在做Form表單更新時,不換頁要做Update之狀況
在一般情況要做Update有幾種方法


1.按下編輯(Update)時將資料塞到URL,讓php或其他語言收變數
2.直接在原地表格變成input欄位,修改完直接原表單送出
3.第三種就是作者紀錄該方法,透過 JQuery將資料找到塞到我們想要的欄位裡


假設在同一頁面包含了已接收DB資料並且已塞到欄位表格中,代碼如下:

<html>

      <tr>
            <td>123</td>
            <td>456</td>
            <td>789</td>
            <td>
            <button type="button" onclick="updatePanel();" >編輯</button>
            </td>
            <input type="hidden" class="hidden1" value="666"  />
      </tr>
</html>



我們想要將這些資料,在我們按下編輯(Update)時,送到編輯的欄位
讓使用者方便編輯上次已填好的資料做修改,代碼如下:

<html>
     <div class="Update Form" aria-hidden="false">
      
          <li><input type="text" name="InputField1" /></li>
          <li><input type="text" name="InputField2" /></li>
          <li><input type="text" name="InputField3" /></li>
          <input type="hidden" id="InputField4" name="old_PermID"  />
     </div>
</html>



接著是JS代碼 updatePanel 的部份,如下:

<head>

      <script type="text/javascript">

 $('table tbody').on('click', 'td button', function () {
   
   var tr = $(this).closest('tr');
          document.getElementById("InputField1").value= tr[0].cells[0].innerText;//123
          document.getElementById("InputField2").value= tr[0].cells[1].innerText;//456
          document.getElementById("InputField3").value= tr[0].cells[2].innerText;//789
          document.getElementById("InputField4").value= 
          $(this).closest('tr').find('input.hidden1').val();//666
        });
      </script>
</head>


在 table tbody 內 , 最靠近 td ul button的按紐發出onclick事件便觸發,
tr[0].cells[0].innerText; 透過類似樹狀結構找到內容,將資料塞到我們指定Id標籤

這裡注意看其實我們還有偷偷傳送一個隱藏input欄位,有一些資訊不能被使用者修改
像更新或刪除的索引值,藉著隱藏欄位傳遞,
可以透過藉由 find('input.password'),找到指定的標籤與class name,便可找到其中的值

其中的用法非常多樣化,這裡只是舉例其中部份,有興趣可以再至官網深入探討


另外要注意的是 作者發現在使用 Firefox 其他瀏覽器
底下這樣寫法造成瀏覽器不支援



tr[0].cells[0].innerText;//123

( only for chrome , IE )
而全面改用以下 , 或是將資訊利用for迴圈去繞update的html結構


 document.getElementById("InputField4").value= 
          $(this).closest('tr').find('input.hidden1').val();//666
( only for chrome , Firefox , IE )








About Call to a member function domain() on a non-object

About Laravel 5 After use Form::open occur some error
error : Call to a member function domain() on a non-object

FatalErrorException in UrlGenerator.php line 440:
Call to a member function domain() on a non-object
in UrlGenerator.php line 440
at HandleExceptions->fatalExceptionFromError(array('type' => '1', 'message' => 'Call to a member function domain() on a non-object', 'file' => '/home/nl/Laravel/vendor/laravel/framework/src/Illuminate/Routing/UrlGenerator.php', 'line' => '440')) in HandleExceptions.php line 116
at HandleExceptions->handleShutdown()

The Follow are solve

1.install command -> composer create-project laravel/laravel

2.composer update

3.composer require illuminate/html

4.composer dump-autoload

5.php artisan clear-compiled
  php artisan optimize

6.
Add to the app.php providers array:
    'Illuminate\Html\HtmlServiceProvider',


Add to the app.php aliases array:
    'Html'      => 'Illuminate\Html\HtmlFacade',
    'Form'      => 'Illuminate\Html\FormFacade',

7.in route 

 Route::any('/LoginCheck', 'LoginCheckController@index');

8.
注意 namespace路逕

<?php namespace App\Http\Controllers;

use Illuminate\Support\Facades\Redirect;

class LoginCheckController extends Controller {

如果有使用 \Redirect; 記得要 use


9.in view 

{!! Form::open(array('action' => 'LoginCheckController@index', 'method' => 'post')) !!}
 {!! Form::close() !!}

Bootstrap 資源





Bootstrap Grid排版教學
http://kimix.name/bootstrap-rwd-%E4%BD%BF%E7%94%A8%E6%96%B9%E6%B3%95%E5%8F%8A%E5%8E%9F%E7%90%86/

Bootstrap 線上排版器
http://www.layoutit.com/

Navbar配色器
http://work.smarchal.com/twbscolor/

Bootstrap 選擇Select 下拉
http://silviomoreto.github.io/bootstrap-select/

彈跳(對話)視窗分享code
http://codepen.io/DawsonMediaD/pen/byDqv
http://nakupanda.github.io/bootstrap3-dialog/#available-options

Alert 視窗分享code
http://www.tutorialrepublic.com/twitter-bootstrap-tutorial/bootstrap-alerts.php

利用jquery做的dataTable
https://datatables.net/examples/styling/bootstrap.html


Js在Bootstarp應用
http://www.bootstrap.vvvvv.tw/javascript.html#modals


參考影音教學
https://www.mokoversity.com/course/html5/bootstrap-html5-intro

Bootstrap Notify套件
http://bootstrap-growl.remabledesigns.com/
http://jquery-plugins.net/pines-notify-notifications-for-bootstrap-or-jquery-ui





在雲端寫程式(代碼)






runnable
http://code.runnable.com/






















可撰寫C++,php,java,node等
可直接寫完編譯線上直預覽看結果
未來教學可移至該平台





JSFIDDLE
http://jsfiddle.net


















另一個雲端寫code地方 專門寫html,css,ajax







ActionScript - Netstream , netstream bytesLoaded , Kbit/s計算


ActionScript - Netstream ,  netstream bytesLoaded ,  Kbit/s計算


netstream 在讀取視頻流量
網路查到方法是用 Netstream.bytesLoaded
實際上該方法只能用在讀取外部媒體.flv使用


若是讀取rmtp視頻串流
請使用


var nevbyte:Number=0;
var sum:Number;
var kbit:int;

var clockTimer:Timer = new Timer(1000,0);
clockTimer.addEventListener(TimerEvent.TIMER,onTick);
clockTimer.start();


function onTick(event:TimerEvent)
{   

    sum = Play_ns.info.byteCount - nevbyte;
    kbit=sum/1024;
    trace(kbit);
    panel.byteload_txt.text = String(kbit);
    nevbyte=Play_ns.info.byteCount;

}

Laravel -view與Controller參數傳遞與回應

Laravel -view與Controller參數傳遞與回應

前台網頁的操作不外乎就是靜態頁面view,下操作後
將參數傳遞給Controller(邏輯)判斷後發送給api,
得到回應結果,再將結果整理丟給view過程


以下實作view與Controller傳遞參數簡單範例


這邊簡單做一個login
1.在view準備一個叫loginEx.blade.php
尾巴有blade字眼才可使用Laravel自訂義一些方法
像底下代碼form改由{{ Form::open(array 就是
<html>
<head>
   
</head>
<body>

{{  Form::open(array('action'=>'LoginCheckController@check', 'method' => 'post')) }}     
<div >
    <div>   
    account:<input type="text"    class="form-control" id=""                      name="acc"/>
    pwd:    <input type="password" class="form-control" id="exampleInputPassword1" name="pwd"/>
    <button type="submit" class="btn btn-default">Submit</button>   
    </div>
</div>
{{ Form::close() }}

<!--  input type 屬性可參考  -->
<!--  http://www.w3schools.com/tags/att_input_type.asp   -->
<?php

    $msg = Session::get('msg');


    if( $msg =="Success")     {
        echo "loginSuccess";     }
    if( $msg =="Fail")     {   
        echo "something wrong";     }
    if (Session::has('message'))
    {
        Session::forget('message');
    }
?>
</body>
</html> 


{{  Form::open(array('action'=>'LoginCheckController@check
是Laravel自訂義方法呼叫 Controller中的方法,將原本form中的name參數帶入
,而待會從 Controller回傳回來時是以session型態回傳


2.在Controller準備一隻叫 LoginCheckController.php
<?php

class LoginCheckController extends BaseController {


   
    public function check()
    {
       
       
/*         $acc = Input::get("acc");
           $pwd = Input::get("pwd"); */
       
         $rules = array(
                'acc'    => 'required|alphaNum|min:5',
                'pwd'    => 'required|alphaNum|min:6'
        );
   
       
        $validator = Validator::make(Input::all(), $rules);
       
        if ($validator->fails()) {
           
            $output = "Fail";
            return Redirect::to('loginEx')->with('msg', $output);
           
        }else{
           
            /* {....call login api } */
            $success = true;
            if($success)
            {
                $output = "Success";
                return Redirect::to('loginEx')->with('msg', $output);
            }else{
                $output = "Fail";
                return Redirect::to('loginEx')->with('msg', $output);
            }
           
           
        } 


Controller接值使用Input::get("acc");
 並且對 所有Input參數做驗證 Validator::make(Input::all()
required|alphaNum|min:5
 意義為必要輸入,且為字母數字,最小長度5

 判斷成功與否會透過br /> return Redirect::to('loginEx')->with('msg', $output);
 將結果回應至目標頁面

Laravel -view 視圖篇

基礎noSQL連接與實作


基礎noSQL連接與實作
Client連接基礎語法實測兩種
注意以下作法無關framework , laravel & Phalcon作法相同
1. yaCassandrapdo 2.phpCass


1. yaCassandrapdo
連接方法
$setting = 'cassandra:host=10.20.30.222;port=9160;cqlversion=3.0.0'; $username = ""; $password = ""; $db = new PDO($setting, $username, $password);
建立資料表
Route::get('api/pdo_cass/create' , function(){ $db->exec ("CREATE KEYSPACE yapdo WITH REPLICATION = {'class' : 'SimpleStrategy', 'replication_factor': 1}"); }) ;

SQL查詢
Route::get('api/pdo_cass/get' , function(){ $setting = 'cassandra:host=10.20.30.222;port=9160; cqlversion=3.0.0'; $username = ""; $password = ""; $db = new PDO($setting, $username, $password); $db->exec ("USE \"nl_keyspace\";"); $result = $db->query("SELECT * FROM account")->fetchObject(); var_dump($result) ; }) ;
插入資料 & 更新資料
Route::get('api/pdo_cass/insert' , function(){ $setting = 'cassandra:host=10.20.30.222;port=9160; cqlversion=3.0.0'; $username = ""; $password = ""; $db = new PDO($setting, $username, $password); $db->exec ("USE \"nl_keyspace\";"); $db->exec("INSERT INTO test (id, map_test) VALUES (1, {'val1': 2, 'val2': 1, 'val3': 3});"); //注意若插入key值等同原來值,就會自動將之後欄位值更新 }) ;
刪除資料
Route::get('api/pdo_cass/delete' , function(){ $setting = 'cassandra:host=10.20.30.222;port=9160; cqlversion=3.0.0'; $username = ""; $password = ""; $db = new PDO($setting, $username, $password); $db->exec ("USE \"nl_keyspace\";"); $db->exec("DELETE FROM MastersOfTheUniverse WHERE mastersID IN ('Man-At-Arms', 'Teela');"); }) ;


phpCass
$servers = array("10.20.30.222:9160" , "10.20.30.223:9160") ; $pool = new ConnectionPool("devKeyspace" , $servers) ;
建立資料表
$sys = new SystemManager('127.0.0.1'); $sys->create_keyspace('Keyspace1', array( "strategy_class" => StrategyClass::SIMPLE_STRATEGY, "strategy_options" => array('replication_factor' => '1') )); // Use composites for column names and row keys $sys->create_column_family('Keyspace1', 'Composites', array( "comparator_type" => "CompositeType(LongType, AsciiType)", "key_validation_class" => "CompositeType(AsciiType, LongType)" ));
SQL查詢
Route::get('api/cass/get ' , function() { $servers = array("10.20.30.222:9160", "10.20.30.223:9160" ) ; $pool = new ConnectionPool("nl_keyspace" , $servers) ; $column_family = new ColumnFamily($pool, "table_name"); $result = $column_family->get('key'); echo $result["col"]; echo $result["value"]; foreach($result as $key => $columns) { print_r($columns."
"); } });

插入資料 & 更新資料
Route::get('api/cass/insert_update' , function() { $servers = array("10.20.30.222:9160", "10.20.30.223:9160" ) ; $pool = new ConnectionPool("nl_keyspace" , $servers) ; $column_family = new ColumnFamily($pool, "a3"); $result = $column_family->insert( 'a4' , array('col' => '100' ,'value'=>'4444') ) ; //注意若插入key值等同原來值,就會自動將之後欄位值更新 });
刪除資料
Route::get('api/cass/delete' , function() { $servers = array("10.20.30.222:9160", "10.20.30.223:9160" ) ; $pool = new ConnectionPool("nl_keyspace" , $servers) ; $column_family = new ColumnFamily($pool, "table_name"); $result = $column_family->remove('key'); });

Laravel 路由對資料庫操作


Laravel 路由對資料庫操作

藉由路由夾帶參數輸入再透過邏輯轉呼叫資料庫
回應結果內容 , 有沒有發現,這好像就是api

是的,本來要拿 Laravel做api ,但因一些緣故最後又放棄使用
退回到傳統的 php架構上


查詢(1) : 一般SQL寫法 app/route.php
Route::get('api/test/openlist/get/{limit?}' , function($limit = 50)
{ $result = DB::select("SELECT * FROM OpenList where id = ?" , array(1) ); return Response::json($result) ; });

Route::get('api/test/openlist/get/{limit?}' , function($limit = 50)
{ $result = DB::select("SELECT * FROM OpenList where id = ? AND serverid = ?", array(1,54671) ); //欲查詢變數順序,依array內容順序
return Response::json($result) ; });



查詢(2) : 物件寫法 app/route.php
DB::table(“OpenList”)->get();//查詢所有 DB::table("OpenList")->take(5)->get(); // 只查5筆 DB::table('users')->where('name', ‘uccu’)->get(); // 查name欄位值為uccu的資料 DB::table('roles')->lists('title', 'name'); //查roles裡的title,name欄位 $users = DB::table('users') ->where('votes', '>', 100) ->orWhere('name', 'John') ->get();
插入(1):一般sql寫法 add/route.php
Route::get('api/sqlcmd/insert/' , function() { DB::insert('insert into users (id, name) values (?, ?)', array(1, 'Dayle')) });
插入(2): 物件寫法 app/route.php
Route::get('api/sqlcmd/insert/' , function($limit = 50) { DB::table("users")->insert( array('name' => 'hahaha' , 'email'=> 'hahaha@gmail.com') ); //一次插入一筆資料 DB::table('users')->insert(array( array('email' => 'taylor@example.com', 'votes' => 0), array('email' => 'dayle@example.com', 'votes' => 0), )); //一次插入多筆資料 });

更新(1):一般sql寫法 add/route.php
Route::get('api/sqlcmd/update/' , function($limit = 50) { DB::update('update users set votes = 100 where name = ?', array('John')); });
更新(2):一般sql寫法 add/route.php
Route::get('api/sqlcmd/update/' , function($limit = 50) { DB::table('users')->where('name', ‘hahaha’)-> update(array('name' => ‘uccuu’, 'email' => 'uccuu@gmail.com')); });

刪除(1):一般sql寫法 add/route.php
Route::get('api/sqlcmd/delete/' , function() { DB::delete('delete from users'); });
刪除(2): 物件寫法add/route.php
Route::get('api/sqlcmd/delete/' , function($limit = 50) { DB::table('users')->where('votes', '<', 100)->delete(); DB::table('users')->delete(); DB::table('users')->truncate(); });