こんにちは、オイケです。
過去ブログの消費税10%対応プロジェクトの第4回目の記事では、
- WordPressのテキストエディタのテキスト内容をパソコンに保存
- gawkプログラムを作成
- gawkプログラムを実行し、テキストファイル内の税込価格が消費税10%税込価格に変更されることを確認
- テキストファイルをWordPressのテキストエディタに貼り付け、ブログ記事が消費税10%税込価格に変更されることを確認
しました。
上記方法で、一応、本プロジェクトの目標を達成しました。
しかし、第2回の記事に書いているとおり、PHPプログラムやSQL文でMySQLデータベースを操作できることが判りましたので、今回の第5回目の記事では、
- SQL文を実行して、ブログ記事内の税込価格を変更する方法
を模索します。
過去ブログの消費税10%対応プロジェクトとは?
オイケのブログの記事内の税込価格を消費税10%増税後の税込価格に変更する環境を構築するプロジェクトのことです。
具体的な目標については、第1回~第4回の記事に書いていますのでご覧ください。
SQL文で記事内税込価格を変更できるのか?
SQL文で記事内税込価格を変更できるのかについて、以下の本で調べてみました。
この本は、私のようなSQLを全く知らない人が理解できるよう、SQLの基本的な内容から始まり、非常に解り易く説明されています。
また、自分のパソコンに仮想マシンをインストールしてSQL文を実行する方法についても説明されているので、実際に自分のパソコンでSQL文を実行しながら学習することができます。
話しを元に戻します。
私が調べた限りでは、SQL文で記事内税込価格を変更することはできないという結論に至りました。
SQL文でブログ記事を書き替える場合は、
- SELECT文でMySQLから記事を読みだす
- 記事内の税込価格を増税後の税込価格に変更
- UPDATE文でMySQLの記事を変更
という手順になると思います。
上記2.を文字列関数を使ったSQL文で処理できそうな気がしました。
SQL文の文字列関数については、以下の本で調べました。
上記本の150ページ目に、文字列の取り出しや穴埋めを行う関数の説明があります。
しかし、1つの記事内に複数の税込価格が記載されている場合の処理方法について、良いアイデアが浮かばず、SQL文で記事内税込価格を変更することはできないという結論に至りました。
この本の248ページ目に、PHPからのデータベース接続ついての説明とプログラム例が記載されているので、この本の学習環境を使って、まずは、PHPでMySQL内の税込価格を増税後の税込価格に変更してみようと思います。
PHP学習環境の準備
PHP学習環境の準備として、以下を実施します。
VirtualBoxで仮想サーバーを作る
パソコンにVirtualBoxをインストールして、仮想サーバーを作ります。
手順は、以下のとおりです。
手順の詳細については、これからはじめるMySQL入門の31ページ目に記載されています。
VirtualBox 6.0.70 platform packages
・Windows hosts をクリック
VirtualBox-6.0.10-132072-Win.exe がダウンロードされるのでダブルクリックする。
Nextをクリック
Nextをクリック
Nextをクリック
Warning: Network Interfaces の画面
Yesをクリック
Installをクリック
インストールを許可しますか?
はいをクリック
このデバイスソフトウェアをインストールしますか?
インストールをクリック
Finishをクリック
下図のとおり、Oracle VM VirtualBoxマネージャーが起動します。
RLoginのインストール
パソコンにターミナルソフトRLoginをインストールすることで、RLoginのターミナルを使って、
- PHPコード作成
- MySQLモニターを起動して、SQL文の実行
などができます。
RLoginをダウンロードできるGitHubサイトから、zipファイルをダウンロードして、zipファイルを解凍するとRLogin.exeが復元されるので、適当なフォルダー(例えば、デスクトップ)に移動させます。
ダブルクリックすると以下の画面が表示されます。手順は、以下のとおりです。
手順の詳細については、これからはじめるMySQL入門の308ページ目に記載されています。
新規をクリック
上図のとおりに設定し、OKをクリック
上図のとおり、新規接続先が登録されたのでOKをクリック
RLoginターミナルが表示されました。
phpMyAdminでデータベースに税込価格を入力
VirtualBoxの仮想サーバーが起動した状態で、ブラウザからhttp://192.168.56.11/phpmyadmin/ にアクセスすると下図の画面が表示されます。
学習用のユーザ名とパスワードを入力し、実行をクリック
学習用データベースghexampleのjushoテーブルに、手作業でピンクで囲んだ箇所のデータを追加しました。
ピンクで囲んだ箇所のaddressフィールドに、税込価格を記載した文章データが入っています。
このaddressフィールドがブログ記事だと仮定して、PHPコードを作成して、税込価格を増税後の税込価格に変更します。
税込価格を変更するPHPコード
これからはじめるMySQL入門の349ページ目のリスト14-9というプログラム例を参考に作成したPHPコードは以下のとおりです。
// File Name = list_14_9.php <?php ini_set("display_errors", 1); error_reporting(E_ALL); // MySQLに接続 $link = mysqli_connect("localhost", "dbuser", "非表示にしています"); // データベースを選択 $db_selected = mysqli_select_db($link, "ghexample"); // SELECT文を送信 $result = mysqli_query($link, "SELECT * FROM jusho"); // データを取得 while ($row = mysqli_fetch_assoc($result)) { $pattern = "円"; $cline = $row["address"]; $match_result = preg_match("/[0-9]円/", $cline); if ($match_result == 1) { // 円を区切りにして、$clineを配列$a[]に入れる。 $a = explode($pattern, $cline); $fldcnt = mb_substr_count($cline, $pattern); print($row["idju"] . " " . $cline . "<br>"); $newfld = ""; for($i=0; $i<=$fldcnt; $i++) { $fldsent = $a[$i]; $leng_fldsent = $fldsent; $numflag = 0; $numpoint = 0; $j = mb_strlen($fldsent); // 円の左側が数字の場合、一番左の数字の位置を探す while(($j>0) && ($numflag == 0)) { $one_char = mb_substr($fldsent, $j-1, 1); if(preg_match("/\,|[0-9]/u", $one_char)) { $j--; } else { $numflag = 1; } } if($numflag == 1) { $numpoint = $j; } $one_char_2 = mb_substr($fldsent, $leng_fldsent -1); if(preg_match("/[0-9]/", $one_char_2) != 1) { if($i < $fldcnt) { // 円の左側が数字ではない場合は、増税計算せず、円を追加する。 $newfld .= $fldsent . "円"; } else { // $a[$lfdcnt]の場合は、円を追加しない。 $newfld .= $fldsent; } } else { // 金額の左側の文字を抽出 $japa = mb_substr($fldsent, 0, $numpoint); // 現在の税込価格を抽出 $oldprice = mb_substr($fldsent, $numpoint); // 税込価格からカンマ記号を削除 $oldprice_2 = str_replace(",", "", $oldprice); // 増税後の税込価格を算出 $newprice = ((int)$oldprice_2 / 1.08 *1.1); // 税込価格にカンマ記号を追加 $newprice2 = number_format($newprice); $newfld .= $japa . $newprice2 . "円"; } } print($row["idju"] . " " . $newfld . "<br>"); } } // MySQLとの接続を切断する mysqli_close($link);
税込価格抽出の考え方は、【第4回】ブログ記事内の税込価格を増税後価格に自動変更する方法のgawkプログラムと同じです。
PHPコードの実行結果
ブラウザからhttp://192.168.56.11/~user01/list_14_9.phpにアクセスすると、PHPコードが実行され、下図の画面が表示されます。
上図のとおり、消費税8%の税込価格が消費税10%の税込価格に変更できました。
今回のPHPコードでは、全角数字の税込価格には対応していませんが、私のブログ記事では全角数字の税込価格記載が無いので、このままで良しとします。
また、このPHPコードは349ページ目のリスト14-9というプログラム例を参考にしているため、変更前と変更後の、idjuフィールドとaddressフィールドをブラウザに表示していますが、変更後のaddressフィールドをMySQLデータベースに書き戻していません。
中途半端ですが、今回の記事はここまでとします。
今後、PHPでのMySQLデータベースの更新方法を調べて、PHPコードを完成させます。
まとめ
htmlもcssもPHPもSQL文も全く知らない私が、ネットと本の学習で、PHPコードを作成し、MySQLデータベースから税込価格を読み出し、増税後の税込価格に変更することができました。
但し、増税後の税込価格をMySQLデータに書き戻すまでは、まだできていないので、これから、PHPコードでMySQLデータベースの更新方法を調査して、実現したいと思います。
尚、今回参考にした本は、以下の2冊です。
これから、SQL文とMySQLデータベースを学習してみようと思うかたにおすすめです。