質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
phpMyAdmin

phpMyAdminはオープンソースで、PHPで書かれたウェブベースのMySQL管理ツールのことです。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

2回答

10080閲覧

[PHP] 画面にArrayと表示され目的の処理が行われません。。。

newyee

総合スコア213

phpMyAdmin

phpMyAdminはオープンソースで、PHPで書かれたウェブベースのMySQL管理ツールのことです。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

1クリップ

投稿2017/09/13 15:09

PHPの勉強で、自動販売機システムの課題を作成中なのですが、画面にArrayと表示され「在庫数」を変更することができません。。。「在庫数」に関しましては、以下のコードをチェック頂けたらと思います。
現在MVCモデルを勉強中ですので、model,Controller,viewの3つのファイルに分けて作成しております。
以下がController.phpのコードになります。

php

1<?php 2// 設定ファイル読み込み 3require_once '../include/conf/const.php'; 4// 関数ファイル読み込み 5require_once './model.php'; 6 7$drink_info_list = array(); 8$err_msg = array(); 9$success_msg = array(); 10$drink_name = ''; 11$price = 0; 12$stock = 0; 13$status = 0; 14$file_name =''; 15$drink_id = 0; 16$ext = ''; 17 18 19$link = get_db_connect(); 20if($_SERVER['REQUEST_METHOD'] === 'POST'){ 21 22 $submit_type = $_POST['submit_type']; 23 24 switch ($submit_type) { 25 case 'add_item': 26 27 $drink_name = $_POST['user_name']; 28 $price = $_POST['price']; 29 $stock = $_POST['stock']; 30 $status = $_POST['public_status']; 31 32 //登録値チェック 33 $err_msg[] = entry_name_check($user_name); 34 $err_msg[] = entry_check_price($price); 35 $err_msg[] = entry_check_stock($stock); 36 37 //アップロードファイル名を変数に代入 38 $temp_file = $_FILES['new_img']['tmp_name']; 39 $file_name = '../img' . $_FILES['new_img']['name']; 40 41 //拡張子取得 42 $ext = extention($file_name); 43 //拡張子チェック 44 $err_msg[] = extention_check($ext); 45 46 //ファイルパス+ファイル名 47 $upload_file = '../img' . $drink_id . $ext; 48 49 if(count($err_msg) === 0){ 50 51 //トランザクション開始 52 mysqli_autocommit($link, $false); 53 54 $sql = 'INSERT INTO drink_info_table(drink_name,price,status)VALUES(\'' . $drink_name . '\',' . $price . ',' . $status . ')'; 55 56 if(mysqli_query($link,$sql) === TRUE ){ 57 58 $drink_id = mysqli_insert_id($link); 59 60 //drink_stock_tableにinsert 61 $err_msg[] = insert_drink_stock_table($drink_id,$stock); 62 63 }else{ 64 $err_msg[] = 'drink_info_table:insertエラー' . $sql; 65 } 66 67 //アップロード処理 68 $err_msg[] = upload_img($file_name,$temp_file,$upload_file); 69 70 //トランザクション成否判定 71 if(count($err_msg) === 0){ 72 73 $success_msg[] = '商品追加成功'; 74 75 mysqli_commit($link); 76 77 }else{ 78 mysqli_rollback($link); 79 } 80 } 81 82 break; 83 84 case'change_value': 85 86 $update_stock = $_POST['update_stock']; 87 88 $drink_id = $_POST['drink_id']; 89 if(isset($update_stock)){ 90 91 //整数かどうかを判定 92 $err_msg[] = change_stock_number($update_stock); 93 94 95 if(count($err_msg) === 0){ 96 97 $sql = 'UPDATE drink_stock_table SET stock_number = ' . $update_stock . ' WHERE drink_id = ' . $drink_id; 98 99 if(mysqli_query($link,$sql) === TRUE){ 100 $success_msg[] = '在庫変更成功'; 101 }else{ 102 $err_msg[] ='drink_stock_table:UPDATEエラー' . $sql; 103 } 104 } 105 } 106 107 break; 108 109 case 'change_status': 110 111 112 $status = (int)$_POST['status']; 113 $drink_id = (int)$_POST['drink_id']; 114 115 if(($status) === 1){ 116 117 $sql = 'UPDATE drink_info_table SET status = 0 WHERE drink_id = ' . $drink_id; 118 119 if(mysqli_query($link,$sql) === FALSE){ 120 121 $err_msg[] = 'drink_info_table:UPDATEエラー' . $sql; 122 123 }else{ 124 125 $success_msg[] = 'ステータス変更成功'; 126 } 127 128 }else{ 129 $sql = 'UPDATE drink_info_table SET status = 1 WHERE drink_id = ' . $drink_id; 130 131 if(mysqli_query($link,$sql) === FALSE){ 132 133 $err_msg[] = 'drink_info_table:UPDATEエラー' .$sql; 134 135 }else{ 136 137 $success_msg[] = 'ステータス変更成功'; 138 } 139 140 } 141 142 break; 143 144 } 145 146} 147 148//drink_info_table取得 149$drink_info_list = get_drink_table($link); 150 151 152//特殊文字をHTMLエンティティに変換 153$drink_info_list = entity_as_array($drink_info_list); 154//var_dump($drink_info_list);exit(); 155 156include_once './view.php'; 157 158 159?>

以下はmodel.phpになります。

php

