PHPでOOP (894レス)
上下前次1-新
34(1): 2007/02/26(月)23:07 ID:??? AAS
MVCのMをOOPでCは手続きVはテンプレート
35: 1 ◆SWtzLesEmM [age] 2007/02/27(火)15:21 ID:??? AAS
>>22 (1)最初はOOPを使わないで掲示板を作ってみる
OOPを使わないで作った簡単な掲示板をアップしてみます。
>>26
ファイルは、他に掲示板のトップページと、DB接続関係のデータを入れたファイルを用意しました。
WEBサーバのルート直下にデプロイした場合を想定しています。
/index.html 掲示板のトップページ
/db.php データベースの接続関係のデータのファイル
/input.php メッセージ入力ページ
/list.php メッセージ一覧ページ
/message.php メッセージ詳細ページ
36: 1 ◆SWtzLesEmM 2007/02/27(火)15:22 ID:??? AAS
index.htmlの内容は以下の通りです。
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>掲示板メニュー</title>
</head>
<body>
<h1>掲示板メニュー</h1>
<div id="menu">
<ul>
省6
37: 1 ◆SWtzLesEmM 2007/02/27(火)15:24 ID:??? AAS
db.phpの内容は以下の通りです。
<?php
/**
* データベース
*/
//本番環境ドメイン名
define("DOMAIN", "xrea.com");//ドメイン名に含まれる文字列を指定
//MySQL設定(本番環境とテスト環境で切替え)
if (ereg(DOMAIN, $_SERVER['SERVER_NAME'])) {
//本番環境
省12
38: 1 ◆SWtzLesEmM 2007/02/27(火)15:25 ID:??? AAS
db.phpの続きです。
//MySQL接続関数
function db_connect() {
// MySQL 接続
$link = mysql_connect(DBSERVER, DBUSER, DBPASSWORD);
if (!$link) {
die('mysql_connect ERROR: ' . mysql_error());
}
// MySQL DB 選択
$db_selected = mysql_select_db(DBNAME, $link);
省7
39: 1 ◆SWtzLesEmM 2007/02/27(火)15:26 ID:??? AAS
db.phpの続き(その2)です。
//MySQLプリペアードステートメント関数(SQLインジェクション対策)
//(参考)外部リンク[php]:www.php.net
function mysql_prepare($query, $phs = array()) {
$phs = array_map(create_function('$ph', 'return "\'".mysql_real_escape_string($ph)."\'";'), $phs);
$curpos = 0;
$curph = count($phs)-1;
for ($i = strlen($query) - 1; $i > 0; $i--) {
if ($query[$i] !== '?') {
continue;
省12
40: 1 ◆SWtzLesEmM 2007/02/27(火)15:30 ID:??? AAS
input.phpの内容は以下の通りです。
<?php
/**
* メッセージ入力画面
*/
require_once("db.php");
db_connect();
//
$name = $_POST['name'];
$title = $_POST['title'];
省3
41(2): 1 ◆SWtzLesEmM 2007/02/27(火)15:30 ID:??? AAS
db.phpの続きです。
//入力値バリデート
if (0 < strlen($name) && 0 < strlen($title) && 0 < strlen($message)) {
//DB保存処理
$create_date = date("Y/m/d H:i:s");
$sql = "INSERT message SET
name = ? ,
title = ? ,
message = ? ,
create_date = ? ";
省13
42: 1 ◆SWtzLesEmM 2007/02/27(火)15:34 ID:??? AAS
>>41
間違えました。
>db.phpの続きです。
ではなくて、
「input.phpの続きです。」
でした。(・∀・)
あと、
>$url = "外部リンク:".$_SERVER['HTTP_HOST']."/test2/list.php";//メッセージ一覧
ではなくて、
$url = "外部リンク:".$_SERVER['HTTP_HOST']."/list.php";//メッセージ一覧
省4
43: 1 ◆SWtzLesEmM 2007/02/27(火)15:40 ID:??? AAS
>>41の訂正です。
input.phpの続きです。
//入力値バリデート
if (0 < strlen($name) && 0 < strlen($title) && 0 < strlen($message)) {
//DB保存処理
$create_date = date("Y/m/d H:i:s");
$sql = "INSERT message SET
name = ? ,
title = ? ,
message = ? ,
省15
44: 1 ◆SWtzLesEmM 2007/02/27(火)15:42 ID:??? AAS
input.phpの続き(その2)です。
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>メッセージ入力</title>
</head>
<body>
<h1>メッセージ入力</h1>
<div id="menu">
<ul>
省21
45: 1 ◆SWtzLesEmM 2007/02/27(火)15:44 ID:??? AAS
list.phpの内容は以下の通りです。
<?php
/**
* メッセージ一覧画面
*/
require_once("db.php");
db_connect();
//
$page = intval($_GET['page']);
$max = 10;//1ページ当たりの最大表示件数
省12
46: 1 ◆SWtzLesEmM 2007/02/27(火)15:45 ID:??? AAS
list.phpの続きです。
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>メッセージ一覧</title>
</head>
<body>
<h1>メッセージ一覧</h1>
<div id="menu">
<ul>
省14
47: 1 ◆SWtzLesEmM 2007/02/27(火)15:46 ID:??? AAS
list.phpの続き(その2)です。
<table border="1" cellpadding="5">
<tr bgcolor="#FFFF99">
<td>タイトル</td>
<td>投稿者名</td>
<td>投稿日</td>
</tr>
<?php
//メッセージ一覧
while ($rows = mysql_fetch_array($result)) {
省10
48: 1 ◆SWtzLesEmM 2007/02/27(火)15:47 ID:??? AAS
message.phpの内容は以下の通りです。
<?php
/**
* メッセージ詳細画面
*/
require_once("db.php");
db_connect();
//
$message_id = intval($_GET['message_id']);
//メッセージ取得
省8
49: 1 ◆SWtzLesEmM 2007/02/27(火)15:49 ID:??? AAS
message.phpの続きです。
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>メッセージ詳細</title>
</head>
<body>
<h1>メッセージ詳細</h1>
<div id="menu">
<ul>
省9
50: 1 ◆SWtzLesEmM 2007/02/27(火)15:50 ID:??? AAS
message.phpの続き(その2)です。
<tr>
<td bgcolor="#FFFF99">投稿日</td>
<td><?php echo htmlspecialchars($row['create_date']); ?></td>
</tr>
<tr>
<td bgcolor="#FFFF99">タイトル</td>
<td><?php echo htmlspecialchars($row['title']); ?></td>
</tr>
<tr>
省6
51: 1 ◆SWtzLesEmM 2007/02/27(火)15:59 ID:??? AAS
それでは、次行ってみよう!
>>22 (2)次にOOPで同じ掲示板を作ってみる
>>34
PHPコードとHTML表示を一緒にしてありますが、OOPではテンプレートシステムを使って、PHPコードとHTML表示部分を分離して、MVCにしてみたいです。
どういうクラスを作ればいいのか良く分かりません><
(1)コントローラー(+アクション)→input、list、message
(2)モデル→データベース接続処理も1つのクラスにするのでしょうか?
(4)ビュー→テンプレートシステムへの出力
というかんじで3個のクラスが必要でしょうか?
それぞれのクラスに必要なプロパティとメソッドを何にするか?
省1
52: 2007/02/27(火)22:54 ID:??? AAS
がんばってるなあ。
おれもがんばろう。
53(2): 2007/02/28(水)03:12 ID:??? AAS
わかりにくいからWebサイトにまとめてくれ。PHP使いなんだし
上下前次1-新書関写板覧索設栞歴
あと 841 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.026s