MW211 EXIT

devlog
PHP/タイムスタンプ型の値を1ヶ月後にする方法
2012年06月19日
まずは、「YYYY-MM-DD HH:II:SS +1 month」をstrtotime()で変換するために
文字列を編集する方法。
┌──────────────────────────────────────┐
│$timestamp = strtotime(date('Y-m-d H:i:s', $timestamp) . ' +1 month');      │
└──────────────────────────────────────┘
なんかまわりぐといような。。。

続いて、現在から1ヶ月後のタイムスタンプから現在のタイムスタンプを差し引いて
1ヶ月分のタイプスタンプを求め加える方法。
┌──────────────────────────────────────┐
│$timestamp += (strtotime('+1 month') - time());                             │
└──────────────────────────────────────┘
1ヶ月分のタイプスタンプがダイレクトに取得できればいいのだが。。。

★これはダメなことが後日判明しました
  詳しくは【訂正】で
分類:PHP
【未解決】jQuery/複数行のグループ化処理
2012年06月18日
例えば四行で一グループで、見出し列がrowspanで結合されていたりする明細で
まとめて処理をする方法はないものか。

こんな風になってしまう。。。
┌──────────────────────────────────────┐
│                     $(this).find(':checkbox').each(function() { 処理 });   │
│              $(this).next().find(':checkbox').each(function() { 処理 });   │
│       $(this).next().next().find(':checkbox').each(function() { 処理 });   │
│$(this).next().next().next().find(':checkbox').each(function() { 処理 });   │
└──────────────────────────────────────┘
分類:jQuery、【未解決】
Smarty/一覧を横に並べる
2012年06月16日
テーブルを四行毎に改行して、二列に並べたい場合の例は以下のとおり。
┌──────────────────────────────────────┐
│{section name=列 start=1 loop=2+1}                                          │
│{if ($配列|@count) > (($smarty.section.列.index - 1) * 4)}                  │
│                                                                            │
│<table>                                                                     │
│                                                                            │
│{foreach name=データ from=$配列 key=KEY item=VALUE}                         │
│{if ($smarty.foreach.データ.index <  ($smarty.section.列.index       * 4))  │
│ && ($smarty.foreach.データ.index >= (($smarty.section.列.index - 1) * 4))} │
│                                                                            │
│<tr>…</tr>                                                                 │
│                                                                            │
│{/if}                                                                       │
│{/foreach}                                                                  │
│                                                                            │
│</table>                                                                    │
│                                                                            │
│{/if}                                                                       │
│{/section}                                                                  │
└──────────────────────────────────────┘
もう少し改善したいものだ。
分類:Smarty、【未解決】
PostgreSQL/一定期間の配列を求める
2012年06月15日
例えば、本日の11:30から12:29までの「年月日時分(yyyymmddhhii)」の文字列を
配列で求めたい場合、どうすればよいか。

「generate_series()」という配列を生成する便利な関数があるので、
以下のように編集してあげればよい。
┌──────────────────────────────────────┐
│SELECT to_char(current_date, 'yyyymmdd') || CASE WHEN generate_series < 0   │
│         THEN to_char(generate_series + 60, 'FM1100')                       │
│         ELSE to_char(generate_series     , 'FM1200')                       │
│       END AS "yyyymmddhhii"                                                │
│    FROM generate_series(-30, 29, 1);                                       │
└──────────────────────────────────────┘

しかし、「generate_series()」は日時のループもできるので、直接以下でもOK。
┌──────────────────────────────────────┐
│SELECT to_char(current_date, 'yyyymmdd')                                    │
│    || to_char(generate_series, 'FMhhmi') AS "yyyymmddhhii"                 │
│    FROM generate_series(TIMESTAMP '2001-01-01 11:30:00',                   │
│                         TIMESTAMP '2001-01-01 12:29:00',                   │
│                         '1 minute')                                        │
└──────────────────────────────────────┘

で、本日の11:30から12:29までをループさせるという完成形は以下のとおり。
┌──────────────────────────────────────┐
│SELECT to_char(generate_series, 'yyyymmddhhmi') AS "yyyymmddhhii"           │
│    FROM generate_series(current_date + interval '11:30',                   │
│                         current_date + interval '12:29',                   │
│                         interval '00:01')                                  │
└──────────────────────────────────────┘
これは便利。
分類:PostgreSQL
PostgreSQL/本日の正午を求める
2012年06月14日
┌──────────────────────────────────────┐
│SELECT CURRENT_DATE + INTERVAL '12:00';                                     │
└──────────────────────────────────────┘

