勉強したことのメモ

webプログラマが勉強したことのメモ。

PHPのclassを用いてBBS作成

      2014/06/06

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

■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でCSVファイル出力用の関数

ここのところログ系をCSVファイル出力にするケースが多かった為、使いまわせるよう ...

エラー管理まとめ2

これに続いてちょっとだけつまづいた点があったのでメモ。 ■ソース //ページTO ...

定数とグローバル宣言した配列

定数のメリットが分からず、ほとんど使ってこなかったけど 画像用のfunction ...

MySQLのREGEXPで半角記号を検索したい場合

MySQLのREGEXPで半角記号を検索したい場合 \\を付けてエスケープしない ...

CRUDのfunction化(処理ページ)

<?php //エスケープ用htmlspecialchars functi ...

独自タグを変換して画像を表示させる

やりたい事↓↓ ----- {$IMG1}~{$IMG5}までの独自タグがある。 ...

PHPで画像のフォーマット(拡張子)の変換

画像のアップロードでjpg/png/gif形式を受け付けつつ、 最終的にjpgで ...

PHPでのcookie

aaa.comにログインフォームがあって、IDパスを入れて ログインするとbbb ...

smart_resize_imageで縦横の比率関係なく、固定リサイズ

PHPで縦横どちらかが指定の長さを超えた場合、比率を保ったままリサイズで使ったs ...

PHPでログファイルから指定行数表示させる

エラーログを最新分から指定行数表示させる プログラムがあって、どういった作りにな ...