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

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

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

COUNT は、広く使用されているSQLの関数です。COUNT関数は、行数、もしくは配列のエンティティの数をカウントします。

CSV

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

PHP

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

HTML

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

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

Q&A

解決済

2回答

2311閲覧

PHP:fopen()を使って一部の行を削除する方法がわからない

nuya

総合スコア7

COUNT

COUNT は、広く使用されているSQLの関数です。COUNT関数は、行数、もしくは配列のエンティティの数をカウントします。

CSV

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

PHP

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

HTML

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

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

0グッド

0クリップ

投稿2020/09/13 02:31

二回目のfopen(r)で削除ボタンを押したときのcsvファイルを開く
削除ボタンを押した行と削除ボタンを押した行をif文でcountを比較して一致してないものを通す
その値をvalueという配列に入れる 配列宣言 countが一致していない 
valueには内容,日付けっていう感じで入っている
fopen(w)でファイルを削除し新しくファイルを開き書き込みを先頭から開始する
fopen(r)でif文の中のボタンを押していない値だけを取得し先頭から一行ずつ書き込んでいく ←わからない状態です

PHP

1<?php 2var_dump($_POST); 3// echo $_POST['text']; 4 5if (!empty($_POST['text'])) { 6 $datetime = date('Y-m-d H:m:s'); 7 8 //ファイルポインタをオープン 9 $handle = fopen("csv/text.csv", "a"); 10 // ファイルへ書き込み 11 fwrite($handle, $_POST['text'] . ","); 12 fwrite($handle, $datetime . "\n"); 13 // ファイルポインタをクローズ 14 fclose($handle); 15} 16//TODOここから 17if (!empty($_POST['content']) && !empty($_POST['day']) && !empty($_POST['count']) && !empty($_POST['line'])) { 18 // ファイルを開く  19 // 変数の初期化 20 // $handle = null; 21 // $lines = null; 22 // ファイルを1行ずつ取得 23 // 読み込みで出力する 24 $handle = fopen("csv/text.csv", "r"); 25 $count = 0; 26 $value = array(); 27 while ($line = fgets($handle)) { 28 $count++; 29 if ($count != $_POST['count']) { 30 $value[] = $line; 31 } 32 // echo '<input type = "hidden">'; 33 } 34 // ファイルポインタを先頭に戻す 35 // rewind($file_handle); 36 37 // fclose($handle); 38 //TODOここから 39 40 // fwrite($handle, $datetime . "\n"); 41 // ファイルを開く  42 // 変数の初期化 43 // $handle = null; 44 // $lines = null; 45 // ファイルを1行ずつ取得 46 // 読み込みで出力する 47 $handle = fopen("csv/text.csv", "w"); 48 49 50 $lines = explode(",", $value); 51 while ($line = fgets($lines)) { 52 $count++; 53 54 // echo '<input type = "hidden">'; 55 fwrite($handle, $value . "\n"); 56 // fwrite($handle, $datetime . "\n"); 57 // ファイルポインタを先頭に戻す 58 // rewind($file_handle); 59 } 60 fclose($handle); 61} 62 63 64?>

html

1<!DOCTYPE html> 2<html lang="en"> 3 4<head> 5 <meta charset="UTF-8"> 6 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 7 <title>テキストテーブル</title> 8</head> 9 10<body> 11 <form action="texttable.php" method="post"> 12 <input type="text" name="text"> 13 <input type="submit" value="送信"> 14 <input type="reset"> 15 </form> 16 17 <?php 18 19 //読み取り専用でファイルを開く 20 21 $handle = fopen("csv/text.csv", "r"); 22 23 // #2 テーブルのHTMLを生成 24 echo "<table border = 1> 25 <tr> 26 <th>内容</th> 27 <th>日付</th> 28 <th></th> 29 </tr>"; 30 31 // #3 csvのデータを配列に変換し、HTMLに埋め込んでいる 32 //fgetで値を一行ずつ取得する 33 $count = 0; 34 while ($line = fgets($handle)) { 35 // $linesっていう配列にexplodeでカンマ区切りを指定して $lineを区切って代入する 36 $count++; 37 $lines = explode(",", $line); 38 39 echo "<tr>"; 40 echo "<td>" . $lines[0] . "</td>"; 41 echo "<td>" . $lines[1] . "</td>"; 42 echo '<td>'; 43 echo '<form action="texttable.php" method="post">'; 44 echo '<input type="hidden" value = "' . $line . '" name= "line">'; 45 echo '<input type="hidden" value = "' . $lines[0] . '" name= "content">'; 46 echo '<input type="hidden" value = "' . $lines[1] . '" name= "day">'; 47 echo '<input type= "hidden" value = "' . $count . '" name= "count">'; 48 echo '<input type ="submit" name = "destroy" value = "削除" >'; 49 echo "</form>"; 50 echo "</td>"; 51 echo "</tr>"; 52 } 53 echo "</table>"; 54 55 56 // #4 ファイルを閉じる 57 fclose($handle); 58 ?> 59 60 61</body> 62 63</html>

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

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

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

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

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

guest

回答2

0

PHPでファイルを開いて読み込む - Qiita

行単位のテキストファイルを配列として読み込みたい

ってのがつかえますね

投稿2020/09/13 03:13

y_waiwai

総合スコア88042

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

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

nuya

2020/09/13 03:54

file_get_contents()の使い方がいまいち 分かりません本当に初心者なので 2回目のpostを受け取るfopen(r)でvalueという配列に入れるのはあっていますか?
nuya

2020/09/13 14:19

file()を使ってどうやって削除できるのかがわかりません
guest

0

自己解決

色々やり方があるようですがわからないので自分で解決します

投稿2020/09/13 14:40

nuya

総合スコア7

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問