bluetronix CMSでPHPとMySQLを接続する
このチュートリアルでは、独自のデータベーステーブルを作成し、CMSページに接続します。実用的な例を通じて、INSERT、REPLACE、SELECT、UPDATEのSQLコマンドを学び、HTMLプレースホルダーを介してどのようにウェブサイト上でデータベースの値を表示するかを学びます。
サンプルページを作成する
このチュートリアルでは、まず新しいサンプルページを作成します。
例えば:
PHP MySQLの例
ページは最初は完全に空である必要があります。
その後、通常のHTMLエディタでページを開き、任意のセクションを挿入します。このHTML領域は、後にデータベースから読み込まれるデータのテンプレートとして使用されます。
データベーステーブルを作成する
データを保存する前に、独自のデータベーステーブルが必要です。
そのために:
データベース → 新しいテーブル
この例では、ID、Date、Title、Description、Imageの列を持つテーブルを使用します。
IDはレコードの一意のIDを含みます。Dateは日付と時刻を保存し、Titleはタイトル、Descriptionは長い説明文、Imageは画像名を含みます。
テーブル、列、変数の名前は、開発者チュートリアル内では常に英語で使用する必要があります。
PHPコードを開く
テーブルが作成された後、再びサンプルページに戻ります。
そこで:
PHPコード
この領域から直接データベースにアクセスできます。
INSERTまたはREPLACEでデータを保存する
最初の例では、先ほど作成したデータベーステーブルにレコードを保存します。
まず必要なPHP変数を設定します。
例:
$ID = 1;
$Date = date("Y-m-d H:i:s");
$Title = "My Title";
$Description = "My Description";
$Image = "my-image.jpg";
これらの値は、MySQLのプリペアードステートメントを使って保存できます。
データベースへのアクセスには基本的にプリペアードステートメントを使用するべきです。これにより、値が実際のSQLコマンドとは別に処理されます。
REPLACEの例:
$stmt = $mysqli->prepare("REPLACE INTO ExampleTable (ID, `Date`, Title, Description, Image) VALUES (?, ?, ?, ?, ?)");
$stmt->bind_param("issss", $ID, $Date, $Title, $Description, $Image);
$stmt->execute();

その後、ページを一度読み込んでください。
続けて、次を開いてください:
データベース → 表示
そこで新しく作成されたデータセットが表示されるはずです。
INSERTとREPLACEの違い
INSERTは新しいデータセットを追加します。
既に同じユニークIDまたはプライマリキーを持つデータセットが存在する場合、通常のINSERTは重複キーエラーを引き起こす可能性があります。
REPLACEは、同じユニークIDを持つ既存のデータセットを置き換える時に使用できます。
テスト例に固定IDを使用する場合、REPLACEが頻繁に便利です。なぜなら、ページを何度も呼び出すことができるからです。
SELECTでデータを読み出す
次のステップでは、保存されたデータセットをデータベースから再度読み出します。
例:
$stmt = $mysqli->prepare("SELECT `Date`, Title, Description, Image FROM ExampleTable WHERE ID = ?");
$stmt->bind_param("i", $ID);
$stmt->execute();
$result = $stmt->get_result();
if($row = $result->fetch_assoc()) {
$Date = $row["Date"];
$Title = $row["Title"];
$Description = $row["Description"];
$Image = $row["Image"];
}
読み出した値は、変数$Date、$Title、$Description、$Imageに格納されます。
データベースと$LayoutHTMLを接続する
グローバルCMS変数$LayoutHTMLは、レンダリングプロセス中に現在生成されたHTMLを含みます。
これにより、HTMLコード内の独自のプレースホルダーをMySQLテーブルのデータで置き換えることができます。
HTMLコードにプレースホルダーを設定する
再び、あなたのサンプルページのHTMLコードを開いてください。
前に挿入したページセクションの内容を独自のプレースホルダーに置き換えることができます。
例えば:
__MyDate__
__MyTitle__
__MyDescription__
__MyImage__
簡略化されたHTMLの例:
<section>
<div class="container">
<img src="__MyImage__" alt="">
<small>__MyDate__</small>
<h2>__MyTitle__</h2>
<p>__MyDescription__</p>
</div>
</section>

