mk_5884 Programming

自分で調べたIT関連のことなどを書いています

php 指定した月の翌月を取得する

意外と面倒くさいのよ

echo date('Y-m-01', strtotime('20141203'.'+1 month'));

ただし、これだと3/31の翌月一日が4/1ではなく5/1になることが判明。

3/31 -> 4/31 -> 5/1 と解釈されるらしい。

なので、

$first = date('Y-m-01', strtotime('20150331'));
↑3/31の一日を取得

echo date('Y-m-01', strtotime($first.'+1 month'));
↑それの翌月を取得

とするといいみたい。
意外と面倒くさいのよ。

 

バッチを投げた時に勝手に出来る変数について

/usr/local/bin/php /home/www/batch/hoge.php aaa bbb

 みたいなバッチを投げた時

 ▼var_dump($argv);

array(3) {

 [0]=>

  string(50) "/home/www/batch/hoge.php"

  [1]=>

  string(3) "aaa"

  [2]=>

  string(3) "bbb"

}

 ▼var_dump($argc);

⇒3(配列の数)

が入ります。

 

おまけ。よく忘れるので。

PHP_EOL

⇒改行

quoteではNOW() とか使えない

こんなような処理が動いている場合、quoteしちゃってるので文字列のNOW()が入ってしまい

エラーになる。正確には「0000-00-00 00:00:00」がはいってしまう。

 

if ($now) {

    $startDate = "NOW()";

} else {

    $startDate = "DATE_FORMAT(ADDDATE(CURDATE(), INTERVAL 1 MONTH), '%Y-%m-01')";

}

 

$sql = sprintf(

        "

        INSERT INTO table (

       start_date ,

        )

        VALUES (

        %s

        )"

        ,$this->_DB->quote($startDate)

);

 $this->_DB->query($sql);

 

なので、こーゆー時は

 

$this->_DB->quote($startDate)

 

ではなく

 

$startDate

 

でやること。

 

PEAR オートコミットを禁止する方法

phpPEARを使用、DBはmysqlを使用。

 

phpSQLを書く時、オートコミットが有効だと都度アップデートされる。

嫌な場合は、「$db->autoCommit(false)」を記載してからはじめればOK。

そうすることで、「$db->rollback(false)」も動くし、「$db->commit()」でコミットされるようになります。

ちなみに、begin する必要はないらしい。

「$db->autoCommit(false)」をすると自動でスタートするみたいです。

経験則から。

 

http://pear.php.net/manual/ja/package.database.db.db-common.autocommit.php

【エクセル、スプレッドシート】ファイル名が重複しているものに対して「重複!」と出す方法

今日仕事してたら急にブルースクリーンになって焦った。
netbeansって、たまにPCごと落とすよね?違う理由なのかな?

それはされおき。

以下の画像のように、

f:id:mk_5884:20150213221429p:plain

・ 「本番反映」列が「未」の中で、ファイル名が重複しているものに対して「重複?」列に「重複!」と出す
・ 「本番反映」列が「済」のものは、いくら重複していても「重複?」列に何も出さない

を実現するには

=IF(AND(A2="未",COUNTIFS(A:A,"未",B:B,B2)>1),"重複","")

このように書きます。
エクセルで実現可能。
スプレッドシートは、新しいバージョンのものなら可能。
古いものはCOUNTIFSが使えない。
今以降新規でファイルを作った場合、勝手に新しいバージョンになります。
ちなみに新しいバージョンのスプレッドシートは右下にチェックがつきます。
マクロ勉強しようかなぁ。
 

▼参考(ありがとうチエリアン!)

エクセルで以下を実現するための関数を教えていただけないでしょうか。... - Yahoo!知恵袋

Zendframework 自動Viewの設定を手動で変更する

以下のphpファイルにこんな関数があったとして。

/controllers/RegisterController.php

function successAction() {
    try {
        //ここは、自動で/views/scripts/register/success.html を参照する
    } catch( Exception $e ) {
        //これで、/views/scripts/register/error.html を参照するように出来る
        $this->render('error');
    }
}

▼[PHP]Zend で自動レンダリングモードがオンの場合の、View スクリプトの切り替え手法。まとめ。
http://en.yummy.stripper.jp/?eid=1153909