掲示板

PHP で Data Base を使った掲示板のプログラムです。
同時にログインしているメンバーとリアルタイムにやりとりすることも出来ます。

掲示板のプログラムを呼び出すコードです。
<a href="http://maedakobe.rw.xsi.jp/php/dbchat.php">掲示板</a>
次のリンクをクリックすると掲示板が呼び出されます。
掲示板

掲示板

  1. Data Base を使って掲示板のプログラムを作成します。
    事前にサーバー上に掲示板を記録する Data Base(chat.db)を作成します。
    Data Base の作成は Data Base を作成 を参照して下さい。
    <html>
    <head><title>chat.db を作成</title></head>
    <body>
    <?php
        $flag = file_exists('chat.db');
        $db = new SQLite3('chat.db');
        if ($flag==false)
        {   $db->exec('create table table1 (key, id, msg)');
            $db->exec("insert into table1 values('9999/99/99 99:99:99', '前田',
              '掲示板を始めました。要望や相互連絡に利用して下さい。')");
        }
        $db->close();
        print "chat.db create complete";
    ?>
    </body>
    </html>
    
  2. 掲示板のプログラム(dbchat.php)です。
    <html>
    <head><title>掲示板</title></head>
    <body>
    <?php
        date_default_timezone_set("Asia/Tokyo"); 
        $mode= $_POST['mode'];
        $id= $_POST['id'];
        $msg= $_POST['msg'];
        $key= date("Y/m/d H:i:s");
        $db = new SQLite3('chat.db');
        if (!isset($id))
        {   print "IDを入力して下さい";  }
        else
        {
            switch($mode)
            {   case "PUT":
                    $db->exec("insert into table1 values(\"$key\", \"$id\", \"$msg\")");
                    break;
                case "IN":
                    $db->exec("insert into table1 values(\"$key\", \"$id\", '入室しました')");
                    break;
                case "OUT":
                    $db->exec("insert into table1 values(\"$key\", \"$id\", '退室しました')");
                    break;
            }
        }
        $results = $db->query('SELECT * FROM table1 ORDER BY key DESC');
        $n= 0;
        while($row = $results->fetchArray())
        {   if ($n<20)
            {   print "$row[id] : $row[key] : $row[msg]<br>\r\n";  }
            else
            {   $key= $row[key];
                $db->exec("delete from table1 where key=\"$key\"");
            }
            $n++;
        }
        $db->close();
    ?>
        <h3>IDとメッセージをタイプして下さい</h3>
        <form action="dbchat.php" method="post">
          ID: <input type="text" name="id"
        <?php
          print("value=$id><br>");
        ?>
        <textarea name="msg" rows="8" cols="50"></textarea><br>
        <input type="submit" name="mode" value="GET" />
        <input type="submit" name="mode" value="PUT" />
        <input type=submit name="mode" value="IN" />
        <input type=submit name="mode" value="OUT" />
        </form>
    </body>
    </html>
    
  3. 【実行画面】
    'dbchat.php' を呼び出したときの画面です。

  4. Form からIDとメッセージをタイプして PUT で送信します。
    GET で送信すると最新の情報が表示されます。
    IN は入室を OUT は退室を記録しますが、送信しなくても構いません。
    ホームページに対する要望や相互連絡に利用して下さい。
  5. Form から渡されたパラメータ(mode, id, msg)を受け取ります。
    $key に現在の日付を設定します。
    掲示板を管理するキー項目として $key を使います。
        $mode= $_POST['mode'];
        $id= $_POST['id'];
        $msg= $_POST['msg'];
        $key= date("Y/m/d H:i:s");
    
  6. $mode ごとに Data Base にメッセージを追加します。
            switch($mode)
            {   case "PUT":
                    $db->exec("insert into table1 values(\"$key\", \"$id\", \"$msg\")");
                    break;
                case "IN":
                    $db->exec("insert into table1 values(\"$key\", \"$id\", '入室しました')");
                    break;
                case "OUT":
                    $db->exec("insert into table1 values(\"$key\", \"$id\", '退室しました')");
                    break;
            }
    
  7. $results = $db->query('SELECT * FROM table1 ORDER BY val DESC'); で登録日付の新しい順に並べて表示します。
        $results = $db->query('SELECT * FROM table1 ORDER BY key DESC');
        $n= 0;
        while($row = $results->fetchArray())
        {   if ($n<20)
            {   print "$row[id] : $row[key] : $row[msg]<br>\r\n";  }
    
  8. 20件を超えたメッセージは日付の古いものから削除します。
            else
            {   $key= $row[key];
                $db->exec("delete from table1 where key=\"$key\"");
            }
            $n++;
        }
    
  9. Form を使った Data Base のプログラムは ハイスコア・ランキング を参照して下さい。
        <h3>IDとメッセージをタイプして下さい</h3>
        <form action="dbchat.php" method="post">
          ID: <input type="text" name="id"
        <?php
          print("value=$id><br>");
        ?>
        <textarea name="msg" rows="8" cols="50"></textarea><br>
        <input type="submit" name="mode" value="GET" />
        <input type="submit" name="mode" value="PUT" />
        <input type=submit name="mode" value="IN" />
        <input type=submit name="mode" value="OUT" />
        </form>
    

前田稔の超初心者のプログラム入門
PHP Program