SlideShare uma empresa Scribd logo
1 de 29
Code sucks 人の振り見て 我が振り直せ 第7回社内勉強会
テーマ ,[object Object],[object Object],[object Object]
お約束 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
その1 ,[object Object],[object Object]
月の最終日を取得したいらしい //  検索月の末日を取得 switch( $s_month ) { case 2: $last_day = 28; if (  ( $year % 4 ) == 0  ) { $last_day = 29; } break;
閏年(via Wikipedia) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
ポイントをもう一度 ,[object Object],[object Object],[object Object]
コードをもう一度 //  検索月の末日を取得 switch( $s_month ) { case 2: $last_day = 28; if (  ( $year % 4 ) == 0  ) { $last_day = 29; } break;
コンピュータシステムと閏年 ,[object Object],[object Object]
二段オチ $today = time(); $s_year  = date( "Y", $today); $s_month = date( "m", $today); $s_day = 1; $e_year  = date( "Y", $today); $e_month = date( "m", $today); //  検索月の末日を取得 switch( $s_month ) { case 2: $last_day = 28; if ( (  $year  % 4 ) == 0 ) { $last_day = 29; } break; } $ php -r "var_dump ( $year )  ; " NULL $ php -r "echo  NULL  % 4 ; " 0   ↓ 毎年閏年になるじゃん
正解は $last_day = date("t") ; http://jp2.php.net/manual/ja/function.date.php
その2 ,[object Object],[object Object],[object Object]
こんなリストがありました ,[object Object],[object Object]
ソースをチェックしてみた $column_names = array( ' 商品名 ', ' 商品種別 ', ' 重量 ', ' 備考 ', ) ; イヤな予感!!
テーブルをチェックしてみた mysql> describe item_master ; +--------------+---------+------+-----+---------+-------+ | Field  | Type  | Null | Key | Default | Extra | +--------------+---------+------+-----+---------+-------+ | item_id  | int(11) | NO  |  | NULL  |  | | column_type  | int(11) | NO  |  | NULL  |  | | column_value | text  | YES  |  | NULL  |  | +--------------+---------+------+-----+---------+-------+    _, ._ (;゚  Д ゚)
データをチェックしてみた mysql> SELECT * FROM item_master ; (  ゚ д ゚ ) ( つ д⊂) ゴシゴシ ( ;゚ д ゚ ) ( つ д⊂) ゴシゴシ    _, ._ (;゚  Д ゚) …? ! ( つ д⊂) ゴシゴシゴシゴシゴシ ( ;  Д   ) !!
まあ落ち着け ,[object Object],[object Object],[object Object]
ロジックをチェックしてみた // $result には表示対象の商品コードが入っている while ($data = mysql_fetch_array($result)) { for ($i = 0 ; $i < count($column_names) ; $i ++) { $sql = &quot;SELECT * FROM item_master&quot; . &quot;  WHERE item_id  = {$data['item_id']}&quot; . &quot;  AND column_type = {$i}&quot; ; $ret  = mysql_query($sql) ; $item = mysql_fetch_array($ret) ; echo &quot;<td>{$column_names[$item['column_type']]}</td>&quot; ; echo &quot;<td>{$item['column_value']}</td>&quot; ; } }
正解は ,[object Object],http://www.kogures.com/hitoshi/webtext/db-seikika/index.html
補足 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
その3 ,[object Object]
コネタその1 if( $order == _SER_ORDER_LAST_ ) { //  前日閲覧数順 } elseif( $order == _SER_ORDER_NEW_ ) { //  新着順 } elseif( $order == _SER_ORDER_FAV_ ) { //  登録数順 } else { //  更新順 } switch – case を 使え!!
コネタその2 // $iRecCnt( レコード数 ) が1以外なら //  不正アクセスらしい。 if($iRecCnt>1){ $strAttentMessage = &quot; 不正なアクセスです。 &quot;; } if($iRecCnt==0){ $strAttentMessage = &quot; 不正なアクセスです。 &quot;; } $iRecCnt != 1 じゃ ダメなの?
コネタその3 //  取ってきたレコードを変数展開したいらしい。 $sorter = $aRecData[0][c_sorter]; $page_title = $aRecData[0][c_page_title]; $page_content = $aRecData[0][c_page_content]; $mailflg = $aRecData[0][c_mail]; $signflg = $aRecData[0][c_sign]; $backlink = $aRecData[0][c_backlink]; $name = $aRecData[0][tname]; $cl_bg = $aRecData[0][color_bg]; $cl_text = $aRecData[0][color_text]; $cl_link = $aRecData[0][color_link]; $cl_vlink = $aRecData[0][color_vlink]; $cl_hr = $aRecData[0][color_hr]; $cl_title = $aRecData[0][color_title]; extract($aRecData[0]) ;  じゃ ダメなの?
コネタその4 (1/3) //  なんだかいろんなコネクションがある。 // INSERT 祭りが始まるようだ。 $conn->begin_trans(); $conn_sub->begin_trans(); $conn_s->begin_trans(); $conn_msg->begin_trans(); $conn_ad->begin_trans(); $conn_foo->begin_trans() ; $conn_bar->begin_trans() ;
コネタその4 (2/3) //  ちょっと行数が多くて心が折れそうだが、 //  処理にしくじったらロールバックさせたいようだ。 if(!$conn->execute($strQue)) { $conn->rollback(); $conn_sub->rollback(); $conn_s->rollback(); $conn_msg->rollback(); $conn_ad->rollback(); $conn_foo->rollback() ; $conn_bar->rollback() ; db_regist_error($conn); }
コネタその4 (3/3) ,[object Object],$ grep conn-gt;rollback hoge.php | wc -l 29 全部、手で 保守する気?
まとめ ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
おしまい ,[object Object]

Mais conteúdo relacionado

Mais procurados

Perl RDBMS Programming(DBI/DBIx::Sunnyのはなし)
Perl RDBMS Programming(DBI/DBIx::Sunnyのはなし)Perl RDBMS Programming(DBI/DBIx::Sunnyのはなし)
Perl RDBMS Programming(DBI/DBIx::Sunnyのはなし)karupanerura
 
カーネル密度推定を用いた店舗情報の可視化
カーネル密度推定を用いた店舗情報の可視化カーネル密度推定を用いた店舗情報の可視化
カーネル密度推定を用いた店舗情報の可視化Kanetaka Heshiki
 
USP 友の会 LT 資料 20130413
USP 友の会 LT 資料 20130413USP 友の会 LT 資料 20130413
USP 友の会 LT 資料 20130413博文 斉藤
 
bash(set)コマンドのオプション3選
bash(set)コマンドのオプション3選bash(set)コマンドのオプション3選
bash(set)コマンドのオプション3選Yuuki Namikawa
 
Stroustrup11章雑感
Stroustrup11章雑感Stroustrup11章雑感
Stroustrup11章雑感31 00
 
PCさえあればいい。
PCさえあればいい。PCさえあればいい。
PCさえあればいい。bleis tift
 
知って得する標準関数の使い方
知って得する標準関数の使い方知って得する標準関数の使い方
知って得する標準関数の使い方Soudai Sone
 
Redis Intro Osc2010 Tokyo Spring
Redis Intro Osc2010 Tokyo SpringRedis Intro Osc2010 Tokyo Spring
Redis Intro Osc2010 Tokyo SpringMakoto Ohnami
 
20131102 第7回シェル芸勉強会
20131102 第7回シェル芸勉強会20131102 第7回シェル芸勉強会
20131102 第7回シェル芸勉強会Ryuichi Ueda
 
PHP foreachでの参照渡しに潜む罠
PHP foreachでの参照渡しに潜む罠PHP foreachでの参照渡しに潜む罠
PHP foreachでの参照渡しに潜む罠Takaaki Hirano
 
2015年度 第1回バイオインフォマティクス実習
2015年度 第1回バイオインフォマティクス実習2015年度 第1回バイオインフォマティクス実習
2015年度 第1回バイオインフォマティクス実習Jun Nakabayashi
 
PHPBLT#6 PHPの未来に入るかもしれない機能の紹介
PHPBLT#6 PHPの未来に入るかもしれない機能の紹介PHPBLT#6 PHPの未来に入るかもしれない機能の紹介
PHPBLT#6 PHPの未来に入るかもしれない機能の紹介sters
 
Elixirだ 第1回強化版 後半
Elixirだ 第1回強化版 後半Elixirだ 第1回強化版 後半
Elixirだ 第1回強化版 後半Joe_noh
 
Elixirだ 第2回
Elixirだ 第2回Elixirだ 第2回
Elixirだ 第2回Joe_noh
 

Mais procurados (20)

データベース定義書とER図【勉強会資料】
データベース定義書とER図【勉強会資料】 データベース定義書とER図【勉強会資料】
データベース定義書とER図【勉強会資料】
 
Perl RDBMS Programming(DBI/DBIx::Sunnyのはなし)
Perl RDBMS Programming(DBI/DBIx::Sunnyのはなし)Perl RDBMS Programming(DBI/DBIx::Sunnyのはなし)
Perl RDBMS Programming(DBI/DBIx::Sunnyのはなし)
 
メモリ管理の話_エスキュービズム勉強会20140926
メモリ管理の話_エスキュービズム勉強会20140926メモリ管理の話_エスキュービズム勉強会20140926
メモリ管理の話_エスキュービズム勉強会20140926
 
MongoDBの使い方
MongoDBの使い方MongoDBの使い方
MongoDBの使い方
 
カーネル密度推定を用いた店舗情報の可視化
カーネル密度推定を用いた店舗情報の可視化カーネル密度推定を用いた店舗情報の可視化
カーネル密度推定を用いた店舗情報の可視化
 
USP 友の会 LT 資料 20130413
USP 友の会 LT 資料 20130413USP 友の会 LT 資料 20130413
USP 友の会 LT 資料 20130413
 
bash(set)コマンドのオプション3選
bash(set)コマンドのオプション3選bash(set)コマンドのオプション3選
bash(set)コマンドのオプション3選
 
Stroustrup11章雑感
Stroustrup11章雑感Stroustrup11章雑感
Stroustrup11章雑感
 
PCさえあればいい。
PCさえあればいい。PCさえあればいい。
PCさえあればいい。
 
知って得する標準関数の使い方
知って得する標準関数の使い方知って得する標準関数の使い方
知って得する標準関数の使い方
 
仮想記憶の構築法
仮想記憶の構築法仮想記憶の構築法
仮想記憶の構築法
 
Redis Intro Osc2010 Tokyo Spring
Redis Intro Osc2010 Tokyo SpringRedis Intro Osc2010 Tokyo Spring
Redis Intro Osc2010 Tokyo Spring
 
20131102 第7回シェル芸勉強会
20131102 第7回シェル芸勉強会20131102 第7回シェル芸勉強会
20131102 第7回シェル芸勉強会
 
as-2. メモリと CPU
as-2. メモリと CPUas-2. メモリと CPU
as-2. メモリと CPU
 
PHP foreachでの参照渡しに潜む罠
PHP foreachでの参照渡しに潜む罠PHP foreachでの参照渡しに潜む罠
PHP foreachでの参照渡しに潜む罠
 
Sword term02
Sword term02Sword term02
Sword term02
 
2015年度 第1回バイオインフォマティクス実習
2015年度 第1回バイオインフォマティクス実習2015年度 第1回バイオインフォマティクス実習
2015年度 第1回バイオインフォマティクス実習
 
PHPBLT#6 PHPの未来に入るかもしれない機能の紹介
PHPBLT#6 PHPの未来に入るかもしれない機能の紹介PHPBLT#6 PHPの未来に入るかもしれない機能の紹介
PHPBLT#6 PHPの未来に入るかもしれない機能の紹介
 
Elixirだ 第1回強化版 後半
Elixirだ 第1回強化版 後半Elixirだ 第1回強化版 後半
Elixirだ 第1回強化版 後半
 
Elixirだ 第2回
Elixirだ 第2回Elixirだ 第2回
Elixirだ 第2回
 

Semelhante a 第7回社内勉強会「Code Sucks - 人の振り見て我が振り直せ」

⑲jQueryをおぼえよう!その5
⑲jQueryをおぼえよう!その5⑲jQueryをおぼえよう!その5
⑲jQueryをおぼえよう!その5Nishida Kansuke
 
textsearch_jaで全文検索
textsearch_jaで全文検索textsearch_jaで全文検索
textsearch_jaで全文検索Akio Ishida
 
拡張ライブラリ作成による高速化
拡張ライブラリ作成による高速化拡張ライブラリ作成による高速化
拡張ライブラリ作成による高速化Kazunori Jo
 
脱コピペ!デザイナーにもわかるPHPとWP_Query
脱コピペ!デザイナーにもわかるPHPとWP_Query脱コピペ!デザイナーにもわかるPHPとWP_Query
脱コピペ!デザイナーにもわかるPHPとWP_QueryHidekazu Ishikawa
 
MySQLerの7つ道具
MySQLerの7つ道具MySQLerの7つ道具
MySQLerの7つ道具yoku0825
 
System select hint_for_h2
System select hint_for_h2System select hint_for_h2
System select hint_for_h2Jun Chiba
 
[東京] JapanSharePointGroup 勉強会 #2
[東京] JapanSharePointGroup 勉強会 #2[東京] JapanSharePointGroup 勉強会 #2
[東京] JapanSharePointGroup 勉強会 #2Atsuo Yamasaki
 
Reladomo in Scala #scala_ks
Reladomo in Scala #scala_ks Reladomo in Scala #scala_ks
Reladomo in Scala #scala_ks Hiroshi Ito
 
Active Support のコア拡張機能について
Active Support のコア拡張機能についてActive Support のコア拡張機能について
Active Support のコア拡張機能についてTomoya Kawanishi
 
EucalyptusのHadoopクラスタとJaqlでBasket解析をしてHiveとの違いを味わってみました
EucalyptusのHadoopクラスタとJaqlでBasket解析をしてHiveとの違いを味わってみましたEucalyptusのHadoopクラスタとJaqlでBasket解析をしてHiveとの違いを味わってみました
EucalyptusのHadoopクラスタとJaqlでBasket解析をしてHiveとの違いを味わってみましたEtsuji Nakai
 
jQuery Performance Tips – jQueryにおける高速化 -
jQuery Performance Tips – jQueryにおける高速化 -jQuery Performance Tips – jQueryにおける高速化 -
jQuery Performance Tips – jQueryにおける高速化 -Hayato Mizuno
 
ActiveResourceが面白すぎる件
ActiveResourceが面白すぎる件ActiveResourceが面白すぎる件
ActiveResourceが面白すぎる件Kazuki MATSUMOTO
 
Maatkit で MySQL チューニング
Maatkit で MySQL チューニングMaatkit で MySQL チューニング
Maatkit で MySQL チューニングKensuke Nagae
 
RとSQLiteで気軽にデータベース作成
RとSQLiteで気軽にデータベース作成RとSQLiteで気軽にデータベース作成
RとSQLiteで気軽にデータベース作成弘毅 露崎
 

Semelhante a 第7回社内勉強会「Code Sucks - 人の振り見て我が振り直せ」 (20)

⑲jQueryをおぼえよう!その5
⑲jQueryをおぼえよう!その5⑲jQueryをおぼえよう!その5
⑲jQueryをおぼえよう!その5
 
textsearch_jaで全文検索
textsearch_jaで全文検索textsearch_jaで全文検索
textsearch_jaで全文検索
 
拡張ライブラリ作成による高速化
拡張ライブラリ作成による高速化拡張ライブラリ作成による高速化
拡張ライブラリ作成による高速化
 
Web 02
Web 02Web 02
Web 02
 
脱コピペ!デザイナーにもわかるPHPとWP_Query
脱コピペ!デザイナーにもわかるPHPとWP_Query脱コピペ!デザイナーにもわかるPHPとWP_Query
脱コピペ!デザイナーにもわかるPHPとWP_Query
 
MySQLerの7つ道具
MySQLerの7つ道具MySQLerの7つ道具
MySQLerの7つ道具
 
Gorinphp0729
Gorinphp0729Gorinphp0729
Gorinphp0729
 
Gorinphp0729
Gorinphp0729Gorinphp0729
Gorinphp0729
 
System select hint_for_h2
System select hint_for_h2System select hint_for_h2
System select hint_for_h2
 
[東京] JapanSharePointGroup 勉強会 #2
[東京] JapanSharePointGroup 勉強会 #2[東京] JapanSharePointGroup 勉強会 #2
[東京] JapanSharePointGroup 勉強会 #2
 
Reladomo in Scala #scala_ks
Reladomo in Scala #scala_ks Reladomo in Scala #scala_ks
Reladomo in Scala #scala_ks
 
Active Support のコア拡張機能について
Active Support のコア拡張機能についてActive Support のコア拡張機能について
Active Support のコア拡張機能について
 
EucalyptusのHadoopクラスタとJaqlでBasket解析をしてHiveとの違いを味わってみました
EucalyptusのHadoopクラスタとJaqlでBasket解析をしてHiveとの違いを味わってみましたEucalyptusのHadoopクラスタとJaqlでBasket解析をしてHiveとの違いを味わってみました
EucalyptusのHadoopクラスタとJaqlでBasket解析をしてHiveとの違いを味わってみました
 
Haikara
HaikaraHaikara
Haikara
 
jQuery Performance Tips – jQueryにおける高速化 -
jQuery Performance Tips – jQueryにおける高速化 -jQuery Performance Tips – jQueryにおける高速化 -
jQuery Performance Tips – jQueryにおける高速化 -
 
ActiveResourceが面白すぎる件
ActiveResourceが面白すぎる件ActiveResourceが面白すぎる件
ActiveResourceが面白すぎる件
 
Maatkit で MySQL チューニング
Maatkit で MySQL チューニングMaatkit で MySQL チューニング
Maatkit で MySQL チューニング
 
What is Metasepi?
What is Metasepi?What is Metasepi?
What is Metasepi?
 
RとSQLiteで気軽にデータベース作成
RとSQLiteで気軽にデータベース作成RとSQLiteで気軽にデータベース作成
RとSQLiteで気軽にデータベース作成
 
MT meets PHP
MT meets PHPMT meets PHP
MT meets PHP
 

Mais de Hiromu Shioya

不惑の生存戦略
不惑の生存戦略不惑の生存戦略
不惑の生存戦略Hiromu Shioya
 
珍獣 素人 そして くのいち
珍獣 素人 そして くのいち珍獣 素人 そして くのいち
珍獣 素人 そして くのいちHiromu Shioya
 
Rubyistが歩むべき道への道
Rubyistが歩むべき道への道Rubyistが歩むべき道への道
Rubyistが歩むべき道への道Hiromu Shioya
 
自宅で本気を出さされた
自宅で本気を出さされた自宅で本気を出さされた
自宅で本気を出さされたHiromu Shioya
 
クマとデバッグを
クマとデバッグをクマとデバッグを
クマとデバッグをHiromu Shioya
 
クマとジャーニーマンとステマ
クマとジャーニーマンとステマクマとジャーニーマンとステマ
クマとジャーニーマンとステマHiromu Shioya
 
お前の本気を見せてみろ!
お前の本気を見せてみろ!お前の本気を見せてみろ!
お前の本気を見せてみろ!Hiromu Shioya
 
Git道場を開催してきた
Git道場を開催してきたGit道場を開催してきた
Git道場を開催してきたHiromu Shioya
 
三周まわったおれたちのアジャイル
三周まわったおれたちのアジャイル三周まわったおれたちのアジャイル
三周まわったおれたちのアジャイルHiromu Shioya
 
俺たちの目指すモバイルの新たな地平
俺たちの目指すモバイルの新たな地平俺たちの目指すモバイルの新たな地平
俺たちの目指すモバイルの新たな地平Hiromu Shioya
 
ベジェ曲線を書いてみた
ベジェ曲線を書いてみたベジェ曲線を書いてみた
ベジェ曲線を書いてみたHiromu Shioya
 
オススメの技術書
オススメの技術書オススメの技術書
オススメの技術書Hiromu Shioya
 
はじめて学ぶバージョン管理とGit
はじめて学ぶバージョン管理とGitはじめて学ぶバージョン管理とGit
はじめて学ぶバージョン管理とGitHiromu Shioya
 
肉とRubyとわたし
肉とRubyとわたし肉とRubyとわたし
肉とRubyとわたしHiromu Shioya
 

Mais de Hiromu Shioya (20)

不惑の生存戦略
不惑の生存戦略不惑の生存戦略
不惑の生存戦略
 
勉強会なう
勉強会なう勉強会なう
勉強会なう
 
LTの技術
LTの技術LTの技術
LTの技術
 
珍獣 素人 そして くのいち
珍獣 素人 そして くのいち珍獣 素人 そして くのいち
珍獣 素人 そして くのいち
 
夏夏
 
Tupperware
TupperwareTupperware
Tupperware
 
Rubyistが歩むべき道への道
Rubyistが歩むべき道への道Rubyistが歩むべき道への道
Rubyistが歩むべき道への道
 
自宅で本気を出さされた
自宅で本気を出さされた自宅で本気を出さされた
自宅で本気を出さされた
 
クマとデバッグを
クマとデバッグをクマとデバッグを
クマとデバッグを
 
クマとジャーニーマンとステマ
クマとジャーニーマンとステマクマとジャーニーマンとステマ
クマとジャーニーマンとステマ
 
お前の本気を見せてみろ!
お前の本気を見せてみろ!お前の本気を見せてみろ!
お前の本気を見せてみろ!
 
Git道場を開催してきた
Git道場を開催してきたGit道場を開催してきた
Git道場を開催してきた
 
三周まわったおれたちのアジャイル
三周まわったおれたちのアジャイル三周まわったおれたちのアジャイル
三周まわったおれたちのアジャイル
 
俺たちの目指すモバイルの新たな地平
俺たちの目指すモバイルの新たな地平俺たちの目指すモバイルの新たな地平
俺たちの目指すモバイルの新たな地平
 
2011年の漢字
2011年の漢字2011年の漢字
2011年の漢字
 
ベジェ曲線を書いてみた
ベジェ曲線を書いてみたベジェ曲線を書いてみた
ベジェ曲線を書いてみた
 
オススメの技術書
オススメの技術書オススメの技術書
オススメの技術書
 
はじめて学ぶバージョン管理とGit
はじめて学ぶバージョン管理とGitはじめて学ぶバージョン管理とGit
はじめて学ぶバージョン管理とGit
 
肉とRubyとわたし
肉とRubyとわたし肉とRubyとわたし
肉とRubyとわたし
 
祝辞
祝辞祝辞
祝辞
 

第7回社内勉強会「Code Sucks - 人の振り見て我が振り直せ」

  • 1. Code sucks 人の振り見て 我が振り直せ 第7回社内勉強会
  • 2.
  • 3.
  • 4.
  • 5. 月の最終日を取得したいらしい // 検索月の末日を取得 switch( $s_month ) { case 2: $last_day = 28; if ( ( $year % 4 ) == 0 ) { $last_day = 29; } break;
  • 6.
  • 7.
  • 8. コードをもう一度 // 検索月の末日を取得 switch( $s_month ) { case 2: $last_day = 28; if ( ( $year % 4 ) == 0 ) { $last_day = 29; } break;
  • 9.
  • 10. 二段オチ $today = time(); $s_year = date( &quot;Y&quot;, $today); $s_month = date( &quot;m&quot;, $today); $s_day = 1; $e_year = date( &quot;Y&quot;, $today); $e_month = date( &quot;m&quot;, $today); // 検索月の末日を取得 switch( $s_month ) { case 2: $last_day = 28; if ( ( $year % 4 ) == 0 ) { $last_day = 29; } break; } $ php -r &quot;var_dump ( $year ) ; &quot; NULL $ php -r &quot;echo NULL % 4 ; &quot; 0   ↓ 毎年閏年になるじゃん
  • 11. 正解は $last_day = date(&quot;t&quot;) ; http://jp2.php.net/manual/ja/function.date.php
  • 12.
  • 13.
  • 14. ソースをチェックしてみた $column_names = array( ' 商品名 ', ' 商品種別 ', ' 重量 ', ' 備考 ', ) ; イヤな予感!!
  • 15. テーブルをチェックしてみた mysql> describe item_master ; +--------------+---------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +--------------+---------+------+-----+---------+-------+ | item_id | int(11) | NO | | NULL | | | column_type | int(11) | NO | | NULL | | | column_value | text | YES | | NULL | | +--------------+---------+------+-----+---------+-------+    _, ._ (;゚ Д ゚)
  • 16. データをチェックしてみた mysql> SELECT * FROM item_master ; (  ゚ д ゚ ) ( つ д⊂) ゴシゴシ ( ;゚ д ゚ ) ( つ д⊂) ゴシゴシ    _, ._ (;゚ Д ゚) …? ! ( つ д⊂) ゴシゴシゴシゴシゴシ ( ;  Д   ) !!
  • 17.
  • 18. ロジックをチェックしてみた // $result には表示対象の商品コードが入っている while ($data = mysql_fetch_array($result)) { for ($i = 0 ; $i < count($column_names) ; $i ++) { $sql = &quot;SELECT * FROM item_master&quot; . &quot; WHERE item_id = {$data['item_id']}&quot; . &quot; AND column_type = {$i}&quot; ; $ret = mysql_query($sql) ; $item = mysql_fetch_array($ret) ; echo &quot;<td>{$column_names[$item['column_type']]}</td>&quot; ; echo &quot;<td>{$item['column_value']}</td>&quot; ; } }
  • 19.
  • 20.
  • 21.
  • 22. コネタその1 if( $order == _SER_ORDER_LAST_ ) { // 前日閲覧数順 } elseif( $order == _SER_ORDER_NEW_ ) { // 新着順 } elseif( $order == _SER_ORDER_FAV_ ) { // 登録数順 } else { // 更新順 } switch – case を 使え!!
  • 23. コネタその2 // $iRecCnt( レコード数 ) が1以外なら // 不正アクセスらしい。 if($iRecCnt>1){ $strAttentMessage = &quot; 不正なアクセスです。 &quot;; } if($iRecCnt==0){ $strAttentMessage = &quot; 不正なアクセスです。 &quot;; } $iRecCnt != 1 じゃ ダメなの?
  • 24. コネタその3 // 取ってきたレコードを変数展開したいらしい。 $sorter = $aRecData[0][c_sorter]; $page_title = $aRecData[0][c_page_title]; $page_content = $aRecData[0][c_page_content]; $mailflg = $aRecData[0][c_mail]; $signflg = $aRecData[0][c_sign]; $backlink = $aRecData[0][c_backlink]; $name = $aRecData[0][tname]; $cl_bg = $aRecData[0][color_bg]; $cl_text = $aRecData[0][color_text]; $cl_link = $aRecData[0][color_link]; $cl_vlink = $aRecData[0][color_vlink]; $cl_hr = $aRecData[0][color_hr]; $cl_title = $aRecData[0][color_title]; extract($aRecData[0]) ; じゃ ダメなの?
  • 25. コネタその4 (1/3) // なんだかいろんなコネクションがある。 // INSERT 祭りが始まるようだ。 $conn->begin_trans(); $conn_sub->begin_trans(); $conn_s->begin_trans(); $conn_msg->begin_trans(); $conn_ad->begin_trans(); $conn_foo->begin_trans() ; $conn_bar->begin_trans() ;
  • 26. コネタその4 (2/3) // ちょっと行数が多くて心が折れそうだが、 // 処理にしくじったらロールバックさせたいようだ。 if(!$conn->execute($strQue)) { $conn->rollback(); $conn_sub->rollback(); $conn_s->rollback(); $conn_msg->rollback(); $conn_ad->rollback(); $conn_foo->rollback() ; $conn_bar->rollback() ; db_regist_error($conn); }
  • 27.
  • 28.
  • 29.