ウィリアムのいたずらの、まちあるき、たべあるき

ウィリアムのいたずらが、街歩き、食べ物、音楽等の個人的見解を主に書くブログです(たま~にコンピューター関係も)

PHP+MySQLで、DBにイメージを保存、DBからデータ読み込み表示

2012-12-10 17:35:12 | PHP
PHP+MySQLで、DBに一旦イメージを保存して、そのイメージを取り出して読み込み表示する
のに、いろいろ手間取ってしまったので、メモメモ。




■御題

denpa13.JPGというファイルがある。

これを、

$host = "localhost";
$user = "root";
$password = "password";
$database = "test";

のDBに、img_tblというテーブルを作成し、


なかんじでできているので、

(1)img_tblテーブルに
   id=2、data=denpa13.JPGのファイル内容(バイナリ)の形で保存

(2)img_tblテーブルから
   id=2、のdataをとってきて表示(=denpa13.JPGが表示されるはず)





■DBにイメージ保存

こんなかんじのPHP
<?php

//==============================//
//	データベースのための値	//
//==============================//
$host = "localhost";
$user = "root";
$password = "password";
$database = "test";


//==============================//
//	データを読んでくる	//
//==============================//
$filename = "denpa13.JPG";
$handle = fopen($filename, "r");
$contents = fread($handle, filesize($filename));
fclose($handle);


//==============================//
//	データベース接続	//
//==============================//
$con = mysql_connect($host, $user, $password)
  or die("データベースとの接続に失敗しました");
mysql_select_db($database)
  or die("データベースの選択に失敗しました");


//==============================//
//	データベースに保存	//
//==============================//
$esc_contents = mysql_real_escape_string($contents)
  or die("エスケープ失敗");
$query = "insert into img_tbl(id,data) VALUES (2,'" . $esc_contents ."');";
$result = mysql_query($query)
 or die(mysql_error());

//==============================//
//	表示			//
//==============================//
header('Content-Type: image/jpeg');
echo $contents;

?>

ファイル内容のイメージが表示される




■DBからイメージ取得
こんなかんじのPHP

<?php

//==============================//
// データベースのための値 //
//==============================//
$host = "localhost";
$user = "root";
$password = "password";
$database = "test";

//==============================//
// データベース接続 //
//==============================//
$con = mysql_connect($host, $user, $password)
or die("データベースとの接続に失敗しました");
mysql_select_db($database)
or die("データベースの選択に失敗しました");

//==============================//
// SQL実行:ID=2を読み込む //
//==============================//
$query = "select data from img_tbl where id = 2;";
$result = mysql_query($query) or die(mysql_error());
$row = mysql_fetch_array($result);


//==============================//
// 表示        //
//==============================//
header('Content-Type: image/jpeg');
echo $row['data'];

?>

DB内容が表示される




■ちなみに、

はじめDBにキーも設定しないで、てきとうにやってたら、
blobのところにデータが入らず、たいへんだった。
DBは、まじめに作ろう・・・??


  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

SimStudent -バーチャルな生徒を教えていくソフト?(ゲームでなく研究用)

2012-12-10 12:28:19 | そのほか

SimStudent Project
https://sites.google.com/site/simstudentprojectweb/

というのがあって、どうも、バーチャルな生徒を教えるソフトらしい

なんじゃそりゃ(^^);

詳しくは、そのページにこんな風に書いてある。
(以下太字部分は引用)

What is SimStudent?

SimStudent is a computational model of human learning. Especially, it is a model of inducing rules by generating explanations of example problem solving steps. SimStudent allows us to study domain-general mechanisms of skill acquisition, which in turn provides us opportunities to advance theories of machine- and human-learning.


これを利用した教育に関する論文なんかも、いろいろでてる見たい。

ぶっちゃけ、

http://www.youtube.com/user/CMUSimStudent

でデモ見てもらったほうが・・・

わかるかなあ??わかんねーだろーなー(^^;)

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

ファイルをXMLで書き出し、読み込み時にXSLTを入手すれば困らない?

2012-12-10 10:21:07 | Weblog
夢で、コンピューター関係の話をみるとき、
なんか、すごいこと思った!
と思っても、朝起きて冷静になると、
「うん、なんでそうなるんだ?」ってことありませんか?
(なぜか、「画期的な解法」→ご飯を食べるみたいな、意味不明なこと)

今日も、コンピューター関係の夢を見たんだけど、
これは、おきて考えたら、使えそうな気がしたので、メモメモ
(つまり、自分の夢の中の話)





問題

 複数のアプリケーション間でファイルを共有したいが、
 データベースは使えないとする。

 そこで、共通フォーマットにしよう!という話になったとき、
 そうすると、過去のプログラムの入出力を共通フォーマットに
 あわせないといけないし、将来もそのフォーマットに拘束される
 という話になったとき




夢の中での回答

 うん、そんなことしなくてよくね?
 XMLで書き出してもらって、

 アプリは読み込み時に、ファイルフォーマットが自分のモノかどうか確認し、
 自分のモノでなかったら、指定されたサイトからXSLTをとってきて、
 変換すればいい。

 たとえば、アプリAのフォーマットFAの書き出しファイルを
 アプリBで読み込みたいとき、アプリBのフォーマットFBから、
 に変換するXSLTのURLを

  XSLT置き場のサイト/FA_FB.xslt

 のように、書き出しファイルから、わかるようにして、そこからXSLTを
もらえば、各アプリ自体は、フォーマットチェック&XSLTをダウンロード&変換
ってことで、全部共通化できない?

と答えた




眠い・・・まだ、頭の中、寝てる?

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする