質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

XAMPP

XAMPP(ザンプ)は、ウェブアプリケーションの実行に必要なフリーソフトウェアをパッケージングしたApacheディストリビューションです。 XAMPPひとつインストールするだけで、Apache、MySQL、PHP、Perlなどのソフトウェアと、 phpMyAdminなどの管理ツール、SQLiteなどのソフトウェアやライブラリモジュールなどを利用することが可能です。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

1回答

4140閲覧

PHPでCSVファイルを読み込んで作ったtableに情報を追加する

退会済みユーザー

退会済みユーザー

総合スコア0

CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

XAMPP

XAMPP(ザンプ)は、ウェブアプリケーションの実行に必要なフリーソフトウェアをパッケージングしたApacheディストリビューションです。 XAMPPひとつインストールするだけで、Apache、MySQL、PHP、Perlなどのソフトウェアと、 phpMyAdminなどの管理ツール、SQLiteなどのソフトウェアやライブラリモジュールなどを利用することが可能です。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

1クリップ

投稿2016/03/17 04:37

###前提・実現したいこと
PHPでtebleを作るプログラムを作っています。
CSVファイルを読み込んでtableを作るのはうまくいったのですが、データを追記しようとするとうまくいきません。
やり方を教えていただけないでしょうか?
よろしくお願いします!

###発生している問題・エラーメッセージ
Notice: Undefined offset: 1 in C:\xampp\htdocs\php\table\table.php on line 23
Notice: Undefined offset: 2 in C:\xampp\htdocs\php\table\table.php on line 24
Notice: Undefined offset: 3 in C:\xampp\htdocs\php\table\table.php on line 25
###ソースコード

php

1//table.php 2<!DOCTYPE html> 3<html lang="ja"> 4<head> 5 <mata charset="utf-8"> 6 <title>管理画面</title> 7</had> 8<body> 9<!-- ファイルの中身を表示 --><br> 10販売履歴<br><br> 11<table border='1'> 12<tr><td>販売日</td><td>お客様</td><td>販売量</td><td>削減対象</td></tr> 13<?php 14 $fileName = "data.csv"; 15 $file = fopen($fileName, "r"); 16 while(!feof($file)){ 17 $csv = fgets($file); 18 $str = explode(",", $csv); 19 $days = htmlspecialchars($str[0]); 20 $customer = htmlspecialchars($str[1]); 21 $amount = htmlspecialchars($str[2]); 22 $target = htmlspecialchars($str[3]); 23 echo "<tr><td>$days</td><td>$customer</td><td>$amount</td><td>$target</td></tr>"; 24 } 25 fclose($file); 26?> 27</table><br><br> 28<!-- ファイルにデータを追記 --> 29データ追加<br><br> 30<form action="table_insert.php" method="POST"> 31 販売日<br> 32 <input type="text" name="days"><br> 33 お客様<br> 34 <input type="text" name="customer"><br> 35 販売量<br> 36 <input type="text" name="amount"><br> 37 削減対象<br> 38 <input type="text" name="target"><br> 39 <input type="submit"> 40</form> 41</body> 42</html>

php

1//table_insert.php 2<?php 3 4 $array = array( $_POST['days'], $_POST['customer'], $_POST['amount'], $_POST['target']); 5 $fileName = "data.csv"; 6 $file = fopen($fileName, "a"); 7 if($file){ 8 var_dump(fputcsv($file, $array)); 9 } 10 fclose($file); 11 12?> 13データを追加しました。 14<?php 15 header("Location: table.php"); 16?>

###補足情報(言語/FW/ツール等のバージョンなど)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

table.php の $csv = fgets($file); で、空行かどうかの判定が必要です。
また、読み込んでいる data.csv の改行コードの取り除きも必要だと思います。

以下のようにしてみたらどうでしょうか?

php

1$csv = trim(fgets($file)); 2if ( $csv == false ) { break; }

というように。

fgets($file) で読み込んだデータを trim で改行コードを取り除きます。
読み込んだデータが空かどうか判定し、空の場合 (空行) は break する。

投稿2016/03/17 05:09

youji

総合スコア257

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2016/03/17 05:36

教えていただいたとおりに変更して動かしたところ、うまくいきました! ありがとうございました!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問