multipleなSELECTタグで選択されているOPTIONタグの個数をjQueryで得る

複数選択可能なSELECTで選択されている個数をjQueryでどうやって書くのか知りたかったからググった。

How to get number of selected options using jquery?

https://stackoverflow.com/questions/3707812/how-to-get-number-of-selected-options-using-jquery

var count = $("#mySelect :selected").length;

やってみた。動いた。よかった。

MySQLでJOINとINNER JOINって同じ?

JOINとINNER JOINが同じっぽいけど本当に同じか不安だから調べた。

https://dev.mysql.com/doc/refman/5.6/ja/join.html

MySQL では、JOIN、CROSS JOIN、および INNER JOIN は構文上同等です (互いに置き換えることができます)。標準 SQL では、それらは同等ではありません。

CROSS JOINって使ったことない。まあいいか。

とりあえずMySQLでJOINとINNER JOINは同じ。よかった。

Twigで配列の一部を取り出す

Twigで配列の一部を取り出すときは、sliceを使えばオケ。

でも配列のキーがつぶれた。

マニュアル見た。

https://twig.symfony.com/doc/2.x/filters/slice.html

The slice filter works as the array_slice PHP function for arrays and mb_substr for strings with a fallback to substr.

英語読めないけど、PHPのarray_sliceと同じって書いてある気がする。

http://php.net/manual/ja/function.array-slice.php

第4引数がいい感じっぽい。

preserve_keys array_slice() はデフォルトで配列の数値キーを並べなおし、 リセットすることに注意してください。 preserve_keys を TRUE にする事でこの動作を変更することができます。

つまりTwigだと第3引数だねってことで、第3引数にtrueって書くとつぶれなくなった。

こんな感じで使ったよ。

{% for key,value in items|slice(0, limit, true) %}

JavaScriptの関数のデフォルト引数はIEで動かない

てきとうなJavaScriptを書いたらIEで動かなかった。つうかJavaScriptが動かなくなった。

function aiueo(kakiku = false)
{

関数のデフォルト引数はIE等で動かないらしい。

https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Functions_and_function_scope/Default_parameters

あわてて修正。

function aiueo(kakiku)
{
    if(typeof kakiku === 'undefined') kakiku = false;

うまくいったっぽい。

TwigでPHPの===

てきとうにif文書いたら、空でもゼロでも通ってしまった。

{% if value == '0' %}

何も考えずに==を===してみたら、シンタックスエラーになった。

ちゃんと調べた。 https://twig.symfony.com/doc/1.x/tests/sameas.html

This is the equivalent to === in PHP

よさそうですな。

{% if value is same as('0') %}

いい感じに動いてくれた。

FuelPHPのクエリビルダのSQLを確認したい

FuelPHPのクエリビルダで複雑なクエリを書いていて、 本当に思った通りに書けてるの?と心配になったらSQLを表示して確認する。

$query = DB::select()->from('table');

print $query->compile(); // SELECT * FROM `table`

printとか書きたくないって時は、 以下のようにしてFuelPHPのログファイルに出力させて確認する。

Log::debug($query->compile());

ログに出てないんですけど?って場合はconfig.phpのlog_thresholdの設定がイケてないんだと思います。 何にも考えなければエラーで出しちゃえ。

Log::error($query->compile());

普通の画面だったら、プロファイリングを使うのも手。 config/development/config.phpのprofilingをtrueにして、

'profiling'  => true,

config/development/db.phpにも足す。

<?php
return array(
    'default' => array(
        'connection'  => array(
            'dsn'        => 'mysql:host=localhost;dbname=test',
            'username'   => 'root',
            'password'   => '',
        ),
        'profiling'  => true,
    ),
);

画面右端に現れた黒い「Code Profiler」をクリックするとプロファイリングが表示されるので、 「Database」のタブをクリックするとSQLが確認できる。