実現したいこと
・HTMLとPHPを用いた簡易掲示板で新規入力フォームと削除フォームを作成した。
・次に編集機能を実装させたい。(新規投稿と編集投稿が同じ入力フォームで行ってしまっているのが原因?)
現状できていること
・投稿に番号をつけてそれぞれの番号で削除・編集をできるようにしている。
・削除は機能するが、編集が番号指定してから編集はできるが、送信すると新規投稿になってしまい編集できていない。
PHP+HTML
1<!DOCTYPE html> 2<html lang="ja"> 3<head> 4<meta charset="UTF-8"> 5</head> 6<body> 7<?php 8ini_set('display_errors', "On"); 9date_default_timezone_set('Asia/Tokyo'); 10$comment=$_POST['comment']; 11$name=$_POST['name']; 12$delete=$_POST['delete']; 13$date=date("Y年m月d日 H時i分s秒"); 14$edit_flag=0; 15 if(!empty($_POST['name'])&&!empty($_POST['comment'])){ 16 $filename="kadai2-4.txt"; 17 $fp=fopen($filename,'a+'); 18 $num=count(file($filename)); 19 $num++; 20 fwrite($fp,$num."<>".$_POST['name']."<>".$_POST['comment']."<>".$date."\n"); 21 fclose($fp); 22} 23 if(!empty($_POST['edit_submit'])){ 24 if(!empty($_POST['edit'])){ 25 if(preg_match("/^[0-9]+$/", $_POST["edit"])){ 26 $filename="kadai2-4.txt"; 27 $edit_array=array(); 28 $edit_array=file($filename); 29 $index=0; 30 $edit_flag=0; 31 foreach($edit_array as $one){ 32 $data=explode("<>", $one); 33 if($data[0]===$_POST['edit']){ 34 $edit_flag=1; 35 $edit_before_name=$data[1]; 36 $edit_before_comment=$data[2]; 37 break; 38 } 39 $index++; 40 } 41} 42} 43} 44?> 45<form method="post"action="kadai2-4.php"> 46<!--名前入力フォーム--> 47 <p>名前: 48 <input type="text" name="name" placeholder="名前" value="<?=$edit_before_name?>"></p> 49<!--コメント入力フォーム--> 50 <p>コメント: 51 <input type="text" name="comment" placeholder="コメント" value="<?=$edit_before_comment?>"></p> 52<!--編集モード編集対象番号受け取り入力--> 53 <input type="text" name="hidden_edit_number" value="<?=$_POST["edit"]?>" > 54<!--送信ボタン--> 55 <input type="submit"name="submit_submit" value="送信"><br> 56<!--削除対象番号入力用textタイプ--> 57 <p>削除対象番号:<input type="text" name="delete" placeholder="削除番号"></p> 58<!--削除機能用送信submitタイプ--> 59 <p><input type="submit" name="delete_submit" value="削除" placeholder="削除対象番号"></p> 60<!--編集対象番号入力フォーム--> 61 <p>編集: 62 <input type="text" name="edit" placeholder="編集番号" ></p> 63<!--編集機能用送信用submitタイプ--> 64 <input type="submit" name="edit_submit" value="編集"><br> 65</form> 66<?php 67 if($_POST['delete_submit']){ 68 if(!empty($_POST['delete'])){ 69 echo gettype($_POST['delete'])."<br>"; 70 if(preg_match('/^[0-9]+$/',$delete)){ 71 $filename="kadai2-4.txt"; 72 $delete_array=array(); 73 $delete_array=file($filename); 74 $delete_array=file("kadai2-4.txt"); 75 $index=0; 76 foreach($delete_array as $one){ 77 $data=explode("<>",$one); 78 if($data[0]===$_POST['delete']){ 79 unset($delete_array[$index]); 80 break; 81 } 82 $index++; 83 } 84 $fp=fopen($filename,"w"); 85 foreach($delete_array as $one_data){ 86 fwrite($fp,$one_data); 87 } 88 fclose($fp); 89} 90} 91} 92 if($_POST['submit_submit']){ 93 if($edit_flag==1){ 94 if(!empty($_POST['name'])&&!empty($_POST['comment'])){ 95 $edit_array=array(); 96 $edit_array=file("kadai2-4.txt"); 97 unset($edit_array[$_POST['hidden_edit_number']]); 98 array_splice($edit_array, $_POST['hidden_edit_number'], 0, $num."<>".$_POST['name']."<>".$_POST['comment']."<>".$date."\n"); 99 $fp=fopen($filename,"w"); 100 foreach($edit_array as $one_data){ 101 fwrite($fp, $one_data); 102 fclose($fp); 103 } 104} 105} 106} 107 $read_array=array(); 108 $read_array=file($filename); 109 foreach($input_array as $value){ 110 $str_2=explode("<>",$value); 111 echo $str_2[0]." "; 112 echo $str_2[1]." "; 113 echo $str_2[2]." "; 114 echo $str_2[3]." "."<br>"; 115 $str=explode("<>",$value); 116} 117?> 118</body> 119</html>
すみませんが、どこをどうすれば編集できるようになりますか? 教えてください。
あなたの回答
tips
プレビュー