PHPの勉強で、自動販売機システムの課題を作成中なのですが、画面にArrayと表示され「在庫数」を変更することができません。。。「在庫数」に関しましては、以下のコードをチェック頂けたらと思います。
現在MVCモデルを勉強中ですので、model,Controller,viewの3つのファイルに分けて作成しております。
以下がController.phpのコードになります。
php
<?php // 設定ファイル読み込み require_once '../include/conf/const.php'; // 関数ファイル読み込み require_once './model.php'; $drink_info_list = array(); $err_msg = array(); $success_msg = array(); $drink_name = ''; $price = 0; $stock = 0; $status = 0; $file_name =''; $drink_id = 0; $ext = ''; $link = get_db_connect(); if($_SERVER['REQUEST_METHOD'] === 'POST'){ $submit_type = $_POST['submit_type']; switch ($submit_type) { case 'add_item': $drink_name = $_POST['user_name']; $price = $_POST['price']; $stock = $_POST['stock']; $status = $_POST['public_status']; //登録値チェック $err_msg[] = entry_name_check($user_name); $err_msg[] = entry_check_price($price); $err_msg[] = entry_check_stock($stock); //アップロードファイル名を変数に代入 $temp_file = $_FILES['new_img']['tmp_name']; $file_name = '../img' . $_FILES['new_img']['name']; //拡張子取得 $ext = extention($file_name); //拡張子チェック $err_msg[] = extention_check($ext); //ファイルパス+ファイル名 $upload_file = '../img' . $drink_id . $ext; if(count($err_msg) === 0){ //トランザクション開始 mysqli_autocommit($link, $false); $sql = 'INSERT INTO drink_info_table(drink_name,price,status)VALUES(\'' . $drink_name . '\',' . $price . ',' . $status . ')'; if(mysqli_query($link,$sql) === TRUE ){ $drink_id = mysqli_insert_id($link); //drink_stock_tableにinsert $err_msg[] = insert_drink_stock_table($drink_id,$stock); }else{ $err_msg[] = 'drink_info_table:insertエラー' . $sql; } //アップロード処理 $err_msg[] = upload_img($file_name,$temp_file,$upload_file); //トランザクション成否判定 if(count($err_msg) === 0){ $success_msg[] = '商品追加成功'; mysqli_commit($link); }else{ mysqli_rollback($link); } } break; case'change_value': $update_stock = $_POST['update_stock']; $drink_id = $_POST['drink_id']; if(isset($update_stock)){ //整数かどうかを判定 $err_msg[] = change_stock_number($update_stock); if(count($err_msg) === 0){ $sql = 'UPDATE drink_stock_table SET stock_number = ' . $update_stock . ' WHERE drink_id = ' . $drink_id; if(mysqli_query($link,$sql) === TRUE){ $success_msg[] = '在庫変更成功'; }else{ $err_msg[] ='drink_stock_table:UPDATEエラー' . $sql; } } } break; case 'change_status': $status = (int)$_POST['status']; $drink_id = (int)$_POST['drink_id']; if(($status) === 1){ $sql = 'UPDATE drink_info_table SET status = 0 WHERE drink_id = ' . $drink_id; if(mysqli_query($link,$sql) === FALSE){ $err_msg[] = 'drink_info_table:UPDATEエラー' . $sql; }else{ $success_msg[] = 'ステータス変更成功'; } }else{ $sql = 'UPDATE drink_info_table SET status = 1 WHERE drink_id = ' . $drink_id; if(mysqli_query($link,$sql) === FALSE){ $err_msg[] = 'drink_info_table:UPDATEエラー' .$sql; }else{ $success_msg[] = 'ステータス変更成功'; } } break; } } //drink_info_table取得 $drink_info_list = get_drink_table($link); //特殊文字をHTMLエンティティに変換 $drink_info_list = entity_as_array($drink_info_list); //var_dump($drink_info_list);exit(); include_once './view.php'; ?>
以下はmodel.phpになります。
php
<?php //在庫数が整数かどうか function change_stock_number($update_stock){ $err_msg = ''; if(ctype_digit($update_stock) === FALSE){ $err_msg = '在庫数は整数のみ入力してください'; } return $err_msg; } //drink_stock_tableにinsertする function insert_drink_stock_table($drink_id,$stock){ $err_msg = ''; $sql = 'INSERT INTO drink_stock_table(drink_id,stock_number)VALUES(' . $drink_id . ',' . $stock . ')'; if(mysqli_query($link,$sql) === FALSE){ $err_msg = '$drink_stock_table:insertエラー' . $sql; } return $err_msg; } //アップロード処理 function upload_img($tmp_file,$file_name,$upload_file){ $err_msg = ''; if (is_uploaded_file($temp_file)) { if (move_uploaded_file($temp_file,$upload_file) === FALSE) { $err_msg = 'ファイルをアップロードできません。'; } } else { $err_msg = 'ファイルが選択されていません。'; } return $err_msg; } //拡張子チェック function extention_check($ext){ $err_msg = ''; if(!($ext === 'jpeg' || $ext === 'jpg' || $ext === 'png')){ $err_msg = 'ファイル形式が異なります。画像ファイルはjpegまたはpngのみ利用可能です'; } return $err_msg; } //拡張牛取得 function extention($file_name){ return substr($file_name,strrpos($file_name,'.') +1); } //登録商品名チェック function entry_name_check($drink_name){ $err_msg = ''; if($drink_name = ''){ $err_msg = '名前を入力してください'; } return $err_msg; } //登録値段チェック function entry_check_price($price){ $err_msg = ''; if(ctype_digit($price) !== TRUE ){ $err_msg = '値段は整数のみ入力してください'; }elseif($price = ''){ $err_msg = '値段を入力してください'; } return $err_msg; } //登録個数チェック function entry_check_stock($stock){ $err_msg = ''; if(ctype_digit($stock) !== TRUE ){ $err_msg = '個数は整数のみ入力してください'; }elseif($stock = ''){ $err_msg = '個数を入力してください'; } return $err_msg; } function get_db_connect() { // コネクション取得 if (!$link = mysqli_connect(DB_HOST, DB_USER, DB_PASSWD, DB_NAME)) { die('error: ' . mysqli_connect_error()); } // 文字コードセット mysqli_set_charset($link, DB_CHARACTER_SET); return $link; } function get_as_array($link,$sql){ $data = array(); if($result = mysqli_query($link,$sql)){ if(mysqli_num_rows($result) > 0) { while($row = mysqli_fetch_assoc($result)){ $data[] = $row; } } mysqli_free_result($result); } return $data; } function get_drink_table($link){ $sql = 'SELECT drink_info_table.drink_id,drink_name,price,status,stock_number FROM drink_info_table JOIN drink_stock_table ON drink_info_table.drink_id = drink_stock_table.drink_id'; return get_as_array($link,$sql); } function entity_str($str) { return htmlspecialchars($str, ENT_QUOTES, HTML_CHARACTER_SET); } function entity_as_array($drink_info_list){ foreach($drink_info_list as $key => $value){ foreach($value as $keys => $values){ $drink_info_list[$key][$keys] = entity_str($values); } } return $drink_info_list; }
以下はview.phpとなります。
在庫数を入力し、変更ボタンを押すと以下のように、「Array」と表示され在庫数が変更できません。。。
どなたか教えて下さる方いましたら、ご教授下さい...
まだ回答がついていません
会員登録して回答してみよう