MW211 EXIT

devlog
PHP/name属性のないform部品
2012年02月16日
┌──────────────────────────────────────┐
│<input type="hidden" name="キー" value="値"/>                               │
└──────────────────────────────────────┘
formの中に上記のようなものを定義して(POSTで)submitすると、
飛び先に「$_POST['キー'] = '値'」みたいな情報(POSTパラメータ)が渡される。

以下のようにname属性を定義しないと何も渡されない。
┌──────────────────────────────────────┐
│<input type="hidden" value="値"/>                                           │
└──────────────────────────────────────┘

なので、JavaScriptでいろいろするために以下のようなhidden属性を定義すれば
POSTパラメータに影響を与えることはない。
┌──────────────────────────────────────┐
│<input type="hidden" id="キー" value="値"/>                                 │
└──────────────────────────────────────┘

┌──────────────────────────────────────┐
│<input type="submit" name="submit" value="決定"/>                           │
└──────────────────────────────────────┘
ちなみに、上記のようなsubmitボタンを定義して、押された場合
「$_POST['submit'] = '決定'」みたいな情報が渡されるが、
以下のようにname属性を定義しないと何も渡されない。
┌──────────────────────────────────────┐
│<input type="submit" value="決定"/>                                         │
└──────────────────────────────────────┘
分類:PHP
PHP/アクセス修飾子の組み合わせ(1)
2012年02月15日
継承した時のアクセス修飾子の組み合わせってどうなのかをまとめてみた。

┌──────────────────────────────────────┐
│class 親 {                                                                  │
│  public $a = '親';  ←★                                                   │
│}                                                                           │
├──────────────────────────────────────┤
│class 子 extends 親 {                                                       │
│  public $a = '子';  ←★                                                   │
│  public function method() {                                                │
│    return $this->a;                                                        │
│  }                                                                         │
│}                                                                           │
└──────────────────────────────────────┘
上記のようなクラスで、以下のようにechoした場合、
★の部分のアクセス修飾子の組み合わせで、どうなるのかを調べた。
┌──────────────────────────────────────┐
│$子 = new 子();                                                             │
│echo $子->method();                                                         │
└──────────────────────────────────────┘

結果は以下の通り(×はエラー)。
┌─────┬─────┬─────┬─────┬─────┐
│  親\子  │(定義なし)│ private  │protected │  public  │
├─────┼─────┼─────┼─────┼─────┤
│(定義なし)│    ×    │    子    │    子    │    子    │
├─────┼─────┼─────┼─────┼─────┤
│private   │    ×    │    子    │    子    │    子    │
├─────┼─────┼─────┼─────┼─────┤
│protected │    親    │    ×    │   (子)   │   (子)   │
├─────┼─────┼─────┼─────┼─────┤
│public    │    親    │    ×    │    ×    │   (子)   │
└─────┴─────┴─────┴─────┴─────┘
個人的に一方のみ定義するか、一方はprivateってのが美しい形なのではないかと思う。
よって、イレギュラーだと思うものを括弧書きにした。
これらはいわゆるオーバーライド(問答無用の上書)ってやつだ。
後はエラーになるケースを抑えておきたいところだ。
分類:PHP
PHP/SQLインジェクション対策における%と_
2012年02月14日
LIKE演算子とセットで使うワイルドカードの「%」と「_」。
「'」とかと同じものだから、所定の手続きをとれば上手い具合に
やってくれそうな錯覚におそわれる。

例えば、addslashes()では何もしてくれない。

検索文字中に「%」や「_」が含まれている場合には
自力で「\%」や「\_」にしなきゃならない

「WHERE name LIKE %サクラ\%オー%」みたいになればよい

ついでに「\」も「\\」にしなければならない。
分類:PHP、PDO
JavaScript/特定の文字が何文字含まれているか
2012年02月13日
┌──────────────────────────────────────┐
│文字数 = 対象.length - 対象.replace(/文字/g, "").length;                    │
└──────────────────────────────────────┘
数えたい文字を除去してしまい、その前後で文字数を比較すれば、
文字数がわかるという魂胆。

