MW211 EXIT

devlog
どっち?/入力エラーチェック
2012年01月27日
入力エラーチェックは入力直後のクライアント側におけるチェックと
データベース等に書き込む直前のサーバ側におけるチェックがある。

前者はJavaScript、後者はPHP等による処理ということになろう。

後者の方がより書き込む処理に近いので安全であるといえる。

しかし、UIの観点からは前者の方がやさしい。
入力した内容が誤っていてもそのまま画面に残っているからだ。

後者であっても、入力した内容を引き継げばそれは実現できるのだが
ちょっと煩雑な気がする。

もちろん前者だけではチェックに限界がある場合がある。
例えば、画面に表示されていない情報をデータベースに問い合わせなければ
ならない場合などは、通常のJavaScriptでは無理だ。

しかし、Ajaxを使えばそれは克服できそうだ。
分類:設計、どっち?
どっち?/LEFT JOINで名称取得vs都度名称取得
2012年01月26日
データベースでコードと名称が対になっているサブテーブルがあった場合、
メインテーブルを参照する時にLEFT JOINする方法と、
その時はLEFT JOINしないで後で都度サブテーブルを参照する方法がある。

前者はLEFT JOINができるデータベースシステムならではの方法で、
後者は単なるシーケンシャルファイルでもできる方法だ。

前者と後者の大きな違いは、ずばり、抽出と並び替えだ。

前者の場合、LEFT JOINした先の名称でも抽出や並び替えができてしまう。
分類:どっち?
設計/基点の違い
2012年01月25日
ドリー・ファンク・ジュニアの父は、ドリー・ファンク・シニアだが、
ムーミンパパの子供はムーミン子ではなく、ムーミンだ。

両者は基点違うのだろう。

前者は父と子の間に、見えない基点があって、そこからの距離で決まっている。
「-1」(子)と「1」(父)の間に「0」がある感じだ。

一方、後者はあくまで基点は子で、「1」(父)と「0」(本人)の関係だ。

結構これがごっちゃになるケースというのはあるので注意が必要だ。
#「0」オリジン、「1」オリジンの違いとも似ている。
分類:設計
JSON/配列の階層
2012年01月24日
┌──────────────────────────────────────┐
│{"a":                                                                       │
│  {"b":                                                                     │
│    {"c":"z"}                                                               │
│  }                                                                         │
│}                                                                           │
└──────────────────────────────────────┘
みたいな階層になっているデータをjsonという変数に格納した場合、
「c」の値「z」を取得する方法は、以下のように「.」をつなげて書く。
┌──────────────────────────────────────┐
│json.a.b.c                                                                  │
└──────────────────────────────────────┘
簡単、簡単。

では「b」の部分を変数にしたい場合は?
┌──────────────────────────────────────┐
│var x = "b";                                                                │
│json.a.x.c                                                                  │
└──────────────────────────────────────┘
これではダメ。

┌──────────────────────────────────────┐
│var x = "b";                                                                │
│json.a. + x + .c                                                            │
└──────────────────────────────────────┘
もちろんん、こんなのもダメ。

う~ん、こうならいけた!
┌──────────────────────────────────────┐
│var x = "b";                                                                │
│json.a[x].c                                                                 │
└──────────────────────────────────────┘

ってことは、ハナからこうしときゃいいってこと?
┌──────────────────────────────────────┐
│json["a"]["b"]["c"]                                                         │
└──────────────────────────────────────┘
分類:JSON
JSON/注意点
2012年01月23日
・キーは必ず「"」で囲う
例)×{a:"b"}→○{"a":"b"}

・不要な「,」は書かない
例)×{"a":"b","c":"d",}→○{"a":"b","c":"d"}
分類:JSON
PHP/年月日チェック(日付チェック)
2012年01月22日
年月日の妥当性を一発でチェックする関数は「checkdate()」、こんな感じ。
┌──────────────────────────────────────┐
│if (checkdate($月, $日, $年)) {                                             │
│  echo '正しい年月日です';                                                  │
│} else {                                                                    │
│  echo '正しい年月日ではありません';                                        │
│}                                                                           │
└──────────────────────────────────────┘
引数が「月、日、年」の順であることに注意。

