二回目の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>
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/09/13 03:54
2020/09/13 14:19