回答編集履歴

1

加筆

2022/05/30 00:44

投稿

退会済みユーザー
test CHANGED
@@ -1,3 +1,7 @@
1
+ search_receive.php のテストは、
2
+ これを単体でwebブラウザのurlに入力してしまうと、
3
+ フォーム送信していない状態になるため、
4
+ 面倒でも search_send.php のフォームから送信するようにしてください。
1
5
  webブラウザのキャッシュを消した上で、
2
6
  再度 search_send.php にアクセスしてフォーム送信したら、
3
7
  とりあえず Undefined array key "minyear1" などは出なくなりそうな気がします。
@@ -7,7 +11,29 @@
7
11
  一度試してみてください。
8
12
 
9
13
  あと、
14
+ ```php
15
+ if($_SERVER['REQUEST_METHOD'] === 'POST'){
16
+ $name = $_POST['name'];
17
+ $minyear1 = $_POST['minyear1'];
18
+ $minyear2 = $_POST['minyear2'];
19
+ }
20
+ ```
21
+ こういう書き方をすると、POST受信したデータがない時、
22
+ `$name`や`$minyear1`や`$minyear2`という変数が未定義になりますので、
23
+ ifブロックの外側で初期化してください。
24
+ ```php
25
+ $name = '';
26
+ $minyear1 = 0;
27
+ $minyear2 = 999;
28
+ if($_SERVER['REQUEST_METHOD'] === 'POST'){
29
+ $name = $_POST['name'];
30
+ $minyear1 = $_POST['minyear1'];
31
+ $minyear2 = $_POST['minyear2'];
32
+ }
33
+ ```
34
+ こう書くと、POST受信していないときでも変数が存在し、(妥当かどうかはさておき)変数にアクセスできます。
10
35
 
36
+ また、
11
37
  ```php
12
38
  $sql = "SELECT id, name, age FROM user WHERE name like :name";
13
39
  $sql = "SELECT id, name, age FROM user WHERE age BETWEEN :minyear1 and :minyear2 ";