62PHPとXMLを使って超シンプルなミニブログを作ってみるまでのコーディング日誌【其の一】
PHPに触れ始めて半年ほど。
今まではデータの保存などはMysqlを使うことがほとんどでした。
別にMysqlでも全く問題ないのですが、DBの知識があまりなかったりphpmyadminの使い方がわからないと、敷居が高くてなかなか先に進みません(現にボクがそうでした)。データベースの中身を直接見る事が難しいといったことも理解するのに時間がかかっている一つの要因かもしれません。(ここからのお話はXHTMLとCSSをある程度理解している前提で進めます。)
そこで、最初にPHPとDBの連携の概念や基礎を学ぶために、XHTMLの元となったメタ言語であるXMLを使ってミニブログを作ってみたいと思います。(ちなみにサーバーはさくらレンタルサーバーのPHP5を使用しています)なぜXMLを採用したかというと、データーの視認性が高いことと、自分自身が一度やってみたかったからです。
ちなみにボクはPHPのスペシャリストでもなんでもないですし、XMLも今回これを作るにあたって調べ始めた程度の知識なので、間違っていたり挫折する(!?)かも知れませんが、暫くお付き合いください><
PHPからXMLを生成する
まずはPHPからXMLを書き出してみます。「test.php」というファイルを作成し、以下のようにソースを書いてください。
<?php
//DomDocumentを呼び出す
$dom = new DomDocument('1.0','UTF-8');
//要素ノード[document]を追加
$document = $dom->appendChild($dom->createElement('document'));
//新しい要素をdocumentの子要素として挿入する
$document->appendChild($dom->createElement('name','名前です'));
$document->appendChild($dom->createElement('text','テキストです。'));
//字下げや空白を考慮してきれいに整形した出力を行う
$dom->formatOutput = true;
//同階層にtext.xmlとして保存
$dom->save('test.xml');
//出力
echo $dom->saveXML();
?>
これをサーバーにアップロードします。(文字コードに注意してください。※uft-8で記述してください)
3行目でPHP5に内蔵されているxmlクラスを呼び出して、
6行目から各要素の宣言をしているといったような内容です。(実際に引数を変えてみるとわかりやすいかもしれません)
13行目できれいに階層化しています、ここを削ると最後に生成されたファイルのソースが一行にまとめられてしまって読みづらいです。
んで、15行目でtest.xmlを生成しています。
17行目はなくてもいいのですが、きちんと動作したか分かりやすくするために書いてます。(IEで確認するともっと分かりやすい)
アップが完了したら(ファイルをアップしたURL)http://test.com/test.phpにアクセスすると、text.xmlというファイルが同階層に生成されていると思います。
中身はこんな感じ。
<?xml version="1.0" encoding="UTF-8"?>
<document>
<name>名前です</name>
<text>テキストです。</text>
</document>
これでうっすらとPHPからXMLが生成される流れがわかっていただけたかと思います。
とりあえず今回はここまで。
飽きなければ続き書きます。
2008-10-16
comment
hal
アドバイスありがとうございます。
現在のApacheはXAMPP (Basispaket) version 1.6.7でした。
アドバイスに従いxampp-win32-1.6.6a-installer.exeを探してみたのですが1.6.8がリリースされたせいか1.6.6aが見つかりません。思い切って1.6.8をインストールして試したのですが前回と同じ現象でした。また、休みの時にでも挑戦してみます。
取り急ぎお礼まで
2008-11-24 22:45:22
iskr
halさん、コメントありがとうございます。
自分はローカル環境で作成していなかったのでこのエラーには遭遇しなかったのですが、少し調べてみるとどうやらxamppとDOMElementクラス特有のエラーのようです。
他力本願で申し訳ないのですが、以下のサイトが参考になるかと思いますので確認してみてください。
http://hextomino.tsukuba.ch/e9898.html
最近更新が滞っていますが、頑張って更新していくので(特にこのカテゴリ)宜しくお願いします。
2008-11-19 12:51:38
hal
いきなりのコメントにて失礼します。
やっと見つけたって感じの記事なので動かしたくてしかたありません・・・。こんにちわ、兵庫に住むhalといいます。私もXML形式でデータを保存したいと考えネットサーフィンしていました。19dさんのソースをコピペして
アパッチ環境⇒
http://localhost/xampp/で動かしてみたのですが、エラーになります。お気づきの点ございましたらご指摘いただきたいのですが、よろしくお願いします。test.phpの実行結果です。
Warning: domdocument::domdocument() expects parameter 2 to be long, string given in C:xampphtdocsxampptest04test.php on line 3
Fatal error: Call to undefined method domdocument::appendChild() in C:xampphtdocsxampptest04test.php on line 6
2008-11-16 23:26:10

