0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

[PHP]1行チャットプログラム

Posted at

こちらを参考に作ってみました。

[PHP]1行チャットプログラム

ロジック部分

<?php
$filename = 'chat_data.dat'; //チャットのデータを格納するファイル

if(isset($_POST['name']) || isset($_POST['comment'])) {
    $name = $_POST['name'];
    $comment = $_POST['comment'];
    date_default_timezone_set('Asia/Tokyo');
    file_put_contents($filename, date("y/m/d H:i").",".$name.",".$comment."\n", FILE_APPEND); //ファイルへの書き込み(1書き込みごとに改行する)
}
$contents = file_get_contents($filename); //ファイルの読み込み
$lines = explode("\n", $contents); //読み込んだ内容を1書き込みごとに分け、配列に入れる
?>
...
<?php    
    foreach($lines as $value) {
        list($date, $name, $comment) = array_pad(explode(",", $value, 3), 3, null); //$linesをさらに","ごとに分け、それぞれ$date, $name, $commentに格納
?>
    <tbody>
        <tr>
            <td><?php echo $date; ?></td>
            <td><?php echo $name; ?></td>
            <td><?php echo $comment; ?></td>
        </tr>
    </tbody>  
<?php } ?>

制作物

![chat.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1076475/31c16345-91b3-a23a-f7b3-445343c75c2d.png)

学んだこと

・ファイル操作

file_put_contents($filename, date("y/m/d H:i").",".$name.",".$comment."\n", FILE_APPEND); //ファイル書き込み。FILE_APPENDはファイルの最後に追記することを表す
file_get_contents($filename); //ファイル読み込み

・文字列を任意の文字列で分割

$lines = explode("\n", $contents);

・array_pad()

list($date, $name, $comment) = array_pad(explode(",", $value, 3), 3, null);

explode()によって返される配列を3に制限し、返される値が3未満の場合、3になるまでnullが追加されるそう。
最初foreachで回す部分を

<?php    
    foreach($lines as $value) {
        $data = explode(",", $value); 
?>
        <table>
            <tr>
                <td><?php echo $data[0]; ?></td>
                <td><?php echo $data[1]; ?></td>
                <td><?php echo $data[2]; ?></td>
            </tr>
        </table>
<?php } ?>

こう書いていましたが、「Undefined offset: 1」「Undefined offset: 2」が消えず、、、
ロジック部分の該当箇所に修正したら消えました。
あと、list(変数1, 変数2,,,)の書き方初めて知った。便利そう!

感想

bootstrap初めて使ったけど便利!
0
1
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?