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

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

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

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PHP

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

アップロード

アップロードは特定のファイルをウェブサーバに送るプロセスのことを指します。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

XAMPP

XAMPP(ザンプ)は、ウェブアプリケーションの実行に必要なフリーソフトウェアをパッケージングしたApacheディストリビューションです。 XAMPPひとつインストールするだけで、Apache、MySQL、PHP、Perlなどのソフトウェアと、 phpMyAdminなどの管理ツール、SQLiteなどのソフトウェアやライブラリモジュールなどを利用することが可能です。

Q&A

解決済

1回答

1262閲覧

入力フォームからテキストと画像をアップロードしてもらい、テキストと縮小された画像のパスをデータベースに保存したい。

toyop

総合スコア30

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PHP

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

アップロード

アップロードは特定のファイルをウェブサーバに送るプロセスのことを指します。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

XAMPP

XAMPP(ザンプ)は、ウェブアプリケーションの実行に必要なフリーソフトウェアをパッケージングしたApacheディストリビューションです。 XAMPPひとつインストールするだけで、Apache、MySQL、PHP、Perlなどのソフトウェアと、 phpMyAdminなどの管理ツール、SQLiteなどのソフトウェアやライブラリモジュールなどを利用することが可能です。

0グッド

0クリップ

投稿2020/05/04 17:18

前提・実現したいこと

こんにちは。コロナウィルスの影響で学校が休みになってしまったので、PHPを学ぶことにした大学生です。
現在PHPを用いて表題の機能を持ったウェブアプリケーションを作ろうと思っているのですが、データベース(MySQL)に接続するところで、以下のエラーが表示されます。アップロードと画像の縮小とデータベースへの接続を全部ひとつのファイルでやろうとしているのがいけないのかなと思い、$_POST('images')を使ってデータベースに接続するためのファイルを分けて作ったりもしたのですが、今度は'images'がundefinedだというエラーが発生し、お手上げに状態になってしまいました。

説明が拙いところもあると思いますが、もし解決策をご存知の方がいらっしゃいましたらご教授お願いいたします。

よろしくお願いいたします。

p.s.
縮小画像を作った後、オリジナル画像を消去するためにunlink($imageFilePath)を挿入したいのですが、
Parse error: syntax error, unexpected 'unlink' (T_STRING) in /Applications/XAMPP/xamppfiles/htdocs/xxx/upload.php
と表示されてしまいます。これについてもよろしかったらアドバイスいただきたいです。

発生している問題・エラーメッセージ

Parse error: syntax error, unexpected '$dsn' (T_VARIABLE) in /Applications/XAMPP/xamppfiles/htdocs/xxx/upload.php on line 87

該当のソースコード

PHP

