PHPの最近のブログ記事

本来CMSとはツールではなく、リアルも含めたマネジメントの仕組みのことらしいです。

暇つぶしにCMSとかつくってみる』でつくるlことにしたCMS。

なんかそれっぽいのができた。でも浄化処理とかほぼしてない。メンドくさかったから。

とりあえず処理の流れとか、そんなんが知りたかったので。

PHPでつくるごく単純なテンプレートの設計

JavaScriptとはちがうのだよ。JavaScriptとは。

なんかJavaScriptでは

var hoge = document.getElementsByTagName("tagname"); hoge[n].firstChild.nodeValue;

というように、hogeの中に配列(のようなもの)化されたデータが代入される。

けどPHPの方は

$hoge = $DOM -> getElementsByTagName("tagname"); $hoge -> item(n) -> nodeValue;

というように、$hogeにitem()でタグの番号を指定しないとでてこない。テキストノードは無視っぽい。けどノードの中にテキストをappendする場合はやっぱ、createTextNodeが必要。

テキストノードがとれない(っぽい)のでremoveChildがちと面倒。

なんかあんまり使われないものなのか、情報が少ない。ひとに聞いてみたりもして、なんとかかんとか。

getElementsByTagNameをしたいのだけれど、ルートからのTagNameはとれるけど、そのタグからまたgetElementsByTagNameしようとするとエラーになる。とれないのかしらん。

解決した。

getElementsByTagNameからgetElementsByTagNameとれた。

$node -> item(0) -> getElementsByTagName('tagname') -> item(0) -> nodeValue;

とりあえずルートからいっこいっこTagNameを取得して、なんとか取ってきたけど、なんかスマートじゃないのでどうかなとか思う。

//DOMオブジェクト生成 $document = new DomDocument('1.0'); //XML読み込み $document -> Load('rss.xml'); //itemNodeを読み込み $title_node = $document -> getElementsByTagName('title'); $description_node = $document -> getElementsByTagName('description'); $link_node = $document -> getElementsByTagName('link'); $files = array(); $array_title = array(); $array_description = array(); $array_link = array(); for ($i = 1; $i <= $title_node -> length; $i++) { $array_title = $title_node -> item($i) -> nodeValue ; $array_description = $description_node -> item($i) -> nodeValue ; $array_link = $link_node -> item($i) -> nodeValue; $files[$i] = array($array_title,$array_description,$array_link); }

なんか、ちょこちょこつくっていけて、結構時間がかかって、ほいでいろいろ学習できるやつがやってみたかったので、CMSとかつくってみることにした。

とりあえず、最初のテスト用の設計が終わった。ほいじゃあこっからちゃんとつくるかって程度だけど。

PHPでつくるごく単純なCMSの設計

xsl:sortでソートする対象をPHPで切り替えるという処理です。

ちょっとつまずいたのがxsl:sortに渡すselectの値。

ここはxsl:for-eachの文脈の中で処理されるらしく、単純にxsl:variableで変数を切り替えても処理されないっぽい。

なので仕方なく、XSLT側もPHPに変えて、XMLにリクエストされたGETの値でXSLTにリクエストされるGETの値を切り替えて、その値に応じてxsl:sortに渡すselectの値を切り替えるようにしたらうまくいった。

とりあえず、他に処理がうまくいかない理由が思いつかないのでたぶんそういうことだと思う。

XSLTにパラメータを渡してXMLをソートする

GETの値をXSLTのパスに代入してるだけです。

if(isset($_GET['xsl'])){ $xslPath = $_GET['xsl']; }else{ $xslPath = "table"; }

PHPでXSLTを切り替えてみる

なんか正月にPHPをやるとかやないとか言ってたのを思い出して、なんとなくメールフォームを作ってみた。

htmlentitesで文字化けしてなかなか原因がわからなかったけど、ひとに教えてもらてなんとか無事解決。

しかし、あれよね、入門書って難しい、さっきまでprintしてたのに、いきなる複雑な処理をやらせようとするんで。

今まで買ったやつはtd td table tableの入れ子とかでもはや必要なPHPのコードがうもれてしまって書くのもメンドくさかったけど、これはわかり良かった。

説明もさすがO’REILLYといったとこで、理屈がちゃんと書いてあるので、「なんとくこう書いたらこうなるんだよ」みたいな他の本とは違う。まあひとにもよるんだろうけど、理屈はいいから動けばいい、みたいなひとはそういうのはかえってメンドイんだろうけふぉ。

初めてのPHP5 初めてのPHP5動的なWebサイトを構築するためのPHPプログラミングの基本を解説する書籍です。本書の特長は、バランスのとれた構成とサンプルコードを使った丁寧な解説。さらに各章末の演習問題が内容の理解を確実にします。本書で扱う内容は「テキストと数の操作」「決定と繰り返し」「配列の操作」「関数」「Web フォームの作成」「データベース」「クッキーとセッション」「日付と時間」「ファイルの操作」「XMLのパースと生成」「デバッギング」「正規表現の基礎」など。日本語版では、日本語処理に関する章と、PHP5.1で追加されたPDO(PHP Data Object)に関する章を追加しました。基礎的なHTMLの知識を持つ読者(Webデザイナーなど)がステップアップするのに最適な一冊です。