2010年1月23日土曜日

Simple@Idx 2010/01/23

2010年、最初のSimple。
お題目は「俺々ツールの拡張」 。
ツールの名前はfmDB3。面白くない名前だ。何をするかというと、DBの登録・修正・削除を簡単に行うツール。なんというかRailsみたいな感じだろうか。

2010年1月21日木曜日

PHP::いろんな日付のフォーマットを統一するクラス

知り合いがTwitterでつぶやいたので、PHPでさくっと作ってみた。
いろんな日付+時間の入力を統一するクラスです。




使い方:
echo my_datetime::parse_datetime( 'Wed, 21 Jan 2010 11:41:25 +0000' );

出力:
2010-01-27 11:41:25

コード:

class my_datetime {
 /* ------------------------------------------------------------ */
 function parse_datetime( $str )
 {
  $date = self::std_date( $str, $e_part );
  $time = self::std_time( $str );
  
  return trim( "$date $time" );
 }
 /* ------------------------------------------------------------ */
 function std_time( $time )
 {
  if( preg_match( '/([0-9]{1,2})[:]([0-9]{1,2})[:]([0-9]{1,2})/', $time, $regs ) ) {
   list( $h, $m, $s ) = array( $regs[1], $regs[2], $regs[3] );
   $t_part = sprintf( "%4d:%02d:%02d", $h, $m, $s );
  }
  else 
  if( preg_match( '/([0-9]{1,2})時([0-9]{1,2})分([0-9]{1,2})秒/', $time, $regs ) ) {
   list( $h, $m, $s ) = array( $regs[1], $regs[2], $regs[3] );
   $t_part = sprintf( "%4d:%02d:%02d", $h, $m, $s );
  }
  return $t_part;
 }
 /* ------------------------------------------------------------ */
 function std_date( $date, &$e_part )
 {
  if( preg_match( '/([0-9]{4})[-.\/]([0-9]{1,2})[-.\/]([0-9]{1,2})(.*)/', $date, $regs ) ) {
   list( $year, $month, $day ) = array( $regs[1], $regs[2], $regs[3] );
   $d_part = sprintf( "%4d-%02d-%02d", $year, $month, $day );
   $e_part = $regs[4];
  }
  else 
  if( preg_match( '/([0-9]{4})年([0-9]{1,2})月([0-9]{1,2})日(.*)/', $date, $regs ) ) {
   $e_part = NULL;
   list( $year, $month, $day ) = array( $regs[1], $regs[2], $regs[3] );
   $d_part = sprintf( "%4d-%02d-%02d", $year, $month, $day );
   $e_part = $regs[4];
  }
  else 
  if( ereg( '([0-9]{4})([012][0-9])([012][0-9])(.*)', $date, $regs ) ) {
   list( $year, $month, $day ) = array( $regs[1], $regs[2], $regs[3] );
   $d_part = sprintf( "%4d-%02d-%02d", $year, $month, $day );
   $e_part = $regs[4];
  }
  else 
  if( ( $utime = strtotime( $date ) ) !== FALSE ) {
   $d_part = date( 'Y-m-d', $utime );
  }
  return $d_part;
 }
}

すでに似たようなクラスを持ってたので、ちょっと手を加えてみました。
と、ひとまず、こんな感じでどうでしょう?

新サイトアップとメール設定完了

ふぅ、新サイトのアップが完了しました。
トップページだけ、jQueryを使って簡単な動きを出しました。まったくの静的ページじゃ面白くないし、凝ると大変だし。結局、画像の透過率(Opacity)の変化だけになりました。余り意味のある動きではないのですが、まぁいいでしょう。

2010年1月5日火曜日

SQLでの空白をどうしよう?

SQL文をPHPで生成させる場合、空白のデータをどう扱うか悩んでいます。ウェブフォームでテキスト(form_text)や日付(form_date)という入力があったとして、何も入れていない場合です。ここから次のようなSQLを作成すると、
UPDATE table SET form_text='', form_date='';
日付は空白設定できないといって怒られるはずです。