他の時刻も自由自在。
┌──────────────────────────────────────┐
│SELECT CURRENT_DATE + INTERVAL '13:30:59';                                  │
└──────────────────────────────────────┘
分類:PostgreSQL
PostgreSQL/最大値を更新(1)
2012年06月13日
「更新表.最大」に「入力表.値」を更新しようとするのだが、
「入力表.値」が「更新表.最大」よりも大きい時という条件が付く場合。
(最大値を随時比較して更新していく場合などがこのパターンとなるだろう)
┌──────────────────────────────────────┐
│UPDATE 更新表                                                               │
│  SET 最大 = COALESCE((SELECT 入力表.値                                     │
│                         FROM 入力表                                        │
│                         WHERE 入力表.キー = 更新表.キー                    │
│                           AND (入力表.値 > 更新表.最大                     │
│                             OR 更新表.最大 IS NULL)                        │
│                      ),                                                    │
│                      最大);                                                │
└──────────────────────────────────────┘

「入力表.値」が複数あって最大値を集計した上でという場合には以下の通り。
┌──────────────────────────────────────┐
│UPDATE 更新表                                                               │
│  SET 最大 = COALESCE((SELECT MAX(入力表.値)                                │
│                         FROM 入力表                                        │
│                         WHERE 入力表.キー = 更新表.キー                    │
│                         HAVING MAX(入力表.値) > 更新表.最大                │
│                             OR 更新表.最大 IS NULL                         │
│                      ),                                                    │
│                      最大);                                                │
└──────────────────────────────────────┘

もしかしてもっと簡単な方法がある?
分類:PostgreSQL
jQuery/表示と非表示
2012年06月08日
行の表示・非表示を切り替えたいので、以下のように実装してみた。
┌───┬──────────────────────────────────┐
│ 表示 │$('tr').css('display', 'block');                                    │
├───┼──────────────────────────────────┤
│非表示│$('tr').css('display', 'none');                                     │
└───┴──────────────────────────────────┘

ところが、IEではうまくいくのに、FirefoxやChromeだと
再表示(非表示→表示)の時にテーブルイメージが崩れてしまう。
どうも、再表示時に、元に戻るのではなく、
下の階層に追加されるような感じになっているっぽい(よくわからんが)。

困ったなと思ったところ、jQueryではこれらへの対応がなされているらしく、
以下で代替したら、想定通り再表示時に元に戻った。
┌───┬──────────────────────────────────┐
│ 表示 │$('tr').show();                                                     │
├───┼──────────────────────────────────┤
│非表示│$('tr').hide();                                                     │
└───┴──────────────────────────────────┘

ちなみに、「A」属性の行を非表示にするチェックボックスは以下のようになる。
┌──────────────────────────────────────┐
│$('#notA').click(function() {                                               │
│  if ($(this).prop('checked')) {                                            │
│    $('tr.A').hide();                                                       │
│  } else {                                                                  │
│    $('tr.A').show();                                                       │
│  }                                                                         │
│});                                                                         │
└──────────────────────────────────────┘
分類:jQuery
PostgreSQL/数値を文字列化
2012年06月07日
PostgreSQLで数値を文字列化するには、「to_char()」を使ったりする。
┌──────────────────────────────────────┐
│to_char(数値, '99')                                                         │
└──────────────────────────────────────┘

でも、書式を明記しなければならず、以下のような場合はエラーとなる。
┌──────────────────────────────────────┐
│to_char(数値)                                                               │
└──────────────────────────────────────┘

一方、文字列結合「||」を使うと、数値も文字列に変換してくれる。
┌──────────────────────────────────────┐
│数値 || 数値                                                                │
└──────────────────────────────────────┘

ということで、以下のように空文字と結合させれば、数値を書式なしで文字列化できる。
┌──────────────────────────────────────┐
│数値 || ''                                                                  │
└──────────────────────────────────────┘

でも、なんかこれって裏技っぽい。

キャストしてしまうって手もあるが、これも裏技っぽい。
┌──────────────────────────────────────┐
│数値::text                                                                  │
└──────────────────────────────────────┘

「to_char(数値, '')」とかしてみてもダメ。

ま、そんなもんなのかな。。。
分類:PostgreSQL
CSS/z-indexには…
2012年06月06日
「z-index:1」には「position:relative」を忘れずに。
#他に「position:absolute」でも「position:fixed」でもいいけど。

これらがないと「z-index」はいくら指定しても効きません。

はまりました。。。
分類:CSS
PHP/配列に追加
2012年06月05日
ある配列に値を追加していきたいのだが、既に値があるものは回避して
新入りだけを追加したい場合の方法(もっと簡単な方法がありそうだが)。

【案1】とりあえず追加だけしちゃって一意にしなおす方法
┌──────────────────────────────────────┐
│$配列[] = $値;                                                              │
│$配列 = array_unique($配列);                                                │
└──────────────────────────────────────┘
これだと、結構キー(添字)が歯抜けになってしまうので、
「array_merge(array_unique($配列))」も併用したいところ。

【案2】追加前にないことを確認する方法
┌──────────────────────────────────────┐
│if (!in_array($値, $配列)) {                                                │
│  $配列[] = $値;                                                            │
│}                                                                           │
└──────────────────────────────────────┘
分類:PHP配列
前へ 1 … 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 … 156 次へ