最初の1時間だけ欠席して歯医者さんに行ってきました。
多分1年ぐらいかかりそう;
インデントは自分で揃えてくだしあ。
1~3時間
削除ページ
☆以下共通☆
comment_idだけど、ID取りにいってるからねー。この掲示板ではcomment_idとidは一緒だよ。
*index.php*
<?php } ?>
<a href="./delete.php?comment_id=<?php echo $row1["id"]?>">削除</a>
*delete.php*
<?php while($row = mysql_fetch_array($result)) { ?>
<div style="border:1px solid #ddd;margin-bottom:10px;padding:5px;">
<?php if (($row["url"]=="") or ($row["url"]==null)) { ?>
<?php echo $row["nickname"] ?> さんの投稿 <br />
<?php }else { ?>
<a href="<?php echo $row["url"]?>"><?php echo $row["nickname"]?></a> さんの投稿
<?php } ?>
<?php if (($row["mail1"] != "" ) || ($row["mail1"] != null )) { ?>
<a href="<?php echo $row["mail1"]?>">メール</a>
<?php } ?>
<br />
<?php echo $row["content"] ?>
<br>
<?php if (($row["photo"]!="") or ($row["photo"]!=null)) { ?>
<img src="./img/<?php echo $row["photo"]?>" alt ="<?php echo $row["photo"]?>"
width=200><br />
<?php } ?>
<?php if (($row["photo2"]!="") or ($row["photo2"]!=null)) { ?>
<img src="./img2/<?php echo $row["photo2"]?>" alt ="<?php echo $row["photo2"]?>"
width=200><br />
<?php } ?>
<?php echo $row["created_at"] ?>
</div>
<?php } //while文終わり ?>
本当に削除してもいいですか? <br><br>
<form action="delete_submit.php" method="post">
<input type="submit" name="delete" value=" 削除する ">
<input type="hidden" name="comment_id" value="<?php echo $comment_id;?>">
</form>
*delete_submit*
<pre class="prettyprint">
//comment_id(コメントテーブルの主キー)を取りに行く
$comment_id = $_POST["comment_id"];
//mysql に接続する
$db = mysql_connect('localhost','yamazaki','2100');
// データベースを選択する
$sdb = mysql_select_db('study');
// 親子一緒にDELETE文を実行
$sql = "delete FROM comment where id = '".$comment_id."'";
$result = mysql_query($sql);
$sql = "delete FROM reply where id = '".$comment_id."'";
$result = mysql_query($sql);
</pre>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>SHONAN BBS</title>
</head>
<body>
<h1>SHONAN BBS</h1>
削除しました。<br />
<a href="index.php"> 戻る </a>
・4時間目
物理削除と論理削除
物理削除:完全に削除。例)Delete文
論理削除:削除自体は行わないが、フラグなどで削除したことにし、表示上見えないようにする。
論理削除に必要なもの
DB側:テーブル・フラグ
ソースコード:参照(select)・削除つか判定フラグ
◆まずはテーブル作成
alter table comment add delete_fig tinyint(1) default 0;
alter table reply add delete_fig tinyint(1) default 0;
MySQLではカラム単位でtrue/falseのbool型が使えない。0か1の判断しかない。
なのでtinyint(1)で0~9までの数字で判断する処理を行う。
◆実際にフラグつけてみる。
update comment set delete_flg = 1;
index.phpにもフラグつけてみる。
// クエリを送信する
$sql = "SELECT * FROM comment where delete_flg = 0 order by created_at desc";
F5更新するとデータが見えなくなっている。これが論理削除の基本処理。
update comment set delete_flg = 0;で戻すよ。
ここから実装。
delete_submit.php以外にdelete_flg = 0;フラグ追加。
submit(画像のところ)
$sql = "select id from comment where delete_flg = 0 order by id desc limit 1";
それ以外
$sql = "SELECT * FROM reply where delete_flg = 0 and id = '".$comment_id."'";
明日続きとパスワード認証で削除。
来週はエラーチェック。
さらに今後は実習で仕様書見て作ってみよう。(登録+編集+削除+リスト表示)
おまけっていうかネタバレになってもたけど……。
・メールアドレス正規表現やってみた。
//メールアドレス正規表現
if ($mail1_mail1 !=null || $mail1_mail1 !="") {
if (! ereg ("[a-zA-Z0-9_.\-]+@[a-zA-Z0-9._\-]+",$mail1_mail1)){
$mail1_error_yn = 'y';
$error_yn = "y";
}
}
<?php if($mail1_error_yn == 'y') {?>
メールアドレスが正しくありません <br/>
<?php }?>