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

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

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

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

PHP

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

Q&A

解決済

4回答

1214閲覧

phpによるcsv操作

sakaippap

総合スコア7

CSV

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

PHP

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

0グッド

1クリップ

投稿2020/03/18 07:28

編集2020/03/18 08:14

phpで掲示板を作っているのですがcsvで保存していて削除と更新をする方法を教えていただきたいです。

[削除]
$f = fopen("test.csv", "w+");

while ($line = fgetcsv($f)) {
// 読み込んだ結果を表示します。
$line[0] = "";
$line[1] = "";
$line[2] = "";
$line[3] = "";
}
// test.csvを閉じます。
fclose($f);

のように書くと全てが消えてしまいある一行だけを指定して削除したい場合はどうすればよいでしょうか

[更新]
$f = fopen("test", "w+");

while ($line = fgetcsv($f)) {
// 読み込んだ結果を表示します。

$line[$num][3] =$text;

}
// test.csvを閉じます。
fclose($f);

こちらも同じく上手くいかず困っています。

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

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

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

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

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

m.ts10806

2020/03/18 07:32

調べてもなにもでない内容ではないですし、過去質問にも頻出です。 まず調べてください。丸投げてもコピペで動くコードが出てくる内容ではないですし(DBが望ましいから)、それならどんなに不細工でも非効率でも下手くそでも自身でコード書いて見たほうが身に付きます。 課題なら先生に聞いてください
fiveHundred

2020/03/18 07:36

現状でどうなっているかすら書かれていないため、誰もまともに回答できません。 せめてコードとcsvの内容ぐらいは書いてください。 また、それだけだと丸投げ当然なので、どこまで分かっていてどこが分からないかも書いてください。 なお、これらは質問を編集する形で追記してください。 あと、以下も参考になると思います。 https://teratail.com/help/question-tips
m.ts10806

2020/03/18 08:25

コードはマークダウンのcode機能を利用してご提示ください。 ※どんなに短いコードでもマークダウン対応されてないだけで読む気がなくなる回答者は少なくないです
guest

回答4

0

phpで掲示板を作っているのですがcsvで保存していて

実用的なものを作るのであれば、CSVのまま続けること自体がおすすめできません。検索するにも全データを読み込む必要がありますし、排他制御をしっかりしないとデータが壊れます。

投稿2020/03/18 07:33

編集2020/03/18 07:34
maisumakun

総合スコア145123

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

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

m.ts10806

2020/03/18 07:36

前提や背景がないのでどのレベルでのアドバイスが必要か悩みますね。 本日登録というところと何も提示されない質問内容から単なる演習ではないかと推察されますが…。
guest

0

ベストアンサー

「ある一行だけを指定して削除したい(更新したい)場合」は、
ある一行を区別するために何が必要かを掘り下げて考えてください。
何行目?何番目?っていうのがきっかけになると思うのですが、
それを判定するためにどういう方法があるのか。と。

CSVの1行に1投稿のデータが入っていて、
例えば区切ったデータの最初のデータが投稿番号だったりすると、
データ上の投稿番号が、指定された番号かどうかをチェックして
処理を分岐すればいいです。
if(データ上の投稿番号 == 指定された番号) { ~ }
みたいな構造でしょうか。

while() { ~ } のループの中でなんのチェックもしないと、
すべての読み込んだ投稿データに対して作用するため、
そりゃ全部消えますよね。

投稿2020/03/18 13:13

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

0

一行だけを指定して削除したい場合はどうすればよいでしょうか

テキストにデータを保存した場合は実態は「削除」にはなりません。
全件取り出した上でループし保存し直すロジックを組み、その中で「指定された行だけ保存しない」になります。
(まあ配列に控えてそこだけ削除して保存し直すやり方も取れなくはないですが番号の指定の仕方とかによるし、全件取ってきて保存し直すのは同じ)

更新も考え方は同じ。指定番号だけ書き換えて保存し直し。

※ただし、これについてもteratail内でもコード付きの質問で頻出です
※が、既に回答にあるようにテキストでのデータ管理は実用的ではなく覚えたとて実務では使えません

投稿2020/03/18 08:24

編集2020/03/18 08:27
m.ts10806

総合スコア80765

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

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

sakaippap

2020/03/18 08:27

ご回答ありがとうございます。 削除も更新も一度csvファイルから取り出して削除、編集を行ってもう一度csv出力するといったイメージでよかったでしょうか?
m.ts10806

2020/03/18 08:29

何度も書いてますが、teratailで頻出です。 あとデータの流れを追って考えましょう。そこまで難解な流れではないはずですよ。
sakaippap

2020/03/18 08:56

かしこまりました。 ありがとうございます。
guest

0

少しは自分で調べようという意思を持った方が良いです。

PHP CSV 出力

でググって最初にhitしたURLです。
PHPでCSVファイルを出力する方法

投稿2020/03/18 07:54

Orlofsky

総合スコア16415

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問