この最初のMySQLの例では、既存の翻訳タグをまず削除することができます。これにより、どの内容が直接PHPとMySQLで置き換えられるかが分かりやすくなります。
レイアウトにデータベースの値を挿入する
データがSELECTで読み込まれた後、$LayoutHTML内のプレースホルダーを置き換えます。
例:
$LayoutHTML = str_replace("__MyDate__",$Date,$LayoutHTML);
$LayoutHTML = str_replace("__MyTitle__",$Title,$LayoutHTML);
$LayoutHTML = str_replace("__MyDescription__",$Description,$LayoutHTML);
$LayoutHTML = str_replace("__MyImage__",$Image,$LayoutHTML);
この流れはこうなります:
MySQLデータベース → SELECT → PHP変数 → str_replace() → $LayoutHTML → 完成したウェブサイト

これにより、データベースの内容が既存のHTMLレイアウト内に直接表示されます。
データベースで変更を直接テストする
開く:
データベース → 表示
次に、既存のデータセットを編集します。
例えば、My TitleのタイトルをNew My Titleに変更できます。
画像も、対応するBX-Image-Buttonから変更できます。
保存してウェブサイトを再読み込みすると、変更されたデータがページレイアウトに直接表示されます。
これにより、以下の間に直接的な接続が確立されます:
データベース → PHP → $LayoutHTML → ウェブサイト
UPDATEでデータを変更する
UPDATEを使用することで、既存のデータセットをPHPを通じて直接変更できます。
その際、どのデータセットを変更するかを条件で指定します。
更新を実行した後、SELECTで再度データを読み込み、$LayoutHTMLを通じてあなたのページに表示できます。
要約
PHPとMySQLを使用すると、bluetronix CMS内でデータを保存、読み出し、変更できます。
INSERTまたはREPLACEはデータを保存し、SELECTはデータを読み出し、UPDATEは既存のデータセットを変更します。
$LayoutHTMLを使用して、読み込んだデータを既存のHTML構造に直接挿入できます。
これにより、データベースの内容をCMSページのHTMLレイアウトにきれいに結びつけることができます。
FAQ
お客様からよくある質問
このPHPとMySQLのチュートリアルには何が必要ですか?
bluetronix CMSへの開発者アクセスが必要です。また、CMSサイトのレンダリングプロセスがどのように機能するか、変数$LayoutHTMLの役割をすでに理解している必要があります。
新しいデータベーステーブルはどこで作成しますか?
CMSでデータベース → 新しいテーブルのセクションを開きます。
例ではどの列が使用されますか?
チュートリアルでは、ID、Date、Title、Description、Imageの列が使用されます。
なぜPrepared Statementsを使用すべきですか?
Prepared Statementsは渡された値を実際のSQLコマンドから分離し、したがってデータベースアクセスのために設計されています。
INSERTとREPLACEの違いは何ですか?
INSERTは新しいデータセットを追加します。REPLACEは同じ一意のIDまたはプライマリキーを持つ既存のデータセットを置き換えることができます。
データベースからデータを読み出すにはどうすればよいですか?
そのためにはSELECTコマンドを使用します。読み込まれた値は、後で例えばPHP変数$Title、$Description、$Imageに保存できます。
MySQLのデータはどのようにページのHTMLに入りますか?
最初にHTMLコードに独自のプレースホルダーを設定し、その後$LayoutHTML内でstr_replace()を使用して読み込まれたデータベースの値と置き換えます。
データベースとウェブサイトの接続が機能しているかどうかをどうやって確認できますか?
データベース → 表示を開き、既存のレコードを変更し、その後ページを再読み込みします。新しい値はページレイアウトに直接表示されるはずです。
UPDATEは何に使われますか?
UPDATEを使用すると、既存のレコードをPHPを介して直接変更できます。
データベースの画像をページレイアウトでも使用できますか?
はい。例では、画像の値が$Image変数に保存され、$LayoutHTML内の独自のプレースホルダー__MyImage__を介して使用されます。