2018年12月25日 星期二

Laravel的一些小技巧 - DB::table(一)

//利用兩層foreach,將資料寫入
//
$names = array('a','b','c');$ages = array('1','2','3');
foreach($names as $name)
{
    foreach($ages as $age)
    {
        DB::table('users')->insert(
            array('name' => $name, 'age' => $age)
        );    }
}

來源:stackoverflow - How to insert multiple record in laravel


https://stackoverflow.com/questions/29723865/how-to-insert-multiple-rows-from-a-single-query-using-eloquent-fluent

https://stackoverflow.com/questions/40106855/how-to-insert-multiple-rows-in-laravel-5?rq=1

https://stackoverflow.com/questions/39113682/insert-multiple-records-at-once-with-laravel/39389935

https://stackoverflow.com/questions/1307618/multiple-mysql-insert-statements-in-one-query-php

2018年12月23日 星期日

建立HTML表格,並且讓TR變成Form表單

一般傳統設計
我們可能會在FORM表單下包著TABLE,這樣當所有的element要被送出時,我們都會透過submit按鈕將資料全部送出,但假使我們的資料有分區塊呢?

把FORM包在TABLE底下,好像可以區分出好幾列,也可以個別送出表單資料且一如往昔,但是這樣的設計就w3c的規範是不正規的、無效的(DOM沒有這樣規定)。所以當使用javascript要取用DOM元素時,是有問題的,試想FORM的子元素或是TR的子元素,絕對不會是FORM或是TD,這樣想起來就很怪,而且一定出錯。

<table>
    <tr>
        <form method="GET" action="whatever">
            <td><input type="text"/></td>
            <td><input type="text"/></td>
        </form>
    </tr>
    <tr>
        <form method="GET" action="whatever">
            <td><input type="text"/></td>
            <td><input type="text"/></td>
        </form>
    </tr>
</table>

因此現在很多的網頁設計都改用DIV的方式來設計並把表單包進來。

最近看到一個有趣的設計,可以利用CSS的方式,融合表單以及TABLE的樣式,做出一個像TABLE一樣的表格,而且又可以分區塊送出FORM需要的動作ACTION。主要用的就是display:table、display:table-row、display:table-cell

<style>
    DIV.table    {
        display:table;    }
    FORM.tr, DIV.tr    {
        display:table-row;    }
    SPAN.td    {
        display:table-cell;    }
</style>
...<br />
<div class="table">
    <form action="blah.html" class="tr" method="post">
        <span class="td"><input type="text" /></span>
        <span class="td"><input type="text" /></span>
    </form>
    <div class="tr">
        <span class="td">(cell data)</span>
        <span class="td">(cell data)</span>
    </div>
    ...</div> 

參考網頁:stackoverflow - Create a HTML table where each TR is a FORM

Laravel的一些技巧 - Eloquent(一)

//使用whereIn取得學校列表,函式先取(資料庫欄位的'id', 再取學校陣列)
//School物件是use App\School這個Model

$schools = School::whereIn('id', $select_school)->get();
//DB::table的寫法//$schools = DB::table('schools')->whereIn('id', $select_school)->get();

來源:stackoverflow-How to Make Laravel Eloquent “IN” Query?

2018年12月22日 星期六

Laravel的一些技巧 - Blade (一)

//foreach取學校,最後一間學校不會出現「、」號
//使用$loop變數
@foreach( $schools as $school)
    {{ $loop->first ? '' : '' }}
    {{ $school->school_name }}
@endforeach

來源:stackoverflow-How to remove comma from last array in Laravel 5?

2018年12月20日 星期四

$_ENV環境變數為空值

PHP中的$_ENV是伺服器中環境變數的數組,他是PHP中的超級全域變數,最近學習Laravel時有一.env的環境設定檔,其原理是其設定好的環境設定值,加載到PHP的$_ENV全域變數中。

基於好奇,在未啟動Laravel環境的狀態下,試著在PHP程式中把$_ENV倒出來,可使用的語法有三中
1. var_dump($_ENV);
2. print_r($_ENV);
3.
foreach ($ENV as $key =>$value){
echo $key . "==>" . $value . "<br>" 
}

結果發現倒出來的$_ENV全是空值

原來在php.ini中,有一 variables_order設定值,如果是設為GPCS,就不會顯示$_ENV環境變數。G指的是Get、P指的是Post、C指的是Cookie、S指的是Session,而ENV的代表英文為E,所以如果希望$_ENV能撈出伺服器上的環境變數,variables_order就應該設定為EGPCS

variables_order =  EGPCS

但是,看了一下,發現如果伺服器上的環境變數被撈光了,好像不太安全,所以其實php.ini的說明中也說了,發行版伺服器的php.ini設定建議還是採用GPCS。
ps.設定完後,要記得重起Apache2




2018年12月18日 星期二

把form表單內的資料清空

把form表單內的資料清空

範例1:
$("#client.frm")[0].reset(); //faster version: $("#client")[0].reset();

範例2:
$("#my-form").trigger("reset");

範例3:
document.getElementById("client").reset();