Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/254.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从网页读取/写入.CSV文件_Javascript_Php_Html_Csv - Fatal编程技术网

Javascript 从网页读取/写入.CSV文件

Javascript 从网页读取/写入.CSV文件,javascript,php,html,csv,Javascript,Php,Html,Csv,我试图在工作中创建一个小型“评论板”。我们一共有10个人,我希望我们每个人都能够向其中添加项目,让每个人都能够查看。其想法是将其构造为一个HTML网页(仅供内部使用),数据写入和读取CSV文件,该文件将位于服务器上的同一文件夹中。我想将其显示为网页上的表格,并允许个人添加新条目,这些条目将写入CSV文件并显示在表格中。我可以使用基本的HTML,但我不知道如何读取和写入CSV文件。我读过一些关于Javascript、PHP、SQL等的文章,但我不确定最好的方法是什么。任何指导(包括指向代码工作示例

我试图在工作中创建一个小型“评论板”。我们一共有10个人,我希望我们每个人都能够向其中添加项目,让每个人都能够查看。其想法是将其构造为一个HTML网页(仅供内部使用),数据写入和读取CSV文件,该文件将位于服务器上的同一文件夹中。我想将其显示为网页上的表格,并允许个人添加新条目,这些条目将写入CSV文件并显示在表格中。我可以使用基本的HTML,但我不知道如何读取和写入CSV文件。我读过一些关于Javascript、PHP、SQL等的文章,但我不确定最好的方法是什么。任何指导(包括指向代码工作示例的指针)都将不胜感激。

如果您只想使用Javascript实现这一点,您可以使用Node.Js server来检索和存储所有用户的数据。但是,即使您创建了PHP、Node.Js、Ruby、Python(…)脚本,您也必须开发一个API,以便能够检索数据并将其存储在单个数据库(CSV、MySQL、MongoDB等)中


实时可能是一个很好的解决方案,比如。所有这些都取决于你真正想要什么。这里有一些关于,有无

的文档,您可以将下面的代码作为迷你板的起点。只需向构造函数传递可由web服务器写入的路径

下面只是一个表单,它将获取一条由时间戳、名称和注释组成的消息。过帐后,此信息将保存到CSV文件中

所有注释都存储在一个数组中,每次添加注释时,都会将其添加到数组中,然后整个数组作为CSV保存到磁盘中

没有备份的董事会,没有文件锁定,它缺乏技巧。 也没有用户登录系统或任何东西。我把它作为练习留给你

它是一个纯html/php解决方案,您可以自由定制

<?php
class Board
{
    public $path_to_csv;
    public $comments = [];

    public function __construct($path_to_csv)
    {
        $this->path_to_csv = $path_to_csv;
        $this->load();
    }

    public function load()
    {
        if(!is_file($this->path_to_csv))
            file_put_contents($this->path_to_csv, '');
        if (($fh = fopen($this->path_to_csv, "r")) !== FALSE) {
            while (($data = fgetcsv($fh)) !== FALSE) {
                $this->comments[] = $data;
            }
            fclose($fh);
        }
    }

    public function addComment($ts, $username, $comment)
    {
        $this->comments[] = array($ts, $username, $comment);
        $this->save();
    }

    public function getComments()
    {
        return $this->comments;
    }

    public function save()
    {
        $fp = fopen($this->path_to_csv, 'w');
        foreach($this->comments as $comment) {
            fputcsv($fp, $comment);
        }
        fclose($fp);
    }
}

class ViewHelpers
{
    public function form($action = '', $ts)
    {
        ?>
        <form method="POST" action="<?=$action ?>">
            <input type="hidden" name="ts" value="<?=$ts ?>">
            <label for="username">Name:</label>
            <input type="text" name="username"><br />
            <label for="comment">Comment:</label>
            <textarea name="comment"></textarea>
            <input type="submit" name="submit" value="Submit comment">
        </form>
        <?php
    }
    public function escape($string)
    {
        return htmlspecialchars($string);
    }
    public function table(array $comments)
    {
        if(!count($comments)) return; // No comments equals don't show.
        //$comments = array_reverse($comments);
        ?>
        <table>
            <thead>
                <tr>
                    <th>
                        Date
                    </th>
                    <th>
                        User
                    </th>
                    <th>
                        Comment
                    </th>
                </tr>
            </thead>
            <tbody>
            <?php foreach($comments as $comment) { ?>
                <tr>
                    <td>
                        <?=date('r', $this->escape($comment[0])); ?>
                    </td>
                    <td>
                        <?=$this->escape($comment[1]); ?>
                    </td>
                    <td>
                        <?=nl2br($this->escape($comment[2])); ?>
                    </td>
                </tr>
            <?php } ?>
            </tbody>
        </table>
        <?php
    }
    public function feedback($string)
    {
        if(!$string) return;
        ?>
        <p>
            <?=$this->escape($string); ?>
        </p>
        <?php
    }
}

// Path to where you want to store your csv file.
$board = new Board('/tmp/comments.csv');
$feedback = '';

// Process form submissions.
if($_SERVER['REQUEST_METHOD'] == 'POST') {
    $ts = isset($_POST['ts']) ? $_POST['ts'] : null;
    $username = isset($_POST['username']) ? $_POST['username'] : null;
    $comment  = isset($_POST['comment'])  ? $_POST['comment'] : null;
    if(!empty($username) && !empty($comment)) {
        $board->addComment($ts, $username, $comment);
    }
    else {
        $feedback = 'Please fill in all fields.';
    }
}
$viewHelpers = new ViewHelpers;
// Your html here.
$viewHelpers->table($board->getComments());
$viewHelpers->feedback($feedback);
$viewHelpers->form("", time());


如果您有SQL,为什么不想将其存储为表呢?我想我没有SQL!这只是我读过的众多工具中的一个。如果你想要一个非常简单的解决方案,为什么不使用一个经过测试的解决方案,比如谷歌文档呢?对不起,但我对所有这些都是全新的,所以我实际上不了解上面的任何内容!我曾希望有一个非常简单的解决方案,使我能够从CSV文件中获取数据并以HTML格式显示在表格中——也许只有几行javascript代码可以嵌入HTML?在呈现表单时设置注释时间,这可能不是您想要的。要更改提交评论的时间,只需放置
$ts=time(),忽略过账值。