前提・実現したいこと
PHPで自動販売機システムをmvcモデルに基づいて作成しております。
#発生している問題・エラーメッセージ
Notice: Undefined variableというエラーが発生しました。
商品登録ボタンを押しても登録されません。
定義自体はしてると思っております。
php
1ソースコード 2functions.php 3<?php 4$err_msg = []; 5 6function insert_drink($link) { 7 8 if ($_SERVER['REQUEST_METHOD'] === 'POST' && $_POST['sql_kind'] === 'insert') { 9 10 if (isset($_POST['new_name']) === TRUE) { 11 12 switch (TRUE) { 13 case ($_POST['new_name'] === ''): 14 $err_msg[] = '商品名を入力してください'; 15 break; 16 case ($_POST['new_name'] === NULL); 17 $err_msg[] = '商品名を入力してください'; 18 break; 19 default: 20 $new_name = $_POST['new_name']; 21 break; 22 } 23 } 24 25 if (isset($_POST['new_price']) === TRUE) { 26 27 switch (TRUE) { 28 case ($_POST['new_price'] === ''): 29 $err_msg[] = '値段を入力してください'; 30 break; 31 case ($_POST['new_price'] === NULL): 32 $err_msg[] = '値段を入力してください'; 33 break; 34 case (preg_match('/^[0-9]+$/', $_POST['new_price']) !== 1): 35 $err_msg[] = '値段は0以上の半角整数を入力してください'; 36 break; 37 default: 38 $new_price = $_POST['new_price']; 39 break; 40 } 41 } 42 43 if (isset($_POST['new_stock']) === TRUE) { 44 45 switch (TRUE) { 46 case ($_POST['new_stock'] === ''): 47 $err_msg[] = '個数を入力してください'; 48 break; 49 case ($_POST['new_stock'] === NULL): 50 $err_msg[] = '個数を入力してください'; 51 break; 52 case (preg_match('/^[0-9]+$/', $_POST['new_stock']) !== 1): 53 $err_msg[] = '在庫は0以上の半角整数を入力してください'; 54 break; 55 default: 56 $new_stock = $_POST['new_stock']; 57 break; 58 } 59 } 60 61 if ($_FILES['new_img']['error'] === UPLOAD_ERR_OK) { 62 63 if (count($err_msg) === 0) { 64 65 $chk_picture = getimagesize($_FILES['new_img']['tmp_name']); 66 67 if ($chk_picture['mime'] === 'image/png' || $chk_picture['mime'] === 'image/jpeg') { 68 69 if ($chk_picture[0] <= 500 && ($chk_picture[1] <= 500)) { 70 71 $mime = $chk_picture['mime']; 72 switch ($mime) { 73 case 'image/png': 74 $type = '.png'; 75 break; 76 case 'image/jpeg': 77 $type = '.jpg'; 78 break; 79 } 80 81 $upload = $uploaddir . date('YmdHis') . rand(0, 10000) . $type; 82 83 move_uploaded_file($_FILES['new_img']['tmp_name'], $upload); 84 } else { 85 $err_msg[] = 'ファイルは縦と横500px以内にしてください'; 86 } 87 } else { 88 $err_msg[] = 'PNGかJPEG形式のファイルをアップロードしてください'; 89 } 90 } 91 } else { 92 $err_msg[] = 'ファイルを選択してください'; 93 } 94 95 96 if (isset($_POST['new_status']) === TRUE) { 97 if ((int) $_POST['new_status'] === 0 || (int) $_POST['new_status'] === 1) { 98 $new_status = (int) $_POST['new_status']; 99 } else { 100 $err_msg[] = 'ステータスは公開か非公開を選択してください'; 101 } 102 } else { 103 $err_msg[] = 'ステータスを選択してください'; 104 } 105 106 if (count($err_msg) === 0) { 107 108 $new_time = date('Y-m-d H:i:s'); 109 110 $insert_data_info = [ 111 'drink_name' => $new_name, 112 'price' => $new_price, 113 'created_at' => $new_time, 114 'updated_at' => $new_time, 115 'status' => $new_status, 116 'path' => $upload 117 ]; 118 119 $sql = 'INSERT INTO drink_info_table(drink_name, price, created_at, updated_at, status, path)VALUES(\''.$new_name.'\',\''.$new_price.'\',\''.$new_time.'\',\''.$new_time.'\',\''.$new_status.'\'\''.$upload.'\')'; 120 121 if ($result = mysqli_query($link, $sql) === TRUE) { 122 123 $drink_id = mysqli_insert_id($link); 124 125 $insert_data_stock = [ 126 'drink_id' => $drink_id, 127 'stock' => $new_stock, 128 'created_at' => $new_time, 129 'updated_at' => $new_time 130 ]; 131 132 $sql = 'INSERT INTO stock_table(drink_id, stock, created_at, updated_at)VALUES(\''.$drink_id.'\',\''.$new_stock.'\',\''.$new_time.'\',\''.$new_time.'\')'; 133 134 if ($result = mysqli_query($link, $sql) !== TRUE) { 135 $err_msg[] = 'stock_tableへのデータの登録に失敗しました'; 136 } 137 } else { 138 $err_msg[] = 'drink_info_tableへのデータの登録に失敗しました'; 139 } 140 if (count($err_msg) === 0) { 141 $complete_msg[] = '追加登録完了!'; 142 } 143 } 144 } 145 146} 147 148
#試したこと
変数の定義のやり方を変えたりしましたが、エラーは直らなかったです。
#補足情報(FW/ツールのバージョンなど)
Cloud9
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/07/28 04:58 編集
2021/07/28 05:02
2021/07/28 05:30
2021/07/28 05:53
2021/07/29 04:31
2021/07/29 04:41
2021/07/29 06:35