┌──────────────────────────────────────┐
│2 = "いっぱい".length - "いっぱい".replace(/い/g, "").length;               │
└──────────────────────────────────────┘
みたいな感じ。
分類:JavaScript
CSS/幅のem指定
2012年02月12日
「1em」はなぜか半角1文字分の横幅ではなく、全角1文字分の横幅と同じ。

あれ、日本語の人が決めた規格なの?なぜに全角?

と思ったら、横幅ではなく縦幅が基準なんだって。

なっとく。

※等幅フォント(横幅×2=縦幅)を前提としたお話です
分類:CSS
(無題)
2012年02月11日
Happy Birthday to You!
JavaScript/置換の罠
2012年02月10日
「.replace(置換前,置換後)」は一文字しか置換しないので注意。

「"いっぱい".replace("い","お")」の結果は、
「おっぱい」であって「おっぱお」ではない。

全部置換したい場合には正規表現を使ってしまえ。
「"いっぱい".replace(/い/g,"お")」

「g」パラメータを使う。
また、「"」で囲う必要がないのにも注意。
分類:注意、JavaScript
JavaScript/フォームに要素を追加
2012年02月09日
┌──────────────────────────────────────┐
│function $(inId) {return document.getElementById(inId);}                    │
└──────────────────────────────────────┘
と定義していることを前提として。

JavaScriptで、idが「form」というフォームに、「$_POST['キー'] = '値'」みたいな
hidden属性を追加するには以下のような感じになる。
┌──────────────────────────────────────┐
│var addEle = document.createElement("input");                               │
│addEle.type  = "hidden";                                                    │
│addEle.name  = "キー";                                                      │
│addEle.value = "値";                                                        │
│$("form").appendChild(addEle);                                              │
└──────────────────────────────────────┘

ちなみに、jQueryだと以下みたいに簡単にできる。
┌──────────────────────────────────────┐
│$("#form").append('<input type="hidden" name="キー" value="値"/>');         │
└──────────────────────────────────────┘
分類:JavaScript
SQL/相関問い合わせ
2012年02月08日
例えば、個人が所属している団体名を表示させるSQLの場合、以下のような感じになる。
┌──────────────────────────────────────┐
│SELECT 個人.名称,                                                           │
│       団体.名称                                                            │
│    FROM 個人                                                               │
│        LEFT JOIN 団体                                                      │
│          ON 団体.団体コード = 個人.団体コード                              │
└──────────────────────────────────────┘
じゃ、無所属の個人のみを抽出したい場合は?となると、
以下のようにWHERE句をつけると、簡単に移行できる。
┌──────────────────────────────────────┐
│SELECT 個人.名称                                                            │
│    FROM 個人                                                               │
│        LEFT JOIN 団体                                                      │
│          ON 団体.団体コード = 個人.団体コード                              │
│    WHERE 団体.主キー IS NULL;                                              │
└──────────────────────────────────────┘
しかし、この手抜きSQL文は本格的になると
結構、問い合わせに時間がかかってしまうようだ。

で、この場合は、相関問い合わせに移行してしまった方がよいようだ。
┌──────────────────────────────────────┐
│SELECT 個人.名称                                                            │
│    FROM 個人                                                               │
│    WHERE NOT EXISTS (SELECT 団体.主キー                                    │
│                          FROM 団体                                         │
│                          WHERE 団体.団体コード = 個人.団体コード           │
│                     );                                                     │
└──────────────────────────────────────┘
結果はどちらも同じなので、簡単な前者のままにしてしまって
後で、遅い遅いと問題になるかもしれないから注意。
分類:SQL
CSS/空欄に文字を追加表示する時の注意点
2012年02月07日
空欄(横幅なし)のdivタグに、JavaScriptで文字を(追加)表示させると
一文字ずつ自動改行されて、縦表示になるブラウザがあるようだ。
#ChromeとSafariがそれ(InternetExplorer、FireFox、Operaは大丈夫)

回避策としてはdivタグにCSSとして「white-space:nowrap;」を
定義してあげるとよいようだ。
分類:CSS、注意
前へ 1 2 3 次へ