質問編集履歴

3

試したことに補足

2021/06/14 02:47

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -386,6 +386,12 @@
386
386
 
387
387
  地名から検索のコードのvalueに値を指定したり、メソッドを独自にpostで設定したりすこしいじってみましたが、何も変わらずでした。
388
388
 
389
+ 郵便番号は9570036で検索をかけたらヒットしましたが、
390
+
391
+ 地名で新潟県を選択し、市区町村を上越市にして検索をかけても何もヒットしませんでした。
392
+
393
+ (データベースのテーブルには新潟県の郵便データを定義しております。)
394
+
389
395
 
390
396
 
391
397
  ### 補足情報(FW/ツールのバージョンなど)

2

ソースコードを見やすいところに配置しました。

2021/06/14 02:47

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -46,337 +46,339 @@
46
46
 
47
47
  ソースコード
48
48
 
49
+ <?php
50
+
51
+ // 変数を設定
52
+
53
+ $post_num = '';
54
+
55
+ $area ='';
56
+
57
+ $city ='';
58
+
59
+ $town ='';
60
+
61
+ $error1 = [];
62
+
63
+ $error2 = [];
64
+
65
+ $user_data = [];
66
+
67
+ $abc_data = [];
68
+
69
+ $query = '';
70
+
71
+ $host = '';
72
+
73
+ $username = '';
74
+
75
+ $passwd = '';
76
+
77
+ $dbname = '';
78
+
79
+ $link= mysqli_connect($host, $username, $passwd, $dbname);
80
+
81
+ $page = 1;
82
+
83
+ $count = 0;
84
+
85
+ $totalpage = ceil($count/ 10);//切り上げ
86
+
87
+ /*変数が存在する確認*/
88
+
89
+ if(isset($_POST['post_num']) === true || isset($_POST['area']) === true) {
90
+
91
+ if(isset($_POST['post_num']) === true) {
92
+
93
+ $post_num = htmlspecialchars($_POST['post_num'], ENT_QUOTES, 'UTF-8');
94
+
95
+ }
96
+
97
+ if(isset($_POST['area']) === true) {
98
+
99
+ $area = htmlspecialchars($_POST['area'], ENT_QUOTES, 'UTF-8');
100
+
101
+ }
102
+
103
+ if(isset($_POST['city']) === true) {
104
+
105
+ $city = htmlspecialchars($_POST['city'], ENT_QUOTES, 'UTF-8');
106
+
107
+ }
108
+
109
+ if(isset($_POST['town']) === true) {
110
+
111
+ $town = htmlspecialchars($_POST['town'], ENT_QUOTES, 'UTF-8');
112
+
113
+ }
114
+
115
+ if(isset($_POST['page']) === true) {
116
+
117
+ $page = htmlspecialchars($_POST['page'], ENT_QUOTES, 'UTF-8');
118
+
119
+ }
120
+
121
+ /*空白削除*/
122
+
123
+ $post_num = str_replace(array(" "," "),"", $post_num);
124
+
125
+ $area = str_replace(array(" "," "),"", $area);
126
+
127
+ $town = str_replace(array(" "," "),"", $town);
128
+
129
+ /*エラーメッセージ*/
130
+
131
+ if(empty($post_num) === true &&
132
+
133
+ ($area === '都道府県を選択' || empty($city) === true)) {
134
+
135
+ $error1[] = '郵便番号を入力してください';
136
+
137
+ }else if ((preg_match('/^[0-9]{7}$/', $post_num) !== 1) &&
138
+
139
+ ($area === '都道府県を選択' || empty($city) === true)) {
140
+
141
+ $error1[] = '7桁の数字で入力してください';
142
+
143
+ }else {
144
+
145
+ print "";
146
+
147
+ }
148
+
149
+ if ($area === '都道府県を選択' &&
150
+
151
+ (empty($post_num) === true ||(preg_match('/^[0-9]{7}$/', $post_num) !== 1))) {
152
+
153
+ $error2[] = '都道府県を選択してください';
154
+
155
+ }
156
+
157
+ if(empty($city) === true &&
158
+
159
+ (empty($post_num) === true ||(preg_match('/^[0-9]{7}$/', $post_num) !== 1))){
160
+
161
+ $error2[] = '市区町村名をを入力してください';
162
+
163
+ }
164
+
165
+ /*データベースに接続*/
166
+
167
+ if(count($error1) === 0 || count($error2) === 0) {
168
+
169
+ if($link) {
170
+
171
+ mysqli_set_charset($link, 'utf8');
172
+
173
+ if($post_num !== 0) {
174
+
175
+ $query = "SELECT post_num, area , city, town FROM test_table
176
+
177
+ WHERE post_num = '$post_num'";
178
+
179
+ } else {
180
+
181
+ $limit = 10*$page-10;
182
+
183
+ $query = "SELECT post_num, area , city, town FROM test_table";
184
+
185
+ $abc = "SELECT post_num, area , city, town FROM test_table";
186
+
187
+ $result = mysqli_query($link, $abc);
188
+
189
+ while($row = mysqli_fetch_array($result)) {
190
+
191
+ $abc_data[] = $row;
192
+
193
+ }
194
+
195
+ }
196
+
197
+ // var_dump($query);
198
+
199
+ $result = mysqli_query($link, $query);
200
+
201
+ while($row = mysqli_fetch_array($result)) {
202
+
203
+ $user_data[] = $row;
204
+
205
+ }
206
+
207
+ mysqli_free_result($result);
208
+
209
+ mysqli_close($link);
210
+
211
+ }else {
212
+
213
+ echo 'DB接続失敗';
214
+
215
+ }
216
+
217
+ }
218
+
219
+ }
220
+
221
+ $count = count($abc_data);
222
+
223
+ ?>
224
+
225
+ <!DOCTYPE html>
226
+
227
+ <html lang="ja">
228
+
229
+ <head>
230
+
231
+ <meta charset="UTF-8">
232
+
233
+ <title>郵便</title>
234
+
235
+ </head>
236
+
237
+ <body>
238
+
239
+ <form action="practice_post_code_advanced.php" method="post">
240
+
241
+ <h1>郵便番号検索</h1>
242
+
243
+ <h2>郵便番号から検索</h2>
244
+
245
+ <?php print "総件数" . htmlspecialchars($count,ENT_QUOTES,'UTF-8') . "件";?>
246
+
247
+ <input id="post_numer" name="post_num" value="">
248
+
249
+ <input type="submit" value="検索">
250
+
251
+ <form action="practice_post_code_advanced.php" method="post">
252
+
253
+ <h2>地名から検索</h2>
254
+
255
+ <label>都道府県を選択
256
+
257
+ <select name="area" value="">
258
+
259
+ <option>都道府県を選択</option>
260
+
261
+ <option>北海道</option>
262
+
263
+ <option>兵庫県</option>
264
+
265
+ <option>新潟県</option>
266
+
267
+ </select>
268
+
269
+ </label>
270
+
271
+ <label>市区町村
272
+
273
+ <input type="seach" name="city" value="">
274
+
275
+ <input type="submit" value="検索">
276
+
277
+ </label>
278
+
279
+ </form>
280
+
281
+ <p><?php foreach($error1 as $key1 => $string1) {
282
+
283
+ print htmlspecialchars($string1,ENT_QUOTES,'UTF-8');
284
+
285
+ }
286
+
287
+ ?></p>
288
+
289
+ <p><?php foreach($error2 as $key2 => $string2) {
290
+
291
+ print htmlspecialchars($string2,ENT_QUOTES,'UTF-8');;
292
+
293
+ }
294
+
295
+ ?></p>
296
+
297
+ <?php
298
+
299
+ foreach($user_data as $read) {?>
300
+
301
+ <table>
302
+
303
+ <style type="text/css">
304
+
305
+ table, td, th {
306
+
307
+ border: solid black 1px;
308
+
309
+ }
310
+
311
+ table {
312
+
313
+ width: 600px;
314
+
315
+ }
316
+
317
+ tr td {
318
+
319
+ width: 150px;
320
+
321
+ }
322
+
323
+ </style>
324
+
325
+ <tr>
326
+
327
+ <th>郵便番号</th>
328
+
329
+ <th>都道府県</th>
330
+
331
+ <th>市町村</th>
332
+
333
+ <th>町域</th>
334
+
335
+ </tr>
336
+
337
+ <tr>
338
+
339
+ <td><?php print htmlspecialchars($read['post_num'],ENT_QUOTES,'UTF-8'); ?></td>
340
+
341
+ <td><?php print htmlspecialchars($read['area'],ENT_QUOTES,'UTF-8'); ?></td>
342
+
343
+ <td><?php print htmlspecialchars($read['city'],ENT_QUOTES,'UTF-8'); ?></td>
344
+
345
+ <td><?php print htmlspecialchars($read['town'],ENT_QUOTES,'UTF-8'); ?></td>
346
+
347
+ </tr>
348
+
349
+ </table>
350
+
351
+ <?php } ?>
352
+
353
+ <p>
354
+
355
+ <!--GETを使用するときは?からスタートする-->
356
+
357
+ <?php if ($page > 1) : ?>
358
+
359
+ <a href="?page=<?php echo ($page - 1); ?>&area=<?php print $area; ?>
360
+
361
+ &city=<?php print $city; ?>">前のページへ</a>
362
+
363
+ <?php endif; ?>
364
+
365
+ <?php if ($page < $totalpage) : ?>
366
+
367
+   <a href="?page=<?php echo ($page + 1); ?>&area=<?php print $area; ?>
368
+
369
+   &city=<?php print $city; ?>">次のページへ</a>
370
+
371
+ <?php endif; ?>
372
+
373
+ </p>
374
+
375
+ </body>
376
+
377
+ </html>
378
+
49
379
  ```
50
380
 
51
- <?php
381
+
52
-
53
- // 変数を設定
54
-
55
- $post_num = '';
56
-
57
- $area ='';
58
-
59
- $city ='';
60
-
61
- $town ='';
62
-
63
- $error1 = [];
64
-
65
- $error2 = [];
66
-
67
- $user_data = [];
68
-
69
- $abc_data = [];
70
-
71
- $query = '';
72
-
73
- $host = '';
74
-
75
- $username = '';
76
-
77
- $passwd = '';
78
-
79
- $dbname = '';
80
-
81
- $link= mysqli_connect($host, $username, $passwd, $dbname);
82
-
83
- $page = 1;
84
-
85
- $count = 0;
86
-
87
- $totalpage = ceil($count/ 10);//切り上げ
88
-
89
- /*変数が存在する確認*/
90
-
91
- if(isset($_POST['post_num']) === true || isset($_POST['area']) === true) {
92
-
93
- if(isset($_POST['post_num']) === true) {
94
-
95
- $post_num = htmlspecialchars($_POST['post_num'], ENT_QUOTES, 'UTF-8');
96
-
97
- }
98
-
99
- if(isset($_POST['area']) === true) {
100
-
101
- $area = htmlspecialchars($_POST['area'], ENT_QUOTES, 'UTF-8');
102
-
103
- }
104
-
105
- if(isset($_POST['city']) === true) {
106
-
107
- $city = htmlspecialchars($_POST['city'], ENT_QUOTES, 'UTF-8');
108
-
109
- }
110
-
111
- if(isset($_POST['town']) === true) {
112
-
113
- $town = htmlspecialchars($_POST['town'], ENT_QUOTES, 'UTF-8');
114
-
115
- }
116
-
117
- if(isset($_POST['page']) === true) {
118
-
119
- $page = htmlspecialchars($_POST['page'], ENT_QUOTES, 'UTF-8');
120
-
121
- }
122
-
123
- /*空白削除*/
124
-
125
- $post_num = str_replace(array(" "," "),"", $post_num);
126
-
127
- $area = str_replace(array(" "," "),"", $area);
128
-
129
- $town = str_replace(array(" "," "),"", $town);
130
-
131
- /*エラーメッセージ*/
132
-
133
- if(empty($post_num) === true &&
134
-
135
- ($area === '都道府県を選択' || empty($city) === true)) {
136
-
137
- $error1[] = '郵便番号を入力してください';
138
-
139
- }else if ((preg_match('/^[0-9]{7}$/', $post_num) !== 1) &&
140
-
141
- ($area === '都道府県を選択' || empty($city) === true)) {
142
-
143
- $error1[] = '7桁の数字で入力してください';
144
-
145
- }else {
146
-
147
- print "";
148
-
149
- }
150
-
151
- if ($area === '都道府県を選択' &&
152
-
153
- (empty($post_num) === true ||(preg_match('/^[0-9]{7}$/', $post_num) !== 1))) {
154
-
155
- $error2[] = '都道府県を選択してください';
156
-
157
- }
158
-
159
- if(empty($city) === true &&
160
-
161
- (empty($post_num) === true ||(preg_match('/^[0-9]{7}$/', $post_num) !== 1))){
162
-
163
- $error2[] = '市区町村名をを入力してください';
164
-
165
- }
166
-
167
- /*データベースに接続*/
168
-
169
- if(count($error1) === 0 || count($error2) === 0) {
170
-
171
- if($link) {
172
-
173
- mysqli_set_charset($link, 'utf8');
174
-
175
- if($post_num !== 0) {
176
-
177
- $query = "SELECT post_num, area , city, town FROM test_table
178
-
179
- WHERE post_num = '$post_num'";
180
-
181
- } else {
182
-
183
- $limit = 10*$page-10;
184
-
185
- $query = "SELECT post_num, area , city, town FROM test_table";
186
-
187
- $abc = "SELECT post_num, area , city, town FROM test_table";
188
-
189
- $result = mysqli_query($link, $abc);
190
-
191
- while($row = mysqli_fetch_array($result)) {
192
-
193
- $abc_data[] = $row;
194
-
195
- }
196
-
197
- }
198
-
199
- // var_dump($query);
200
-
201
- $result = mysqli_query($link, $query);
202
-
203
- while($row = mysqli_fetch_array($result)) {
204
-
205
- $user_data[] = $row;
206
-
207
- }
208
-
209
- mysqli_free_result($result);
210
-
211
- mysqli_close($link);
212
-
213
- }else {
214
-
215
- echo 'DB接続失敗';
216
-
217
- }
218
-
219
- }
220
-
221
- }
222
-
223
- $count = count($abc_data);
224
-
225
- ?>
226
-
227
- <!DOCTYPE html>
228
-
229
- <html lang="ja">
230
-
231
- <head>
232
-
233
- <meta charset="UTF-8">
234
-
235
- <title>郵便</title>
236
-
237
- </head>
238
-
239
- <body>
240
-
241
- <form action="practice_post_code_advanced.php" method="post">
242
-
243
- <h1>郵便番号検索</h1>
244
-
245
- <h2>郵便番号から検索</h2>
246
-
247
- <?php print "総件数" . htmlspecialchars($count,ENT_QUOTES,'UTF-8') . "件";?>
248
-
249
- <input id="post_numer" name="post_num" value="">
250
-
251
- <input type="submit" value="検索">
252
-
253
- <form action="practice_post_code_advanced.php" method="post">
254
-
255
- <h2>地名から検索</h2>
256
-
257
- <label>都道府県を選択
258
-
259
- <select name="area" value="">
260
-
261
- <option>都道府県を選択</option>
262
-
263
- <option>北海道</option>
264
-
265
- <option>兵庫県</option>
266
-
267
- <option>新潟県</option>
268
-
269
- </select>
270
-
271
- </label>
272
-
273
- <label>市区町村
274
-
275
- <input type="seach" name="city" value="">
276
-
277
- <input type="submit" value="検索">
278
-
279
- </label>
280
-
281
- </form>
282
-
283
- <p><?php foreach($error1 as $key1 => $string1) {
284
-
285
- print htmlspecialchars($string1,ENT_QUOTES,'UTF-8');
286
-
287
- }
288
-
289
- ?></p>
290
-
291
- <p><?php foreach($error2 as $key2 => $string2) {
292
-
293
- print htmlspecialchars($string2,ENT_QUOTES,'UTF-8');;
294
-
295
- }
296
-
297
- ?></p>
298
-
299
- <?php
300
-
301
- foreach($user_data as $read) {?>
302
-
303
- <table>
304
-
305
- <style type="text/css">
306
-
307
- table, td, th {
308
-
309
- border: solid black 1px;
310
-
311
- }
312
-
313
- table {
314
-
315
- width: 600px;
316
-
317
- }
318
-
319
- tr td {
320
-
321
- width: 150px;
322
-
323
- }
324
-
325
- </style>
326
-
327
- <tr>
328
-
329
- <th>郵便番号</th>
330
-
331
- <th>都道府県</th>
332
-
333
- <th>市町村</th>
334
-
335
- <th>町域</th>
336
-
337
- </tr>
338
-
339
- <tr>
340
-
341
- <td><?php print htmlspecialchars($read['post_num'],ENT_QUOTES,'UTF-8'); ?></td>
342
-
343
- <td><?php print htmlspecialchars($read['area'],ENT_QUOTES,'UTF-8'); ?></td>
344
-
345
- <td><?php print htmlspecialchars($read['city'],ENT_QUOTES,'UTF-8'); ?></td>
346
-
347
- <td><?php print htmlspecialchars($read['town'],ENT_QUOTES,'UTF-8'); ?></td>
348
-
349
- </tr>
350
-
351
- </table>
352
-
353
- <?php } ?>
354
-
355
- <p>
356
-
357
- <!--GETを使用するときは?からスタートする-->
358
-
359
- <?php if ($page > 1) : ?>
360
-
361
- <a href="?page=<?php echo ($page - 1); ?>&area=<?php print $area; ?>
362
-
363
- &city=<?php print $city; ?>">前のページへ</a>
364
-
365
- <?php endif; ?>
366
-
367
- <?php if ($page < $totalpage) : ?>
368
-
369
-   <a href="?page=<?php echo ($page + 1); ?>&area=<?php print $area; ?>
370
-
371
-   &city=<?php print $city; ?>">次のページへ</a>
372
-
373
- <?php endif; ?>
374
-
375
- </p>
376
-
377
- </body>
378
-
379
- </html>
380
382
 
381
383
 
382
384
 

1

いらない記述があったので修正しました。

2021/06/14 02:33

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -1,5 +1,3 @@
1
- 前提・実現したいこと
2
-
3
1
  PHPで郵便番号検索サイトを作成しています。
4
2
 
5
3
  以下が要件です。
@@ -24,7 +22,7 @@
24
22
 
25
23
 
26
24
 
27
- ![イメージ説明](c6c44ccf30621f2a6ae11333916db173.png)###
25
+ ![イメージ説明](c6c44ccf30621f2a6ae11333916db173.png)
28
26
 
29
27
  ### 発生している問題・エラーメッセージ
30
28