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

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

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

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

PHP

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

Q&A

1回答

1030閲覧

【PHP】ユーザー情報編集にてプロフィール画像を読み込みができない

kiru226

総合スコア1

phpMyAdmin

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

PHP

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

0グッド

0クリップ

投稿2021/04/07 10:01

編集2021/04/07 10:13

###前提・実現したいこと
PHPMyadminを使用して、ユーザー情報を編集機能を実装したところ、プロフィール画像のみファイルを読み込みしてもPHPMyadminに編集内容が反映されない状態です。
ちなみにユーザー情報編集のカラムは「ユーザー名」、「メールアドレス」、「プロフィール画像」※です。
※プロフィール画像はユーザー登録時は登録不要にしています。
###発生している問題・エラーメッセージ
■User.php

public function updateUser($post) { $sql = 'UPDATE users SET img = :img, user_name= :user_name, mail= :mail, update_at= :update_at WHERE id= :id'; try{ $date = date("Y-m-d H:i:s"); $stmt = $this->dbh->prepare($sql); $params = array( ':img'=>$post['img'], ':user_name'=>$post['user_name'], ':mail'=>$post['mail'], ':update_at'=>$date, ':id'=>$post['id'] ); $stmt->execute($params); // var_dump($files); // echo "更新しました"; } catch(PDOException $e){ echo "更新失敗".$e->getMessage() ."\n"; exit(); } }

■edit_pf_form.php

<div class="all_wrapper"> <?php require("header.php"); ?> <div class="container"> <div class="user_form"> <h2>会員情報編集</h2> <form action="edit_pf_complete.php" method="post" enctype="multipart/form-data"> <input type="hidden" name="id" value="<?= $_SESSION['login_user']['id'] ?>"> <label for="file"> <i class="fas fa-camera"></i>プロフィール写真を選択 <input name="img" type="file" id="file" accept="image/*" accept=".png, .jpg, .jpeg" required> <div id="file_result"></div> </label> <div class="form_content"> <input class="name" name="user_name" type="text" value="<?= h($name); ?>" placeholder="ユーザー名"> <p class="red required_name"></p> <p class="red count_name"></p> <?php if(isset($err['user_name'])): ?> <p class="red"><?php echo $err['user_name']; ?></p> <?php endif; ?> </div> <div class="form_content"> <input class="mail" name="mail" type="text" value="<?= h($mail); ?>" placeholder="メールアドレス"> <p class="red required_mail"></p> <p class="red error_mail"></p> <?php if(isset($err['mail'])): ?> <p class="red"><?php echo $err['mail']; ?></p> <?php endif; ?> </div> <input type="submit" name="submit" class="submit" value="変更する" onclick="return confirm('会員情報を変更してよろしいですか?')">

■edit_pf_complete.php

<?php $referer = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : null; if (!parse_url($referer, PHP_URL_HOST) == 'edit_pf_form.php'){ header('Location: top.php'); return; } session_start(); require_once('../Models/User.php'); $err = []; if(!$name = filter_input(INPUT_POST,'user_name')){ $err['user_name'] = 'ユーザー名を入力してください'; }else if(mb_strlen($name) > 10){ $err['user_name'] = '*10文字以内で入力してください'; } $pattern_add = "/^([a-zA-Z0-9])+([a-zA-Z0-9._-])*@([a-zA-Z0-9_-])+([a-zA-Z0-9._-]+)+$/"; if(!$email = filter_input(INPUT_POST,'mail')){ $err['mail'] = '*メールアドレスを入力してください'; }else if(!preg_match($pattern_add, $email)){ $err['mail'] = '*メールアドレスは正しい形式で入力してください'; } if(count($err) > 0){ $_SESSION['err'] = $err; header('Location: edit_pf_form.php'); return; }else { $user = new UserLogic(); $user->updateUser($_POST,$_FILES); } ?>

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

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

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

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

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

kiru226

2021/04/07 10:16

ご確認ありがとうございます。 updateUserの処理は、edit_pf_form.php内の更新ボタンの遷移先であるedit_pf_complete.php(更新完了ページ)で行なっております。 ユーザー名とメールアドレスは問題なく更新されます。
guest

回答1

0

呼び出し

$user->updateUser($_POST,$_FILES);

定義

public function updateUser($post) {

引数の数合ってませんね。

ただ$_POSTも$_FILESもスーパーグローバル変数なので引数で渡さなくとも参照できます。
というか、filter_input()使うのでしたら統一したほうがいいです。

ただ$_FILES参照したとして、実体を保存するならバイナリデータ取得とかしないといけないはずです。

投稿2021/04/07 10:26

m.ts10806

総合スコア80861

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問