また、数値型を想定しているので文字型を引数に指定するとエラー(Warning)となる。
よって、得体のしれないものをチェックしたい場合は、
「intval()」で囲った方がいいかも。
┌──────────────────────────────────────┐
│if (checkdate(intval($?), intval($?), intval($?))) {                     │
│  echo '正しい年月日です';                                                  │
│} else {                                                                    │
│  echo '正しい年月日ではありません';                                        │
│}                                                                           │
└──────────────────────────────────────┘
分類:PHP
JavaScript/alertダイアログ
2012年01月21日
JavaScriptにて「alert()」でダイアログを表示した場合の
ブラウザによる挙動の違いは以下の通り。

・InternetExplorer
→タイトルは「Windows Internet Explorer」

・Firefox
→タイトルは特になし

・Chrome
→タイトルは「(URL) says: のページ」

・Safari
→タイトルは特になし
→メッセージ上部に「(URL)」を表示

・Opera
→タイトルは「JavaScript」
→メッセージ上部に「<(URL)>」を表示

※(URL)は現在開いているページのURL
分類:ブラウザ、JavaScript
PHP/連想配列のキーを論理型にしてみる
2012年01月20日
「echo TRUE;」は「1」(※)で、「echo FALSE;」は「」(空文字)だったりするわけだが
んじゃ、連想配列のキーにしてみたら…?
┌──────────────────────────────────────┐
│$a[TRUE]  = 'a';                                                            │
│$a[FALSE] = 'b';                                                            │
└──────────────────────────────────────┘
ってのを用意して、
┌──────────────────────────────────────┐
│print_r($a);                                                                │
└──────────────────────────────────────┘
ってやるわけですよ。

結果はこう。
┌──────────────────────────────────────┐
│Array ( [1] => a [0] => b )                                                 │
└──────────────────────────────────────┘

ま、想定通りといえば想定通り、意外といえば意外かも。

直接こんな書き方はしないだろうが、変数とかを介して
意図せずして(?)こういうケース(論理型をキーにしてしまうケース)に出くわすのでは。

※でもね、この「1」は「=== TRUE」では真だが「=== 1」や「=== '1'」では偽だ。
  まぎれもなく、「TRUE」のようだ。これ注意ね。
分類:PHP配列
jQuery/セレクタのAND条件・OR条件
2012年01月19日
セレクタで「prefix_xxxx_suffix」みたいなIDを絞り込む方法はこれ
┌──────────────────────────────────────┐
│$("[id^=predix_][id$=_suffix]")                                             │
└──────────────────────────────────────┘
いわゆるAND条件ってやつだね。

「prefix_xxxx」も「xxxx_suffix」も(もちろん「prefix_xxxx_suffix」も)OKな
OR条件にするには「,」をつかう。
┌──────────────────────────────────────┐
│$("[id^=predix_],[id$=_suffix]")                                            │
└──────────────────────────────────────┘

さらにinputタグのtext属性(いわゆる入力欄)もAND条件でつけるとしたらこんな感じか。
┌──────────────────────────────────────┐
│$(":text[id^=predix_],:text[id$=_suffix]")                                  │
└──────────────────────────────────────┘

「((A && B) || (A && C))」みたいな感じだね。
分類:jQuery
jQuery/いろいろあるよね(2)
2012年01月18日
┌──────────────────────────────────────┐
│(1) $(this).css({backgroundColor:'#FF0000'});                               │
│(2) $(this).attr("style","background-color:#FF0000");                       │
│(3) $(this)[0].style.backgroundColor = "#FF0000"                            │
└──────────────────────────────────────┘
こいつらも全部同じ。

微妙に「backgroundColor」と「background-color」が違うから注意。

う~ん、ややこしや~。

例えば、tableタグで列を一つクリックすると行の色が変わる、みたいな処理でも
こう書くこともできれば
┌──────────────────────────────────────┐
│$("td").click(function() {                                                  │
│  $(this).parent().children().css({backgroundColor:'#FF0000'});             │
│});                                                                         │
└──────────────────────────────────────┘
こう書くこともできる。
┌──────────────────────────────────────┐
│$("td").click(function() {                                                  │
│  $(this).parent().children().attr("style","background-color:#FF0000");     │
│});                                                                         │
└──────────────────────────────────────┘
他にもいろいろあるよね。
分類:jQuery
前へ 1 … 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 … 156 次へ