ダウンロード ▼ デモページ データベースの接続に必要な値は、include_path に設定されたディレクトリに config.php を作成してセットします ▼ config.php<?php $host = "MySQLサーバ"; $user = "ユーザ"; $pass = "パスワード"; $db = "データベース"; ?>control.php ( エントリポイント )
01.
<?php
02.
# ***************************
03.
# ソースベースの取り込み
04.
# ***************************
05.
require_once
(
'settings.php'
);
06.
require_once
(
'model.php'
);
07.
require_once
(
'config.php'
);
08.
09.
# ***************************
10.
# MySQL 接続
11.
# ***************************
12.
$con
= @
new
mysqli(
$host
,
$user
,
$pass
,
$db
);
13.
$con
->set_charset(
"utf8"
);
14.
15.
# ***************************
16.
# MySQL 用特殊文字エスケープ
17.
# ***************************
18.
foreach
(
$_REQUEST
as
$key
=>
$value
) {
19.
$_REQUEST
[
"db"
][
$key
] =
$con
->real_escape_string(
$value
);
20.
}
21.
22.
# ***************************
23.
# テーブル表示
24.
# ***************************
25.
build_table(
$con
);
26.
27.
# ***************************
28.
# MySQL 接続解除
29.
# ***************************
30.
$con
->close();
31.
32.
# ***************************
33.
# 画面定義
34.
# ***************************
35.
require_once
(
'view.php'
);
36.
?>
view.php ( 画面定義 )01.
<?php
02.
# **************************************
03.
# js キャッシュ用
04.
# **************************************
05.
$tm
=
mktime
();
06.
07.
# **************************************
08.
# 画面定義
09.
# ( Ruby や Python に合わせた画面形式 )
10.
# **************************************
11.
$out_client
= <<<HTML
12.
<!DOCTYPE html>
13.
<html>
14.
<head>
15.
<meta charset=
"utf-8"
>
16.
<meta content=
"width=device-width initial-scale=1.0 minimum-scale=1.0 maximum-scale=1.0 user-scalable=no"
name=
"viewport"
>
17.
<title>MySQL 問合せ</title>
18.
19.
<script src=
"https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"
></script>
20.
<link rel=
"stylesheet"
href=
"https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.3.1/css/bootstrap.css"
/>
21.
22.
<script src=
"entry.js?{$tm}"
></script>
23.
24.
<style>
25.
body {
26.
margin: 0;
27.
}
28.
29.
#main {
30.
padding: 0px 16px 3px 16px;
31.
}
32.
33.
</style>
34.
</head>
35.
<body>
36.
<div
class
=
"alert alert-dark"
>
37.
簡易タイトル
38.
</div>
39.
<div id=
"main"
class
=
"table-responsive"
>
40.
41.
<table
class
=
"table table-hover"
>
42.
{
$GLOBALS
[
'table'
]}
43.
</table>
44.
45.
</div>
46.
</body>
47.
</html>
48.
HTML;
49.
50.
$out_client
;
51.
52.
53.
?>
model.php ( HTML 作成部分 )01.
<?php
02.
# ***************************
03.
# モデル用関数を定義する
04.
# ***************************
05.
06.
# ***************************
07.
# テーブル表示
08.
# ***************************
09.
function
build_table(
$con
) {
10.
11.
// デバッグ用
12.
file_put_contents
(
"debug.log"
,
"build_table:開始\n"
, FILE_APPEND );
13.
file_put_contents
(
"debug.log"
, print_r(
$con
,true ) , FILE_APPEND );
14.
15.
// TR 内の HTML 文字列
16.
$lines
=
""
;
17.
$sql
= <<<SQL
18.
select
19.
社員コード,
20.
氏名,
21.
フリガナ,
22.
所属,
23.
性別,
24.
作成日,
25.
更新日,
26.
給与,
27.
手当,
28.
管理者,
29.
DATE_FORMAT(生年月日,
'%Y/%m/%d'
)
as
生年月日
30.
from 社員マスタ
31.
where 氏名 like
'%{$_REQUEST["db"]["nm"]}%'
32.
SQL;
33.
34.
$rs
=
$con
->query(
$sql
);
// エラー処理省略(本当は必要)
35.
// デバッグ用
36.
file_put_contents
(
"debug.log"
, print_r(
$rs
,true ) , FILE_APPEND );
37.
38.
// 列情報を取得( タイトル用 )
39.
$fields_data
=
$rs
->fetch_fields();
40.
foreach
(
$fields_data
as
$field
){
41.
$lines
.=
"<th>{$field->name}</th>"
;
42.
}
43.
44.
// 列データを取得
45.
while
(
$row
=
$rs
->fetch_array(MYSQLI_BOTH) ) {
46.
47.
$cells
=
""
;
48.
for
(
$i
= 0;
$i
<
$rs
->field_count;
$i
++ ) {
49.
$cells
.=
"<td>{$row[$i]}</td>"
;
50.
}
51.
52.
$lines
.=
"<tr>{$cells}</tr>"
.
"\n"
;
53.
}
54.
55.
// 埋め込み用グローバル変数へセット
56.
$GLOBALS
[
'table'
] =
$lines
;
57.
58.
// デバッグ用
59.
file_put_contents
(
"debug.log"
,
"build_table:終了\n"
, FILE_APPEND );
60.
61.
}
62.
63.
64.
?>
settings.php ( 共通設定 )01.
<?php
02.
// ***************************
03.
// 共通処理( UTF8N で保存 )
04.
// ***************************
05.
error_reporting
( E_ALL & ~E_NOTICE & ~E_STRICT );
06.
ini_set
(
'display_errors'
,
'1'
);
07.
ini_set
(
'date.timezone'
,
'Asia/Tokyo'
);
08.
ini_set
(
'default_charset'
,
'utf-8'
);
09.
session_cache_limiter(
'nocache'
);
10.
session_start();
11.
header(
"Content-Type: text/html; charset=utf-8"
);
12.
13.
14.
foreach
(
$_REQUEST
as
$key
=>
$value
) {
15.
16.
# ここで
$_REQUEST
内の文字列のセキュリティ上の処理
17.
18.
}
19.
20.
# デバッグログの初期化
21.
file_put_contents
(
"debug.log"
,
"開始\n"
);
22.
23.
# メッセージ
24.
$check_message
=
""
;
25.
26.
# クライアントコントロール
27.
$pass
=
"1"
;
28.
?>
PHP : mysqli を使用した単純な問合せアプリケーション
|