1<?php 2 3//在庫数が整数かどうか 4function change_stock_number($update_stock){ 5 $err_msg = ''; 6 if(ctype_digit($update_stock) === FALSE){ 7 8 $err_msg = '在庫数は整数のみ入力してください'; 9 10 } 11 12 return $err_msg; 13} 14 15//drink_stock_tableにinsertする 16function insert_drink_stock_table($drink_id,$stock){ 17 18 $err_msg = ''; 19 $sql = 'INSERT INTO drink_stock_table(drink_id,stock_number)VALUES(' . $drink_id . ',' . $stock . ')'; 20 if(mysqli_query($link,$sql) === FALSE){ 21 $err_msg = '$drink_stock_table:insertエラー' . $sql; 22 } 23 24 return $err_msg; 25} 26 27 28//アップロード処理 29function upload_img($tmp_file,$file_name,$upload_file){ 30 31 $err_msg = ''; 32 33 34 if (is_uploaded_file($temp_file)) { 35 36 if (move_uploaded_file($temp_file,$upload_file) === FALSE) { 37 $err_msg = 'ファイルをアップロードできません。'; 38 } 39 40 } else { 41 $err_msg = 'ファイルが選択されていません。'; 42 } 43 44 return $err_msg; 45} 46 47//拡張子チェック 48function extention_check($ext){ 49 50 $err_msg = ''; 51 52 if(!($ext === 'jpeg' || $ext === 'jpg' || $ext === 'png')){ 53 $err_msg = 'ファイル形式が異なります。画像ファイルはjpegまたはpngのみ利用可能です'; 54 } 55 56 return $err_msg; 57} 58 59 60//拡張牛取得 61function extention($file_name){ 62 return substr($file_name,strrpos($file_name,'.') +1); 63} 64 65//登録商品名チェック 66function entry_name_check($drink_name){ 67 $err_msg = ''; 68 if($drink_name = ''){ 69 $err_msg = '名前を入力してください'; 70 } 71 return $err_msg; 72} 73 74//登録値段チェック 75function entry_check_price($price){ 76 $err_msg = ''; 77 if(ctype_digit($price) !== TRUE ){ 78 $err_msg = '値段は整数のみ入力してください'; 79 }elseif($price = ''){ 80 $err_msg = '値段を入力してください'; 81 } 82 return $err_msg; 83} 84//登録個数チェック 85function entry_check_stock($stock){ 86 $err_msg = ''; 87 88 if(ctype_digit($stock) !== TRUE ){ 89 $err_msg = '個数は整数のみ入力してください'; 90 }elseif($stock = ''){ 91 $err_msg = '個数を入力してください'; 92 } 93 94 return $err_msg; 95} 96 97 98 99 100 101 102function get_db_connect() { 103 104 // コネクション取得 105 if (!$link = mysqli_connect(DB_HOST, DB_USER, DB_PASSWD, DB_NAME)) { 106 die('error: ' . mysqli_connect_error()); 107 } 108 109 // 文字コードセット 110 mysqli_set_charset($link, DB_CHARACTER_SET); 111 112 return $link; 113} 114function get_as_array($link,$sql){ 115 $data = array(); 116 117 if($result = mysqli_query($link,$sql)){ 118 119 if(mysqli_num_rows($result) > 0) { 120 121 while($row = mysqli_fetch_assoc($result)){ 122 $data[] = $row; 123 124 } 125 } 126 127 mysqli_free_result($result); 128 } 129 130 return $data; 131} 132 133function get_drink_table($link){ 134 135 $sql = 'SELECT drink_info_table.drink_id,drink_name,price,status,stock_number 136 FROM drink_info_table 137 JOIN drink_stock_table 138 ON drink_info_table.drink_id = drink_stock_table.drink_id'; 139 140 return get_as_array($link,$sql); 141 142} 143 144 145 146function entity_str($str) { 147 return htmlspecialchars($str, ENT_QUOTES, HTML_CHARACTER_SET); 148} 149 150function entity_as_array($drink_info_list){ 151 152 foreach($drink_info_list as $key => $value){ 153 154 foreach($value as $keys => $values){ 155 $drink_info_list[$key][$keys] = entity_str($values); 156 } 157 } 158 159 return $drink_info_list; 160 161} 162 163

以下はview.phpとなります。
イメージ説明
イメージ説明
イメージ説明

在庫数を入力し、変更ボタンを押すと以下のように、「Array」と表示され在庫数が変更できません。。。
イメージ説明
どなたか教えて下さる方いましたら、ご教授下さい...

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

Arrayと表示されるのは配列変数をそのままechoしているからです。
該当部分の変数をvar_dump()した上で中身の取り出したい文字列が想定通り来ているか、どのように出力するかご検討ください。

投稿2017/09/14 00:42

m.ts10806

総合スコア80765

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

newyee

2017/09/14 01:57

ご回答いただきありがとうございます。 そのまま配列を出力していたことに気づいていませんでした。。。 無事に解決できてよかったです。。。
guest

0

ベストアンサー

view.phpファイルを下記のようにしてみてはいかがでしょうか。
現状のコードでは、echo $success_msgとなっています。

php

1<?php foreach ($success_msg as $value) { ?> 2 <p><?php echo $value; ?></p> 3<?php } ?>

他のコードは読んでないので他に不具合があるかもしれませんがArrayとは表示されなくなると思います。

投稿2017/09/13 16:01

Tomak

総合スコア1652

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

newyee

2017/09/14 01:56

ご回答いただきありがとうございました。 Arrayの表示は無事消えて解決いたしました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問