勉強したことのメモ

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でディレクトリの作成と削除

PHPでユーザID毎にディレクトリを作成しその中にキャッシュファイルを格納したか ...

PHPでファイルを添付してメール送信

PHPでファイルを添付の上、メールを送信したかった。方法を探したところphpma ...

画像をURLから取得して異なるサーバーにアップロード

■やりたかった事 ・画像があるサーバーはaaaサーバー ・アップロード先はbbb ...

JSONをPHPで扱う

JSONデータはjavascriptで扱うものと思ってたけど、 PHPでも使える ...

フォーム用テンプレPHP

<?php ini_set( 'display_errors', 0 ); ...

$_SERVER['PHP_SELF']に脆弱性あり

formのaction属性とかページングのリンクとかで、 <form ac ...

PHPで配列に特定の値が入っているか検索

PHPで配列に特定の値が入っているか検索して trueかfalseを返したい、と ...

PHPでフォームの禁止ワード制限

掲示板等で本文を送信する際に、禁止ワードが含まれていないかチェックするプログラム ...

javascriptでHTML内に関数を書きたい場合

ダイアログ確認したいだけでわざわざfunctionを 書くのもアレだという時に使 ...

当選確率が異なる抽選(ガチャ)をPHPで作成

ソシャゲのガチャみたいな、当選確率が異なる抽選をPHPで作成したかった。調べたと ...