質問編集履歴

2

コメントの追加

2022/07/20 10:18

投稿

suzu6331
suzu6331

スコア1

test CHANGED
File without changes
test CHANGED
@@ -25,7 +25,7 @@
25
25
  try{
26
26
  $file = new SplFileObject('hogehoge.txt', 'cb+');
27
27
 
28
- if(isset($_POST['text']) && is_string($_POST['text'])) {
28
+ if(isset($_POST['text']) && is_string($_POST['text'])) { //初回起動時に非表示
29
29
  $file->ftruncate(0);
30
30
  $file->fwrite($_POST['text']);
31
31
  } else {
@@ -79,7 +79,8 @@
79
79
  ```
80
80
 
81
81
  ### 試したこと
82
- 現在表示名の出力はできているのですが、一言メッセージの出力ができないです。
82
+ 現在表示名の出力はできているのですが、一言メッセージの出力ができないです。
83
+
83
84
 
84
85
  ### 補足情報(FW/ツールのバージョンなど)
85
86
 
@@ -87,5 +88,7 @@
87
88
  ・字が汚くて申し訳ないのですが出力したい形式はこんな感じです。
88
89
  表示名は一行、一言メッセージは複数行入力可能なフォームです。送信を押すと表示名の上に入力した結果が表示されるようにしたいです。
89
90
  ![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2022-07-20/6b11ac4b-57f3-4c60-b39b-54014a32d773.jpeg)
91
+ ・ページの更新をした後送信したメッセージを消したいのですが何かやり方はありますか?
90
92
 
91
93
 
94
+

1

プログラムを少し変更し、出力したいイメージを手書きで図にしました。

2022/07/20 10:00

投稿

suzu6331
suzu6331

スコア1

test CHANGED
File without changes
test CHANGED
@@ -4,7 +4,7 @@
4
4
  phpで1つのファイルでフォームを作成するプログラムを作っているのですが、表示名の下のテキストのところが表示されません
5
5
 
6
6
  ### 実現したいこと
7
- フォームにメッセージを入力されたら表示する
7
+ フォームにメッセージを入力たら表示する
8
8
 
9
9
 
10
10
  ### 発生している問題・エラーメッセージ
@@ -17,28 +17,14 @@
17
17
  function h($input) {
18
18
  return htmlspecialchars($input, ENT_QUOTES, 'UTF-8');
19
19
  }
20
- function h1($input1) {
20
+
21
- return htmlspecialchars($input1, ENT_QUOTES, 'UTF-8');
22
- }
23
21
  $msgs = array();
24
22
  $text = '';
25
- $msgs1 = array();
23
+
26
- $text = '';
27
24
 
28
25
  try{
29
26
  $file = new SplFileObject('hogehoge.txt', 'cb+');
30
- $file = new SplFileObject('hogehoge1.txt', 'cb+');
31
27
 
32
- if(isset($_POST['text']) && is_string($_POST['text'])) {
33
- $file->ftruncate(0);
34
- $file->fwrite($_POST['text']);
35
- } else {
36
- $text = '';
37
- while (!$file->eof()) {
38
- $text .= $file->fgets();
39
- }
40
- }
41
- /*-------------------------------------------------------------*/
42
28
  if(isset($_POST['text']) && is_string($_POST['text'])) {
43
29
  $file->ftruncate(0);
44
30
  $file->fwrite($_POST['text']);
@@ -56,13 +42,12 @@
56
42
 
57
43
  }
58
44
 
59
- /*改行削除$file->setFlags(SplFileObject::SKIP_EMPTY | SplFileObject::DROP_NEW_LINE);*/
45
+ /*表示*/
60
-
61
-
62
46
  foreach ($file as $line) {
63
47
  if ($line == false) continue;
64
48
  echo "$line<br>", PHP_EOL;
65
49
  }
50
+
66
51
  $msg = implode(PHP_EOL, $msgs) . PHP_EOL;
67
52
  ?>
68
53
  <!DOCTYPE html>
@@ -73,51 +58,34 @@
73
58
  <body>
74
59
  <?php echo $msg; ?>
75
60
  <form action="<?=basename($_SERVER['SCRIPT_NAME'])?>" method="post">
76
- <form action="<?=basename($_SERVER['SCRIPT_NAME'])?>" method="post">
61
+
77
62
 
78
63
  表示名
64
+ <div><input type="text" name="text" rows="10" cols="30"><br>
65
+ <?php echo h($text); ?>
66
+ </div>
67
+
68
+ 一言メッセージ
79
- <div><textarea id="t_message" name="text" rows="10" cols="30">
69
+ <div><textarea id="t_message" name="text1" rows="10" cols="30">
80
70
  <?php echo h($text); ?></textarea>
81
71
  </div>
82
72
 
83
- 一言メッセージ
84
- <div><textarea id="t_message" name="text" rows="10" cols="30">
85
- <?php echo h1($text); ?></textarea>
86
- </div>
87
-
88
73
  <div><input type="submit" value="送信" /></div>
89
- </fieldset>
90
74
  </form>
91
75
  </body>
92
76
  </html>
93
77
 
94
-
95
- ```html
96
- <!DOCTYPE html>
97
- <head>
98
- <meta charset="UTF-8" />
99
- <title>サンプル</title>
100
- </head>
101
- <body>
102
- <div style="color:red;">エラー: SplFileObject::__construct(hogehoge.txt): failed to open stream: Permission denied</div>
103
- <form action="サンプル.php" method="post">
104
-
105
-
106
- <div><textarea name="text"></textarea></div>
107
- <div><input type="submit" value="送信" /></div>
108
-
109
- </form>
110
- </body>
111
- </html>
112
78
  ソースコード
113
79
  ```
114
80
 
115
81
  ### 試したこと
116
-
82
+ 現在表示名の出力はできているのですが、一言メッセージの出力ができないです。
117
83
 
118
84
  ### 補足情報(FW/ツールのバージョンなど)
119
85
 
120
86
  ・テキストファイルはMeryを使用しています
87
+ ・字が汚くて申し訳ないのですが出力したい形式はこんな感じです。
121
- 表示名のところをできれば一行のテキストエリアにしたいのですやり方がわからないのでそちらもできば教えていだきたいです。
88
+ 表示名一行、一言メッセージは複数行入力可能なフォームです。送信を押すと表示名入力した結果表示さるようにしたいです。
89
+ ![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2022-07-20/6b11ac4b-57f3-4c60-b39b-54014a32d773.jpeg)
122
90
 
123
91