phpでサイトを作っています。
テキストデータを一行ずつ表示させ、指定した行を削除したいのですが、どうすればいいのでしょうか?
-- data.txt --
aaa,data1,
bbb,data1,
ccc,data1,
ddd,data1,
-- php --
<?php
$del=$_POST['del_no'];
if($del!=""){
$data_all = file("data.txt");
for($i=0;$i<count($data_all);$i++){
$data_array = explode(",",$data_all[$i]);
if($data_array[0]!=$del){//削除データ以外を再書き込み
$txt="$data_array[0],$data_array[1],\n";
$fp = fopen("data.txt", "w");
flock($fp,1);
foreach ($txt as $line) {// 1行ずつファイルへ書き込み?
fwrite($fp, $line);
}
fclose($fp);
break;
}
}
}
?>
<b>data list</b>
<?
$data_all = file("data.txt");
for($i=0;$i<count($data_all);$i++){
$data_array = explode(",",$data_all[$i]);
echo "$data_array [0]<br />";
echo "<form method=\"post\">";
<input type=\"hidden\"name=\"del_no\" value=\"$data_array[0]\" />";//削除するデータをPOST
echo "<input type=\"submit\" value=\"削除\" />";
echo "</form>";
}
?>
こうすると、テキストデータが白紙になってしまいます。
よろしくお願いします。
No.1ベストアンサー
- 回答日時:
余計なことが多いわりに、必要なことをやってない感じですね。
前半部分を直すならこんな感じでどうでしょう?
(csv系の関数でやったほうが見やすくなるとは思いますが
一応原文を最大限いかしてみました)
$fname="data.txt";
$del=isset($_POST['del_no'])?$_POST['del_no']:"";
if($del!=""){
$data_all = file($fname);
$fp = fopen($fname, "w");
for($i=0;$i<count($data_all);$i++){
$data_array = explode(",",$data_all[$i]);
if($data_array[0]!=$del){
$txt="$data_array[0],$data_array[1],\n";
fwrite($fp, $txt);
}
}
fclose($fp);
}
yambejpさん、ありがとうございます。
余計なことが多いわりに、必要なことをやってないとは・・。
なるほど。教えていただいた内容を見るととまさにその通りですね。おはずかしい。
ちなみにcsv系の関数でやった場合はどのように書くのでしょうか。
ご教授いただけたら幸いです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP PHPで画像の渡しが上手く行きません。 1 2023/02/02 09:39
- PHP PHPでCookieを使った訪問回数について 1 2023/05/28 14:10
- PHP PHPでユーザー情報を入力して簡易ログイン機能をつくってみたのですが 1 2023/05/29 08:51
- HTML・CSS CSSが効かずどのように指定すれば良いか分からないのでアドバイスお願い致します 2 2023/06/07 12:25
- その他(プログラミング・Web制作) Fortranでの出力ファイル 2 2023/03/21 21:25
- その他(プログラミング・Web制作) pandasでまとめてインデックスを削除するにはどうすればいいですか? たとえば、以下のプログラムで 1 2022/07/31 23:09
- C言語・C++・C# c言語の問題です 課題1 (二分探索木とセット) 大きさ size の配列 array を考える。す 2 2023/01/10 21:08
- Java 動かなくなったのでJavaソースを手直しお願いします。 2 2022/04/30 05:35
- AJAX JavascriptからPHPへのAjax通信でnullが返ってくる 3 2022/08/03 22:00
- JavaScript clear機能を失わずにファイルアップロード機能を作成したい 3 2023/06/10 16:12
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
別ファイルの構造体の値を読み...
-
複数行のデータのPOST処理に関して
-
エラーメッセージ(無効な間接...
-
配列同士の足し算のループ処理
-
fgetcsvでデータが何も表示され...
-
Resource id #3 と表示されま...
-
php Undefined variableエラー
-
smartyでページングするには
-
phpでCSVファイルの中身を多次...
-
◆速い、ファイル読み込みは?
-
C言語でCSVファイルの行数を読...
-
ヒアドキュメントの中のfor文
-
PHPでCSVの一部の行を編集したい
-
CSVファイルの最終行のデー...
-
phpメールフォームから送信され...
-
多次元配列の一次元目の最大値...
-
csvの内容を行単位で削除したい
-
PHP5でCSVの指定行データだけを...
-
preg_splitがうまくいかないの...
-
PHPでこのコード自体に意味は無...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
複数行のデータのPOST処理に関して
-
Resource id #3 と表示されま...
-
別ファイルの構造体の値を読み...
-
PHPでCSVの一部の行を編集したい
-
バイナリファイルの内容を、そ...
-
CSVファイルの最終行のデー...
-
ヒアドキュメントの中のfor文
-
stdClass Objectを連想配列のよ...
-
◆速い、ファイル読み込みは?
-
C言語でCSVファイルの行数を読...
-
phpでCSVファイルの中身を多次...
-
rubyで複数列のデータを一行に...
-
多次元配列の一次元目の最大値...
-
行数が30万件ほどあるCSVから、...
-
配列同士の足し算のループ処理
-
csvの内容を行単位で削除したい
-
FortranのOPEN文
-
CSVデータの行数カウントをした...
-
自動で番号を振りたい
-
While文を使って配列の中身を全...
おすすめ情報