Clendar
Sun Mon Tue Wed Thu Fri Sat
   1234
567891011
12131415161718
19202122232425
2627282930  
<< September 2010 >>
SERACH
ARCHIVES
CATEGORIES
LINKS
RECENT COMMENTS
RECENT TRACKBACK
OTHERS
SKYPE
ID: skype.jojo.jp
chat call
THANKS



本日:
昨日:


 ▼▲ 作業日報 ▼△
  A rolling stone gathers no moss.
<<前ページ 次ページ>>
PHPのXML-XSLベースの基本画面
ソースコードはSJISを想定しています
  1. <?
  2. //******* XMLベースのフォーム作成雛形 ***********
  3. //機能はノードの追加と削除と編集
  4. //保存ファイルは[スクリプト名]+.xml(無い不正であれば作成)
  5. //
  6. //又フォームを作成するにはXSLTを利用すれば一度でできる
  7. //多くのリクエストがある場合は重くなる
  8. //<root><row index="aaa"/></row index="bbb"/>
  9.  
  10. //▼▼****** 定数定義等・前処理 *******▼▼
  11.         define('XMLDEF_SJIS',chr(60).'?xml version="1.0" encoding="Shift_JIS"?'.chr(62));
  12.         $dataFile = $_SERVER['SCRIPT_FILENAME'].'.xml';
  13. //▲▲****** 定数定義等・前処理 *******▲▲
  14.  
  15. //▼▼********* メイン処理 ************▼▼
  16.         //▽▽***** データの読み込み ********▽▽
  17.         //$domData
  18.         if (file_exists($dataFile)){
  19.                 $domData = new DOMDocument('1.0','Shift_JIS');
  20.                 $domData->async = false;
  21.                 //データファイルがある場合は読み込み
  22.                 if (!$domData->load($dataFile)) unset($domData);//失敗すれば↓
  23.         };
  24.         //デフォルトのデータ作成
  25.         if (!isset($domData)){
  26.                 $domData = new DOMDocument('1.0','Shift_JIS');
  27.                 $node = $domData->createElement('root');
  28.                 $domData->appendChild( $node );
  29.         }
  30.         //△△***** データの読み込み ********△△
  31.         //▽▽********* CGI操作部  **********▽▽
  32.         //$domXSL.... 出力フォームの選択
  33.         //(1)項目の追加ボタン
  34.         if ($_REQUEST['btn_add']){
  35.                 //登録が無いかを調べる
  36.                 $str  = $_REQUEST['txt_item'];
  37.                 $xpath = new DOMXPath( $domData );
  38.                 $nodes = $xpath->query(mb_convert_encoding("/root/row[@index = '$str']",'UTF-8','SJIS'));
  39.                 if ($nodes->length == 0){
  40.                         $node0 = $domData->createElement('row');
  41.                         $node0->setAttribute('index',mb_convert_encoding($_REQUEST['txt_item'],'UTF-8','SJIS'));
  42.                         $domData->firstChild->appendChild($node0);
  43.                         //
  44.                         $domData->save( $dataFile );//保存
  45.                         //
  46.                         addNode(&$domData,'mess',$str.$_REQUEST['txt_item']." を追加しました");
  47.                 } else {
  48.                         addNode(&$domData,'mess',$str.$_REQUEST['txt_item']." は存在します");
  49.                 }
  50.         };
  51.         //(2)項目の削除ボタン
  52.         if ($_REQUEST['btn_del']){
  53.                 $xpath = new DOMXPath( $domData );
  54.                 $str  = $_REQUEST['txt_id'];
  55.                 $nodes = $xpath->query(mb_convert_encoding("/root/row[@index = '$str']",'UTF-8','SJIS'));
  56.                 if ($nodes->length > 0) {
  57.                         foreach($nodes as $node){
  58.                                 $node->parentNode->removeChild( $node );
  59.                         };
  60.                         $domData->save( $dataFile );//保存
  61.                         //
  62.                         addNode(&$domData,'mess',$str."を削除しました");
  63.                 } else {
  64.                         addNode(&$domData,'mess',$str."存在しません");
  65.                 }
  66.         };
  67.  
  68.         //(3)項目の編集ボタン
  69.         if ($_REQUEST['btn_edit']){
  70.                 $xpath = new DOMXPath( $domData );
  71.                 $str  = $_REQUEST['txt_id'];
  72.                 $nodes = $xpath->query(mb_convert_encoding("/root/row[@index = '$str']",'UTF-8','SJIS'));
  73.                 foreach($nodes as $node){
  74.                         $node->setAttribute('index',mb_convert_encoding($_REQUEST['txt_item'],'UTF-8','SJIS'));
  75.                 };
  76.                 $domData->save( $dataFile );//保存
  77.                 //
  78.                 addNode(&$domData,'mess',$str.'を編集しました');
  79.         };
  80.  
  81.         //(4)画面表示用のパラメタとか
  82.         addNode(&$domData,'url',$_SERVER['SCRIPT_NAME']);
  83.  
  84.         //フォームが選択されていなければデフォルト
  85.         if (!isset($domXSL)) $domXSL=domForm0();
  86.  
  87.         //△△********* CGI操作部  **********△△
  88.         //▽▽********** HTML出力 ***********▽▽
  89.         $xslt = new XSLTProcessor();
  90.         $xslt->importStyleSheet( $domXSL );
  91.         echo $xslt->transformToXml( $domData );
  92.         //△△********** HTML出力 ***********△△
  93. //▲▲********* メイン処理 ************▲▲
  94.  
  95. //▼▼*********** 関数定義 ************▼▼
  96. //******** ルートノードへの追加 *********
  97. function addNode($dom,$tag,$mess) {
  98.         $node = $dom->createElement( $tag );
  99.         $node->setAttribute('text',mb_convert_encoding($mess,'UTF-8',"SJIS"));
  100.         $dom->firstChild->appendChild($node);
  101. }
  102.  
  103. //********** 1.フォームの定義 ***********
  104. function domForm0(){
  105. $dom = new DOMDocument('1.0','Shift_JIS');
  106. $dom->async = false;
  107. $xsl = <<<__EOF__
  108. <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  109. <xsl:output method="xml" encoding="Shift_JIS" omit-xml-declamention="no" indent="no"/>
  110. <xsl:template match="/">
  111. <html>
  112. <meta http-equiv="Content-Type" Content="text/html; Charset=Shift_JIS"/>
  113. <body>
  114. <a href="{/root/url/@text}">データ登録</a><br/>
  115. <table border="1">
  116. <tr><th>NO</th><th>名前</th><th>操作</th></tr>
  117. <xsl:for-each select="/root/row">
  118.         <tr>
  119.         <form method="POST"><input type="hidden" name="txt_id" value="{@index}"/>
  120.         <td><xsl:value-of select="position()"/></td>
  121.         <td>
  122.                 <input type="text" name="txt_item" size="30" value="{@index}"/>
  123.         </td>
  124.         <td>
  125.                 <input type="submit" name="btn_del" value="削除"/>
  126.                 <input type="submit" name="btn_edit" value="変更"/>
  127.         </td>
  128.         </form>
  129.         </tr>
  130. </xsl:for-each>
  131. <tr>
  132. <form method="POST">
  133. <td>新</td>
  134. <td><input type="text" size="30" name="txt_item"/></td>
  135. <td><input type="submit" value="追加" name="btn_add"/></td>
  136. </form>
  137. </tr>
  138. </table>
  139. <xsl:if test="/root/mess">
  140. <hr/>
  141. <xsl:for-each select="/root/mess"><xsl:value-of select="@text"/></xsl:for-each>
  142. </xsl:if>
  143. </body>
  144. </html>
  145. </xsl:template>
  146. </xsl:stylesheet>
  147. __EOF__;
  148. $dom->loadXML( XMLDEF_SJIS.$xsl);
  149. return $dom;
  150. };
  151. //▲▲*********** 関数定義 ************▲▲
  152.  
  153. ?>
  154.  

整形はhttp://qbnz.com/highlighter/
| 開発関連 | 19:10 | comments(0) | trackbacks(0) |









http://blog.jojo.jp/trackback/843721
<<前ページ 次ページ>>