勉強したことのメモ

Webエンジニア / プログラマが勉強したことのメモ。

PHPのclassを用いてBBS作成

   2014/06/06  PHP

オブジェクト指向勉強中のメモ。

■index.php
<?
error_reporting(E_ALL & ~E_NOTICE);
include("../db.class.php");
include("./bbs.class.php");
$con = new dbConnection($dbhost, $dbuser, $dbpass);
$con -> dbCon('test');

if ($_POST['name'] && $_POST['body']) {
$create = new createBbs($_POST['name'], $_POST['body']);
$create -> insert();
header("Location:" . $_SERVER['PHP_SELF']);
} else if ($_GET['mode'] == 'delete' && is_numeric($_GET['seq'])) {
$deleteBbs = new deleteBbs($_GET['seq']);
$deleteBbs -> deleteData();
header("Location:" . $_SERVER['PHP_SELF']);
}
?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transtional//EN" "http://www.w3c.org/TR/html4/loose.dtd">
<meta http-equiv="content-type" content="text/html"/>
<meta cherset = "UTF-8">
<link href="//netdna.bootstrapcdn.com/twitter-bootstrap/2.3.2/css/bootstrap-combined.min.css" rel="stylesheet">
<script src="//netdna.bootstrapcdn.com/twitter-bootstrap/2.3.2/js/bootstrap.min.js"></script>
<html lang="ja">
<head>
<title>BBS</title>
<script>
function deleteBbs (seq) {
if (window.confirm('削除してよろしいですか?')) {
location.href = '<?=$_SERVER["PHP_SELF"];?>?mode=delete&seq=' + seq;
} else {
return false;
}
}
</script>
</head>
<body>
<h1>BBS</h1>
<form action="" method="post">
名前:<input type="text" name="name"><br />
本文:<textarea name="body"></textarea><br />
<input type="submit" value="書き込み"><br />
</form>
<hr>
<?
$bbsObj = new readBbs();
$setData = $bbsObj -> setBbsData();
$bbsData = $bbsObj -> getBbsData();
for ($i = 0; $i < count($bbsData); $i++) :
?>
名前:<?=htmlspecialchars($bbsData[$i]['name']);?><br />
書き込み時間:<?=htmlspecialchars($bbsData[$i]['time']);?><br />
本文:<?=htmlspecialchars($bbsData[$i]['body']);?><br />
<a href="javascript:void(0);" onClick="return deleteBbs(<?=htmlspecialchars($bbsData[$i]['seq']);?>)">[削除]</a>
<hr>
<? endfor; ?>
</body>
</html>

■bbs.class.php
<?
//書き込み処理
class createBbs {
private $name;
private $body;

public function __construct ($name, $body) {
$this -> name = $name;
$this -> body = $body;
}

public function insert() {
$sql = '
INSERT INTO bbs
(
name,
body,
time
)
VALUES
(
"' . mysql_real_escape_string($this -> name) . '",
"' . mysql_real_escape_string($this -> body) . '",
now()
)
';
$row = mysql_query($sql);
}
}

//呼び出し処理
class readBbs {
private $bbsData = array();

public function setBbsData () {
$sql = '
SELECT *
FROM bbs
ORDER BY seq DESC
';
$row = mysql_query($sql);
$i = 0;
while ($rs = mysql_fetch_array($row)) {
$this -> bbsData[$i]['seq'] = $rs['seq'];
$this -> bbsData[$i]['name'] = $rs['name'];
$this -> bbsData[$i]['body'] = $rs['body'];
$this -> bbsData[$i]['time'] = $rs['time'];
$i++;
}
}

public function getBbsData () {
return $this -> bbsData;
}
}

//削除処理
class deleteBbs {
private $seq;

public function __construct ($seq) {
$this -> seq = $seq;
}

public function deleteData(){
$sql = '
DELETE FROM bbs
WHERE seq = ' . $this -> seq . '
LIMIT 1
';
$row = mysql_query($sql);
}

}

■db.class.php
<?
$dbhost = 'aaa'; // サーバ名
$dbuser = 'bbb'; // ID
$dbpass = 'ccc'; //pass

class dbConnection {
private $dbhost;
private $dbuser;
private $dbpass;

public function __construct ($dbhost, $dbuser, $dbpass) {
$this -> dbhost = $dbhost;
$this -> dbuser = $dbuser;
$this -> dbpass = $dbpass;
}

public function dbCon ($dbname) {
mysql_connect($this -> dbhost, $this
-> dbuser, $this -> dbpass);
mysql_query('SET NAMES UTF8');
mysql_select_db($dbname);
}
}

 - PHP

  関連記事

PHPでサイトURLからtitleとRSS用URLを取得

サイトのURLからRSS用URLとサイトタイトルを自動で取得したかった。その方法 ...

PHPの日付・時刻関連

使えそうなものをまとめてメモ。 【関数】 ----------- ■date 日 ...

PHPのエラーログの場所が設定されていない場合

php.iniでエラーログを取るようにはなっているけど、 ログファイルの場所が設 ...

PHPとStripeを使ってサイト内でクレジットカード決済処理の実装方法

PHPとStripeの組み合わせでWebサービスにクレジットカード決済処理を導入 ...

PHPで「Unable to allocate~」とエラー

PHPで「Unable to allocate memory for pool」 ...