1<?php 2 3$text = $_POST['text']; 4 5$msg = null; // アップロード状況を表すメッセージ 6 7define('MIDDLE_WIDTH', 300); 8 9//データの拡張子をチェック 10{ 11 $imagesize = getimagesize($_FILES['image']['tmp_name']); 12 13 switch($imagesize['mime']){ 14 case 'image/jpeg': 15 $ext = '.jpg'; 16 break; 17 case 'image/png': 18 $ext = '.png'; 19 break; 20 default: 21 echo $_FILES['image']['name']."は画像ファイル(JPEG/PNG) ではありません。<br>"; 22 $ext = 0; 23 } 24} 25 #ファイル形式が異なる場合処理を止める 26{ 27 if ($ext === 0) { 28 exit; 29 } 30} 31 32 // アップロード処理 33 if (isset($_FILES['image']) && is_uploaded_file($_FILES['image']['tmp_name'])){ 34 $imageFileName = sha1(time().mt_rand()) . $ext; 35 if (move_uploaded_file($_FILES['image']['tmp_name'], 'album/' . $imageFileName)){ 36 $msg = 'アップロードしました。'; 37 } else { 38 $msg = 'アップロードできませんでした。'; 39 } 40 } 41 42$width = $imagesize[0]; 43$height = $imagesize[1]; 44$imageFilePath = 'album/'. $imageFileName; 45 46//画像をリサイズ 47//MIDDLE画像を作成、保存 48 49if ($width > MIDDLE_WIDTH) { 50 // 元ファイルを画像タイプによって作る 51 switch($imagesize['mime']){ 52 case 'image/gif': 53 $srcImage = imagecreatefromgif($imageFilePath); 54 break; 55 case 'image/jpeg': 56 $srcImage = imagecreatefromjpeg($imageFilePath); 57 break; 58 case 'image/png': 59 $srcImage = imagecreatefrompng($imageFilePath); 60 break; 61 } 62 63 // 新しいサイズを作る 64 $middleHeight = round($height * MIDDLE_WIDTH / $width); 65 66 // 縮小画像を生成 67 $middleImage = imagecreatetruecolor(MIDDLE_WIDTH, $middleHeight); 68 imagecopyresampled($middleImage, $srcImage, 0, 0, 0, 0, 300, $middleHeight, $width, $height); 69 70 // 縮小画像を保存する 71 switch($imagesize['mime']){ 72 case 'image/gif': 73 imagegif($middleImage, 'album/'.'m'.$imageFileName); //fullサイズリネイム 74 break; 75 case 'image/jpeg': 76 imagejpeg($middleImage, 'album/'.'m'.$imageFileName); 77 break; 78 case 'image/png': 79 imagepng($middleImage, 'album/'.'m'.$imageFileName); 80 break; 81 } 82} //if MIDDLE 83 84$MiddleimageFilePath = 'album/'.'m'.$imageFileName 85 86// データベースに接続 87$dsn = 'mysql:host=localhost;dbname=xxx;charset=utf8'; 88$user = 'xxx'; 89$password = 'xxx'; // userに設定したパスワード 90 91try { 92 $db = new PDO($dsn, $user, $password); 93 $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); 94 // プリペアドステートメントを作成 95 $stmt = $db->prepare(" 96 INSERT INTO bbs (text, image) 97 VALUES (:text, :image)" 98 ); 99 // パラメータを割り当て 100 $stmt->bindParam(':text', $text, PDO::PARAM_STR); 101 $stmt->bindParam(':image', $MiddleimageFilePath, PDO::PARAM_STR); 102 // クエリの実行 103 $stmt->execute(); 104 // bbs.phpに戻る 105 header('Location: upload.php'); 106 exit(); 107} catch(PDOException $e) { 108 die ('エラー:' . $e->getMessage()); 109} 110 111?> 112 113<html> 114<head> 115 <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> 116 <title>画像アップロード</title> 117</head> 118 119<body> 120 <h1>画像アップロード</h1> 121 <form action="upload.php" method="post" enctype="multipart/form-data"> 122 <input type="text" name="text"> 123 <input type="file" name="image"> 124 <input type="submit" value="アップロード"> 125 </form> 126 <?php 127 if ($msg){ 128 echo '<p>' . $msg . '</p>'; 129 } 130 ?> 131</body> 132</html>

試したこと

データベース関連の87~109行目の位置が間違っているのかなと思い、一番最初の行に移動することも試したのですが、そうしたら"このページを表示できません"というメッセージが表示されました。エラーコードはINET_RESOURCE_NOT_FOUNDです。

補足情報(FW/ツールのバージョンなど)

PHP/7.4.4です。

以下のサイトと本を参考にコードを組みました。
http://sumidai.net/2017/07/09/add-form-02/
https://qiita.com/ryo-futebol/items/11dea44c6b68203228ff

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

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

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

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

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

guest

回答1

0

ベストアンサー

この質問などと同じです。

投稿2020/05/04 21:17

編集2020/05/04 21:18
m.ts10806

総合スコア80875

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

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

toyop

2020/05/08 07:17 編集

ご指摘ありがとうございます。前行の;が抜けていました。 自分では気づけなかったので助かりました。以後、行数前後を注意して見るようにしたいと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問