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

質問編集履歴

1

functionを使ってまとめましたが、Fatal error: Call to undefined functionと表示されます。

2021/03/04 06:24

投稿

turtle410
turtle410

スコア13

title CHANGED
File without changes
body CHANGED
@@ -4,51 +4,39 @@
4
4
  エラーメッセージ
5
5
  ```
6
6
 
7
- ### 該当のソースコード
8
7
 
9
- ```PHP
10
- // ユーザーが検索した場合の処理
11
- if (isset($_POST['keyword']) === TRUE && mb_strlen ($_POST['keyword']) > 0) {
8
+ if (isset($_POST['keyword']) && mb_strlen ($_POST['keyword']) > 0) {
12
9
  $keyword = trim($_POST['keyword']);
13
10
  try {
14
- $sql = 'SELECT product.id, name, price, img, status, stock
15
- FROM product
16
- JOIN item_stock
17
- ON product.id = item_stock.stock_id
18
- WHERE name like ?';
19
- $stmt = $dbh->prepare($sql);
20
- $stmt->bindValue(1, $keyword, PDO::PARAM_STR); //文字列なのでSTRにかえる
21
- // SQLを実行
22
- $stmt->execute(['%' . $keyword . '%']);
23
- $result = $stmt->fetchALL();
24
- // print_r($result);
25
- // exit();
11
+ partial_match_search();
26
-
27
12
  if (count($result) > 0 ) {
28
13
  $msg[] = ($keyword . 'を含む商品が見つかりました!');
29
14
  } else {
30
- try {
31
- // ステータスが1(公開)の販売商品のみを一覧で表示する。
32
- $sql = 'SELECT product.id, name, price, img, status, stock
33
- FROM product
34
- JOIN item_stock
35
- ON product.id = item_stock.stock_id
36
- WHERE status = 1';
37
- $stmt = $dbh->prepare($sql);
38
- $stmt->execute();
15
+ product_list ();
39
- //全て取得するのでfetchALLでレコードを取得する
40
- $result = $stmt->fetchALL();
41
- $err_msg[] = ($keyword . 'を含む商品は見つかりませんでした。');
42
- } catch (PDOException $e) {
43
- $err_msg[] = '商品を取得できませんでした。';
44
- }
45
16
  }
46
17
  } catch (PDOException $e) {
47
18
  $err_msg[] = '商品を検索できませんでした。';
48
19
  }
49
- } else {
20
+ } else {
21
+ product_list ();
22
+ }
23
+ // 関数を定義
24
+ function partial_match_search () {
25
+ $sql = 'SELECT product.id, name, price, img, status, stock
26
+ FROM product
27
+ JOIN item_stock
28
+ ON product.id = item_stock.stock_id
29
+ WHERE name like ?';
30
+ $stmt = $dbh->prepare($sql);
31
+ $stmt->bindValue(1, $keyword, PDO::PARAM_STR);
32
+ $stmt->execute(['%' . $keyword . '%']);
33
+ $result = $stmt->fetchALL();
34
+
35
+ }
36
+
37
+ function product_list () {
50
38
  try {
51
- // ステータスが1(公開)の販売商品のみを一覧で表示する
39
+ // 商品を一覧で表示する
52
40
  $sql = 'SELECT product.id, name, price, img, status, stock
53
41
  FROM product
54
42
  JOIN item_stock
@@ -56,12 +44,12 @@
56
44
  WHERE status = 1';
57
45
  $stmt = $dbh->prepare($sql);
58
46
  $stmt->execute();
59
- //全て取得するのでfetchALLでレコードを取得する
60
47
  $result = $stmt->fetchALL();
48
+ $err_msg[] = ($keyword . 'を含む商品は見つかりませんでした。');
61
49
  } catch (PDOException $e) {
62
50
  $err_msg[] = '商品を取得できませんでした。';
63
- }
51
+ }
64
- }
52
+ }
65
53
  ```
66
54
 
67
55
  ### 試したこと
@@ -70,4 +58,29 @@
70
58
 
71
59
  ### 補足情報(FW/ツールのバージョンなど)
72
60
 
61
+ ここにより詳細な情報を記載してください。
62
+ ### 前提・実現したいこと
63
+
64
+ ここに質問の内容を詳しく書いてください。
65
+ (例)PHP(CakePHP)で●●なシステムを作っています。
66
+ ■■な機能を実装中に以下のエラーメッセージが発生しました。
67
+
68
+ ### 発生している問題・エラーメッセージ
69
+
70
+ ```
71
+ エラーメッセージ
72
+ ```
73
+
74
+ ### 該当のソースコード
75
+
76
+ ```ここに言語名を入力
77
+ ソースコード
78
+ ```
79
+
80
+ ### 試したこと
81
+
82
+ ここに問題に対して試したことを記載してください。
83
+
84
+ ### 補足情報(FW/ツールのバージョンなど)
85
+
73
86
  ここにより詳細な情報を記載してください。