アルツの備忘録

最近、年のせいで物忘れが激しい。
そこで、いろんなことをここに記録して行きたいと思います。

PHP + PEAR + ODBC + Access DB の実験 1

2008年01月30日 14時31分13秒 | PHP
■PHPとAccessは直接操作は出来ないようなので、ODBCを使うことした。
※ODBCの接待はこちらのサイトを参考にしてださい。
      http://www.tryhp.net/ODBC.htm
設定が面倒なので自動設定する方法を調べて、登録・削除のをプログラムを作成した。
結果は別ページで記録(ODBCの自動設定)

■PEAR、以前のphpは最初から使えたが、最近はインストールする必要があるようだ。
  ※ここを参考
   PHP5.0-6.PEARのインストール http://www.y2sunlight.com/ground/?PHP5.0%2F6.PEAR%A4%CE%A5%A4%A5%F3%A5%B9%A5%C8%A1%BC%A5%EB

■ACCESSを操作するphp
1.SELECTでデータベースの項目名を使った表作成
※SQLを作って呼出すだけで、select結果のデータで表を作成する。

<呼び出し php>
・SQLを作成する
・DbList関数をdsn名、SQL、漢字変換元、漢字変換先 を指定して呼出す。


<?php
 	$sql="select * ";
	$sql .= " from seiseki ";
	$Data = DbList( "phptest",$sql, "EUC_JP", "SJIS" );
	if ( $Data == false ) {
		print( "データはありません。" );
	}
?>

<DbList関数>
//Database List 
// データベースの内容を表示する。
function DbList($db_name,$sql, $encoding = "EUC_JP",$s_encoding = "SJIS"  ) {
  require_once("DB.php");		//pearのdbクラス
  $dsn="odbc://$db_name";	    //DSNの指定
  $db = DB::connect($dsn);		//DB接続
  if (DB::isError( $db )) {
       echo "DB接続エラー : " . DB::errorMessage( $db ) . "<BR>\n";
  	   exit;
   }
  //SQLを実行
  $sql=mb_convert_encoding($sql, $s_encoding, $encoding);
  //print($sql."<br>");
  $result = $db->query($sql);
  //エラーチェック
  if (DB::isError($result)) {
	   echo("<BR>".$result->getMessage());
	   // ResultSet開放
       $result->free();
       // DB接続終了
       $db->disconnect();
       return false;	
  }

  //配列データ編集
  $i=0;
  $x=0;
  $cnt=0;
  
  // 表示処理
  print("<TABLE BORDER='1' align=center cellspacing=1 cellpadding=5>");
  print("<TR bgcolor= '#ccff99' align=center>");  

  // 項目名表示 
  while($row = $result->fetchRow(DB_FETCHMODE_ASSOC)) { 
  	if ($cnt==0){
		$cName=array_keys($row);
		for ($x=0;$x<count($cName);$x++){
		 $koumoku=mb_convert_encoding($cName[$x], $encoding, $s_encoding);
			print("<TD>".$koumoku."</TD>"); 
		} 
		print("</TR>"); 
	}
	
	// データ表示
	print("<TR>");  
    while($i < $result->numCols()) { 
	  print("<TD>");
      //print(mb_convert_encoding($row[$cName[$i]], $encoding, $s_encoding));
      $data[$cnt][$i]=mb_convert_encoding($row[$cName[$i]], $encoding, $s_encoding);
      print($data[$cnt][$i]."<br>");	  
      $i++;
	  print("</TD>");   
    }
    $i=0;
    $cnt++;
	print("</TR> \n");
  }
  print("</TABLE>");
  
  // ResultSet開放
  $result->free();
  // DB接続終了
  $db->disconnect();
  //読み取り結果を返す
  if ($cnt==0){
      return false;
	}else{
      return $data; 
   }   
}


最新の画像もっと見る

コメントを投稿