PHP学習のススメ 第6回:Dreamweaver CCの拡張機能でPHPとデータベースを連携させる

PHP学習のススメ

Dreamweaverl CC (2013年06月公開) 対応

この連載ではPHPそのものの紹介というよりは「PHPを学習するためには、どんな準備が必要か」という部分に焦点を当て紹介していきたいと思います。PHPの入門書籍を読み始める前に、ぜひ本連載で準備を整えてください。

Dreamweaver CC の体験版をダウンロード

PHPと連携してみよう

データベースは、単体で利用する限りは「Excelの方が扱いやすそうだな」と思われるかも知れません。データベースは、PHPなどの「スクリプト言語」と組み合わせて利用したときに、その真価を発揮するのです。

Dreamweaver CCでデータベースを利用する方法

従来のDreamweaverにはデータベースと連携する機能がデフォルトで搭載されていましたが、CCからは拡張機能の扱いになりました。その拡張機能「Deprecated_ServerBehaviorsPanel_Support.zxp」のインストールにはExtension Managerが必要になるので、もしExtension Managerをインストールしていない場合はインストールしておきましょう。拡張機能のインストール方法の詳細は、次の文書などを参考にしてください。

サーバービヘイビア、データベース、バインディングを使用する方法(Dreamweaver CC)

Extension Managerは、Adobe Application Managerを使ってインストールできます

次に、以下のフォルダにある拡張機能「Deprecated_ServerBehaviorsPanel_Support.zxp」をダブルクリックしてインストールします。

Deprecated_ServerBehaviorsPanel_Support.zxpをダブルクリックすると、Extension Managerが起動してインストールが始まります

Deprecated_ServerBehaviorsPanel_Support.zxpをインストールしたら、Dreamweaverを起動して、第1回で紹介したサイト定義を利用し、サイトを開きます。

Dreamweaverの[ウィンドウ]メニュー→[データベース]を選択して、[データベース]パネルを表示します。エディターが開いていなければ、このパネルを利用することができないので、新しいファイルを作成しておきましょう。

[データベース]パネル

また、開いているファイルがPHPファイルでない場合は、[データベース]パネルの「ドキュメントタイプを選択します」の行にチェックマークが付いていないので、青いリンクをクリックして「PHP」を選んでおきましょう。

ドキュメントタイプをPHPにします

[データベース]パネル上で1、2、3のそれぞれにチェックマークが付くと、上部の「+」ボタンがクリックできるようになります。メニューから[MySQL接続]を選択して、[MySQL接続]ダイアログボックスに以下の情報を入力します。パスワードは次の通りです。

データベースに接続するための情報を入力します

[テスト]ボタンをクリックしてみましょう。下ののダイアログボックスが出れば接続完了です。

接続に成功した場合のダイアログボックス

接続できない場合は、以下のような画面が表示されます。

接続に失敗した場合のダイアログボックス

データベースへの接続が正常に行かない場合

Dreamweaver CCでは、正しく設定していても、接続できないことがあります。これは、Dreamweaverが必要とするファイルをうまくコピーできないことが原因です。

手作業でファイルをコピーをすれば接続することができます。次の場所にあるファイルをコピーしてください。

ここにある「MMHTTPDB.php」と「mysql.php」を、サイト定義したフォルダに作成されている「_mmServerScripts」フォルダーにコピーしましょう。

PHPとデータベースの橋渡し「SQL」

続いて、Dreamweaverの[ウィンドウ]メニュー→[バインディング]を選択して、[バインディング]パネルを表示します。[バインディング]パネルの左上にある「+」ボタンをクリックして、メニューから[レコードセット(クエリー)]を選択して、[レコードセット]ダイアログボックスを表示します。

[レコードセット]ダイアログボックス

[レコードセット]ダイアログボックスで特に何も変更せずに[OK]ボタンをクリックします。[バインディング]パネルには、図18のように「フィールド」のリストが表示されるので、ここで「message」をマウスで[デザインビュー]にドラッグ&ドロップします。水色のアイコンが挿入されます。

[バインディング]パネルから「message」を[デザインビュー]にドラッグ&ドロップしたところ。図は、水色のアイコンを選択して反転した状態

[ライブビュー]で表示してみましょう。下図のように、先ほどデータベースに記録したメッセージ内容が表示されます。ここで「????」と表示されてしまう場合は、後述の「文字化けする場合」を参照してください。

[ライブビュー]にすると、{Recordset1.message}の部分に、図9で入力したメッセージ内容が表示される

さて、ここで[コードビュー]を見てみましょう。今の一連の操作で大量のPHPプログラムが自動的に生成されました。ここでは、重要な部分だけを解説していきます。37行目付近からの、次のコードに注目しましょう。

mysql_select_db($database_adc, $adc); $query_Recordset1 = “SELECT * FROM messages”; $Recordset1 = mysql_query($query_Recordset1, $adc) or die(mysql_error()); $row_Recordset1 = mysql_fetch_assoc($Recordset1);

ここでは、最初に「mysql_select_db」というファンクションで、「データベース」を選択しています。そして「mysql_query」で「SQL(エスキューエル)」という命令文を発行しています。これにより、テーブルから情報を受け取ることができるため、これを「mysql_fetch_assoc」というファンクションでPHPの中に取り込んでいます。これを「レコードセット」といい、この状態になるとPHP内で扱うことができるようになるわけです。

このように、PHPをデータベースで扱うには多くの手続きが必要になります。しかし、一度接続さえしてしまえば、様々な作業をデータベースに頼って作業することができるようになります。その秘密が「SQL」です。先の例でSQLの部分だけを見てみましょう。

SELECT * FROM messages

これは「messagesテーブルからすべて(*)のデータを取得してください」という命令です。少し変更してみましょう。

[バインディング]パネルに表示されている「レコードセット1」をダブルクリックします。[レコードセット]ダイアログボックスの[フィルター]と[ソート]の欄を図20のように書き換えて、[OK]ボタンをクリックします。

[レコードセット]ダイアログボックスの[フィルター]と[ソート]の欄を変更します

すると、SQL部分が次のように変化します。

SELECT * FROM messages WHERE id > 1 ORDER BY id DESC

これで、「idフィールドの値が1以上のものだけを取得し、idの降順で並び替えてください」という命令になります。SQLはこのようにデータベースに、どんなデータをどのように取得するかを命令することができ、データベースはそれに沿ってあらかじめ処理をしてくれるのです。

文字化けする場合

データベースの内容が文字化けするのは、データベースとPHPで文字コードの設定が合っていないことが原因です。MySQLの設定を変更することでも解消することができますが、ここでは手軽な方法として[コードビュー]で2行目に次のようなプログラムを挿入してみましょう。

<?php require_once(‘Connections/adc.php’); ?> <?php mysql_query(‘SET NAMES utf8’); ?> <?php …

これで、MySQLが一時的にUTF8に設定されて文字化けが解消します。