teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

ダブルコーテーションついてなかった

2019/02/11 01:59

投稿

rururu3
rururu3

スコア5545

answer CHANGED
@@ -10,7 +10,7 @@
10
10
  `foreach ($hpbby as $value) {`は`foreach ($hobby as $value) {`のはず
11
11
  `if(!flook($fp,LOCK_EX)){`は`if(!flock($fp,LOCK_EX)){`
12
12
  `fclose`のまえに`flock($fp, LOCK_UN);`を一応入れる
13
- エディタ上で見た目上同じだったので分かりづらかったけど`"¥n"`は`\n`(文字コードが違う)
13
+ エディタ上で見た目上同じだったので分かりづらかったけど`"¥n"`は`"\n"`(文字コードが違う)
14
14
  PHP処理終了後の
15
15
  ```html
16
16
  <dl class="clearfix"></dl>

1

とりあえずファイル書き込まれるまではやった

2019/02/11 01:59

投稿

rururu3
rururu3

スコア5545

answer CHANGED
@@ -1,21 +1,178 @@
1
1
  `$_post`ではなく`$_POST`ですね
2
2
  あと、question2.phpの`<!DOCTYPE html>`の前にアンケート入力チェック
3
3
  及びファイルに書き出す処理を行い正常かどうかわかってから、HTML部分を出したほうがいいです。
4
+ (が今回はできるだけソース原型を留めるためやらない)
4
5
 
6
+ 雪のため暇になったので動かすまでやってみた限り
7
+
8
+ `if(gender == 1){`は`$`ついてないからだめ
9
+ `ctype_digit('age')`は`ctype_digit($age)`のはず
10
+ `foreach ($hpbby as $value) {`は`foreach ($hobby as $value) {`のはず
11
+ `if(!flook($fp,LOCK_EX)){`は`if(!flock($fp,LOCK_EX)){`
12
+ `fclose`のまえに`flock($fp, LOCK_UN);`を一応入れる
13
+ エディタ上で見た目上同じだったので分かりづらかったけど`"¥n"`は`\n`(文字コードが違う)
14
+ PHP処理終了後の
15
+ ```html
16
+ <dl class="clearfix"></dl>
17
+ <p class="app_msg">以下の内容を保存しました!</p>
18
+ <p class="app_msg"><a href="qustion3.php">集計結果を見る</a></p>
19
+ </div>
20
+ ```
21
+ は不要(php処理で出してるため)
22
+
23
+ ※アンケート集計処理部分はなんにも見てないし書き込まれるまでしか見てないしそこはせめてやって。
24
+
25
+ qustion2.php
5
26
  ```php
27
+ <!DOCTYPE html>
28
+ <html lang="ja">
29
+ <head>
30
+ <meta charset="utf-8">
31
+ <meta name="description" content="アンケート結果を送信しました">
32
+ <title>アンケート結果を受け付けました!!!</title>
33
+ </head>
34
+ <body>
35
+ <div id="box">
36
+ <div id="header">
37
+ <h1>PHP for web Designer</h1>
38
+ </div>
39
+ <ul id="menu" class="clearfix"></ul>
40
+
41
+ <div id="main">
42
+ <h2>アンケートフォーム</h2>
43
+
6
44
  <?php
45
+ $error = 0;
7
- // データチェックおよびファイル書き出し
46
+ if (isset($_POST['gender'])) {
47
+ $gender = $_POST['gender'];
8
48
 
9
- // アンケート正常終了したか
49
+ if (ctype_digit($gender)) {
10
- if($error == 0) {
50
+ if($gender == 1){
11
- print <<< EOM
51
+ $gendername = '男性';
52
+ } elseif ($gender == 2) {
53
+ $gendername = '女性';
54
+ } else {
12
- 正常終了時のHTML出力
55
+ $error = 1;
13
- EOM;
14
- }
56
+ }
15
- else {
57
+ } else{
16
- print <<< EOM
58
+ $error = 1;
17
- チェックエラーなどの時のHTML出力
18
- EOM;
19
- }
59
+ }
60
+ } else {
61
+ $error = 1;
62
+ }
63
+
64
+ if (isset($_POST['age'])) {
65
+ $age = $_POST['age'];
66
+
67
+ if(ctype_digit($age)) {
68
+ if($age < 1 || $age > 5) {
69
+ $error = 1;
70
+ }
71
+ } else {
72
+ $error = 1;
73
+ }
74
+ } else {
75
+ $error = 1;
76
+ }
77
+ if (isset($_POST['hobby'])) {
78
+ $hobby = $_POST['hobby'];
79
+
80
+ if(is_array($hobby)){
81
+ foreach ($hobby as $value) {
82
+ if($value < 1|| $value >5){
83
+ $error = 1;
84
+ }
85
+ }
86
+ } else {
87
+ $error = 1;
88
+ }
89
+ } else{
90
+ $error = 1;
91
+ }
92
+
93
+ if ($error == 0) {
94
+ echo '<dl class="clearfix">';
95
+ echo '<dt>性別は?</dt><dd>' . $gendername . '</dd>';
96
+
97
+ if($age != 5) {
98
+ echo '<dt>年齢は?</dt><dd>' . $age . '0代</dd>';
99
+ }else{
100
+ echo '<dt>年齢は?</dt><dd>50代以上</dd>';
101
+ }
102
+
103
+ echo '<dt>趣味は?</dt>';
104
+ echo '<dd>';
105
+ foreach ($hobby as $value) {
106
+ switch ($value) {
107
+ case 1:
108
+ echo '音楽鑑賞<br />';
109
+ break;
110
+
111
+ case 2:
112
+ echo '映画鑑賞<br />';
113
+ break;
114
+
115
+ case 3:
116
+ echo 'ドライブ<br />';
117
+ break;
118
+
119
+ case 4:
120
+ echo '旅行<br />';
121
+ break;
122
+
123
+ case 5:
124
+ echo 'その他<br />';
125
+ break;
126
+ }
127
+ }
128
+
129
+ echo '</dd>';
130
+
131
+ $textfile = 'log.txt';
132
+ $fp = fopen($textfile, 'r+b');
133
+ if(!$fp) {
134
+ exit('ファイルがないか異常があります');
135
+ }
136
+ if(!flock($fp,LOCK_EX)){
137
+ exit('ファイルをロックできませんでした');
138
+ }
139
+ while(!feof($fp)){
140
+ $writebuffer[] = trim(fgets($fp));
141
+ }
142
+
143
+ if($gender == 1) $writebuffer[0]++;
144
+ if($gender == 2) $writebuffer[1]++;
145
+
146
+ $writebuffer[$age + 1]++;
147
+
148
+ foreach ($hobby as $key => $value) {
149
+ $writebuffer[$key + 6]++;
150
+ }
151
+
152
+ $writebuffer[12]++;
153
+
154
+ rewind($fp);
155
+ foreach ($writebuffer as $value) {
156
+ fwrite($fp, $value . "\n");
157
+ }
158
+
159
+ flock($fp, LOCK_UN);
160
+ fclose($fp);
161
+
162
+ echo '</dl>';
163
+ echo '<p class="app_msg">以上の内容を保存しました!</p>';
164
+ echo '<p class="app_msg"><a href="question3.php">集計結果を見る</a></p>';
165
+ }else{
166
+ echo '<p class="app_msg">';
167
+ echo '戻ってアンケートの項目全てにお答えください。';
168
+ echo '</p>';
169
+ }
170
+ ?>
171
+
172
+ <p class="copy">
173
+ &copy; 2010 PHP for web designer. ALL rights reserved.
174
+ </p>
175
+ </div>
176
+ </body>
177
+ </html>
20
- ```
178
+ ```
21
- まあこんな感じ