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

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

ただいまの
回答率

90.47%

  • PHP

    20847questions

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

  • phpMyAdmin

    667questions

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

[PHP]アップロードした画像を表示させられません...

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 257

newyee

score 116

現在、PHPの勉強で自動販売機ツール(管理画面)を作成しているのですが、アップロードしたファイルを表示させることができずにいます...
以下が僕が作成中のコードとなります。
MVCモデルの勉強の為(Contoroller.php,view.php,model.php)の3つのファイルに分けて作成しています。
以下が、Contoroller.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 = '';
$check_err_msg = '';

$link = get_db_connect();

if($_SERVER['REQUEST_METHOD'] === 'POST'){

    $submit_type = $_POST['submit_type'];
    //var_dump($submit_type);exit();

    switch ($submit_type) {
        case 'add_item':

        $drink_name = $_POST['drink_name'];
        $price = $_POST['price'];

        $stock = $_POST['stock'];

        $status = $_POST['public_status'];


        //登録値チェック
        $err_msg[] = entry_name_check($drink_name);
        $err_msg[] = entry_check_price($price);
        $err_msg[] = entry_check_stock($stock);
        //var_dump($err_msg);exit();

        //アップロードファイル名を変数に代入
        $temp_file = $_FILES['new_img']['tmp_name'];
        $file_name = '../img/' . $_FILES['new_img']['name'];

        //拡張子取得
        $ext = extention($file_name);
        //拡張子チェック
        $err_msg[] = extention_check($ext);
        //var_dump($ext);exit();

        //ファイルパス+ファイル名
        $upload_file = '../img/' . $drink_id . $ext;

        //var_dump($err_msg);exit();

        //エラーメッセージの空もしくはNULLを排除
        $check_err_msg = array_filter($err_msg);

        //var_dump($check_err_msg);exit();

        //エラーメッセージの要素数が0の場合
        if(count($check_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($link,$drink_id,$stock);

            }else{
                $err_msg[] = 'drink_info_table:insertエラー' . $sql;
            }

            //アップロード処理
            $err_msg[] = upload_img($temp_file,$file_name,$upload_file); 
            //var_dump($err_msg);

            //空もしくはnullを削除
            $check_err_msg = array_filter($err_msg);
            //var_dump($check_err_msg);exit();       

           //トランザクション成否判定
           if(count($check_err_msg) === 0){

               $success_msg[] = '商品追加成功';

               mysqli_commit($link);

            }else{

               $err_msg[] = '商品追加失敗';
               mysqli_rollback($link);
            }
        }else{
            $err_msg[] = 'countエラー';
        }

        break;

        case'change_value':

            $drink_id = (int)$_POST['drink_id'];

                if(isset($_POST['update_stock'])){
                    $update_stock = (int)$_POST['update_stock'];

                    $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[] = 'UPDATE drink_stock_table:updateエラー:' . $sql;
                    }
                }else{
                    $err_msg[] = '在庫変更失敗';   
                }

            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';


$1>


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

イメージ説明
イメージ説明
イメージ説明
イメージ説明

アップロードしますと、「imgフォルダ」には画像は保存されるのですが、表示できていないという状態です...
原因が分からないので、教えて頂けたら幸いです...
よろしくお願いします。

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • Kosuke_Shibuya

    2017/09/17 16:09

    コードを画像で貼るのはやめてください。

    キャンセル

回答 1

checkベストアンサー

+1

画像を保存したパスが参照できていないのでは?
とりあえずimgタグのsrcを絶対パスで指定してみてはどうでしょうか。

それからソースコードは画像ではなく、関係ありそうな部分だけをそのまま貼りつけるようにした方がいいですよ。
画像でコード読むのはしんどいです。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/09/17 22:40

    imgタグ部分で絶対パスを指定したのですが、やはり表示されませんでした...
    文字数制限の為、画像で貼ったんですが申し訳なかったです...

    キャンセル

  • 2017/09/18 13:42

    それではブラウザに画像のアドレスだけ入力してみて下さい。
    画像にアクセスできない場合、HTTPのステータスコードが表示されるはずです。
    それを見ればだいたい原因は分かるかと。

    キャンセル

関連した質問

同じタグがついた質問を見る

  • PHP

    20847questions

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

  • phpMyAdmin

    667questions

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