私は職場でミニコメントボードを作成しようとしています。私たちのうち10人がいます。皆に見せるために、それぞれの人にアイテムを追加できるようにしています。このアイデアは、サーバー上の同じフォルダにあるCSVファイルにデータを書き込み、そこから読み取るHTML Webページ(内部消費用)として構造化することです。私はそれをWebページ上のテーブルとして表示し、個人がCSVファイルに書き込まれてテーブルに表示される新しいエントリを追加できるようにしたいと思います。私は基本的なHTMLで大丈夫ですが、私はCSVファイルの読み書き方法を知りません。私はJavascript、PHP、SQLなどについて少し読んだことがありますが、私は最良のアプローチについてはわかりません。どのようなガイダンス(コードの実例へのポインタを含む)は非常に高く評価されます。Webページからの.CSVファイルへの読み込み/書き込み
答えて
Javascriptでのみ実行したい場合は、Node.Jsサーバーを使用してすべてのコンサマーのデータを取得して保存することができます。しかし、PHP、Node.Js、Ruby、Python(...)スクリプトを作成しても、データを取得して単一のデータベース(CSV、MySQL、MongoDB、等。)。
ここでは、Pusherのようなリアルタイムでの優れた解決策があります。それらのすべては、あなたが本当に望むものに依存しています。 RestAPIに関するドキュメントがあります。some PHP frameworks
申し訳ありませんが、私はこのすべてに全く新しいので、私は実際に上記のいずれかを理解していません!私はCSVファイルからデータを取得し、それをHTMLの表に表示することができる非常に簡単な解決策があることを期待していました - たぶんHTMLに埋め込むことのできる数行のJavaScriptコードですか? – Richard
ミニボードの出発点として、以下のコードを使用することができます。コンストラクタには、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());
フォームのレンダリング時にコメント時間が設定されます。これはおそらくあなたが望むものではありません。コメントが送信された時刻に変更するには、フォーム処理ブロック内に '$ ts = time();'を置き、投稿された値は無視してください。 – Progrock
- 1. TABで区切られたCSVファイルへの書き込みと読み込み
- 2. ファイルへの読み書きの高速読み込みと書き込み
- 3. InputStreamからの読み込みとOutputStreamへの書き込み
- 4. AndroidからPCへのUSBの読み込み/書き込み
- 5. クォーツジョブからデータベースへの読み込み/書き込み
- 6. Delphi:ファイルへの変数の書き込み/読み込み
- 7. ファイルへのC++の読み込みと書き込み
- 8. Javaの同じファイルへの読み込みと書き込み
- 9. plistファイルへの読み込みと書き込み
- 10. C++ .csvファイルからの読み込み
- 11. CSVへの書き込み
- 12. ファイル読み込みと書き込み
- 13. DBからの読み取りとファイルへの書き込み
- 14. ファイルから読み込み、Javaのファイルに書き込む
- 15. ファイルへの入力の書き込みとC++でのファイルの読み込み
- 16. .csvファイルからダブルアレイへの読み込み
- 17. C wierd出力でのCSVファイルの書き込みと読み込み
- 18. CSVファイルを読み込んでCSVファイルに書き込む
- 19. GCP Dataflow-ストレージからCSVファイルを読み込み、BigQueryに書き込む
- 20. オブジェクトの書き込み/読み込み
- 21. Androidの書き込み/読み込み中の画像へ
- 22. ELMAHログ情報のカスタムテーブルへの読み込み/書き込み
- 23. VC++のXMLへの書き込みと読み込み
- 24. std :: complex値のバイナリファイルへの書き込み/読み込み
- 25. 大きなJSONObjectのファイルへの書き込み/読み込みAndroid
- 26. ユーザ空間からのprocエントリへの読み込み/書き込み
- 27. csvファイルへのパイピングデータのPython書込み
- 28. 書き込み中のByteArrayOutputStreamからの読み込み
- 29. PHPテキストファイルへの書き込みと読み込み
- 30. ADLAへの同時読み込み/書き込み
SQLをお持ちの場合は、テーブルとして保存しないのはなぜですか? – Terry
私はSQLを持っているとは思わない!私が読んだことのある多くのツールのうちの1つです。 – Richard
Google Docsのように、試しただけでテストしたソリューションを使用しないでください。 – Terry