PHP 掲示板で投稿件数の表示
#07 投稿件数を表示する
http://dotinstall.com/lessons/bbs_php/1007
を参考に
投稿件数の表示
これは $posts の配列の数を echo で表示する
配列の数を数えるのは
count()
を使えば、簡単にできるので
今回は、配列は$posts に入っているので
count($posts)
で調べることができる
<h2>投稿一覧</h2>
を
<h2>投稿一覧 (<?php echo count($posts); ?>)件</h2>
とすれば、今の投稿件数が表示されるようになる
次に、
#08 ユーザー名も投稿させる
http://dotinstall.com/lessons/bbs_php/1008
を参考に
投稿した人の名前も表示できるようにする
まずは、form の部分を書き換える
<input type=”text” name=”message”>
を
message: <input type=”text” name=”message”>
name <input type =”text” name=”user”>
とする
これにより、POSTで受けとるのが
message
user
となったのでPHP部分の修正が必要になる
投稿時の判定はそのままでいいので
名前の有無で、処理をわけるようにする
if(!empty($_POST[‘user’])){
$newData =$_POST[‘message’].”|ななしさん”;
}else{
$newData = $_POST[‘message’].”|”.$_POST[‘user’];
}
こうすることで、投稿した内容である message の後ろに
投稿者の名前が表示されるようになる
もし、名前なしなら
ななしさん
というようになる
PHP では . で文字列を連結できる
java script とかだと + で連結する
$newData は、連結した文字列の格納するための変数
また、追加する内容も増えているので
array_unshift($posts, $_POST[‘message’]);
の部分を
array_unshift($posts, $newData);
というようにする
$newData という変数にしたことで、ここで書くのが
楽になっている
表示するときに
$post の中には
message
user と2つになっているので処理が必要になる
このときに使うのが
list()
explode()
list() については
http://www.scollabo.com/banban/php/ref/ref_list.html
にあるように
引数に設定した変数を配列として渡す
explode()は
http://php.quus.net/strings/explode.php
にあるように
文字列を分割して配列にして返す
explode()の構文は
explode (“区切り文字”, “分割する文字列”, “要素数(リミット)”);
<?php list($message, $user) = explode(“|”, $post); ?>
とするので
explode(“|”, $post);
は
$post の中の文字で | となっているところで分割する
と言う意味
表示する内容が
$message
$user
となったので
<li><?php echo htmlspecialchars($post); ?></li>
を
<li><?php echo htmlspecialchars($message); ?> (<?php echo htmlspecialchars($user); ?>)</li>
とする