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

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

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

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

PHP

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

1回答

989閲覧

画像とコメントを表示させる

zuka3

総合スコア3

MySQL

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

PHP

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2020/07/07 00:44

前提・実現したいこと

web制作初心者です。
php,mysql,jsを用いて、画像+コメントを投稿をしたいのですが、うまくできません。主に、ajaxでの処理です。
ajaxで、入力された画像とコメントをget_img_com.phpに遷移させたいです。コメントと画像の処理を分けるか否か(ajax)。data のところがどうやって書けばわかりません。
index.php で画像とコメントを入力させ、index.php内でjsでそれらを処理をする
get_img_com.php で画像・コメント情報をmysqlに保存する
load_img_com.php でmysqlのデータを表示させる
function.php は、db接続など処理してます。

ソースコードは、関係がありそうなとこだけ抜粋しています。
わからないことだらけですが、どうかご教授お願い致します。

該当のソースコード

index.php

1<div class="input_form"> 2 <div class="container mt-5"> 3 <div class="row"> 4 <div class="col-md-4 pt-4 pl-4"> 5 <form class="trip_image_button" method="post" enctype="multipart/form-data" > 6 <div class="form-group"> 7 <label>画像選択</label> 8 <input type="file" name="image" accept=".jpg, .png" required> 9 </div> 10 <button class="btn btn-primary" >保存</button> 11 </form> 12 </div> 13 </div> 14 </div> 15 <textarea class="comment"></textarea> 16 <button class="trip_button">Trip</button> 17 </div> 18 19 // index内のajaxでの処理 20$(".trip_button").on("click", function(event){ 21 $.ajax({ 22 type: "POST", 23 url: "get_trip.php", 24 data: { 25 "id": $(".list:first").data("list"), 26 "user_id": "<?php echo $_SESSION['user_id']; ?>", 27 "comment": $(".comment").val(), 28 // "image_content" :$(".image_content").val(); 29 }, 30 dataType: "json" 31 }) 32 .done(function(data){ 33 update(); 34 $(".comment").val(""); 35 36 }) 37 .fail(function(XMLHttpRequest, textStatus, errorThrown){ 38 fail_err_msg(XMLHttpRequest, textStatus, errorThrown); 39 }); 40 // $(".column").animate({scrollTop: 0}, "fast"); 41 function file_upload(){ 42 // フォームデータを取得 43 var formdata = new FormData($('#trip_image_button').get(0)); 44 45 // POSTでアップロード 46 $.ajax({ 47 url : "get_trip.php", 48 type : "POST", 49 data : formdata, 50 cache : false, 51 contentType : false, 52 processData : false, 53 dataType : "html" 54 }) 55 .done(function(data, textStatus, jqXHR){ 56 alert(data); 57 }) 58 .fail(function(jqXHR, textStatus, errorThrown){ 59 alert("fail"); 60 }); 61 62 } 63 64 });

get_img_com.php

1 2<?php 3//get_img_com.php 4 header("Content-type: application/json; charset=UTF-8"); 5 6 date_default_timezone_set("Asia/Tokyo"); 7 8 require("function.php"); 9 10 $sql = null; 11 $stmt = null; 12 13 $id = $_POST["id"]; 14 $user_id = $_POST["user_id"]; 15 $comment = $_POST["comment"]; 16 $image_name = $_POST["image_name"]; 17 $image_content = $_POST["image_content"]; 18 $datetime = new DateTime(); 19 $datetime = $datetime->format("Y-m-d H:i:s"); 20 21 try{ 22 $db = db_connect(); 23 24 $sql = "INSERT INTO trips(id, user_id, comment , image_name , image_content , created_at) 25 VALUES(null, ?, ?, ?,?,?)"; 26 $stmt = $db->prepare($sql); 27 $stmt->execute( array($user_id, $comment ,$image_name , $image_content,$datetime) ); 28 29 30 $sql = "SELECT * FROM trips WHERE id>? ORDER BY created_at DESC"; 31 $stmt = $db->prepare($sql); 32 $stmt->execute( array($id) ); 33 34 $content = array(); 35 while( $row = $stmt->fetch() ){ 36 $content[] = array( 37 "id" => $row["id"], 38 "user_id" => $row["user_id"], 39 "comment" => $row["comment"], 40 "image_name" => $row["image_name"], 41 "image_content" => $row["image_content"], 42 "created_at" => $row["created_at"] 43 44 ); 45 } 46 47 $db = null; 48 echo json_encode($content); 49 50 }catch(PDOExeption $e){ 51 echo $e->getMessage(); 52 die(); 53 } 54 ?>

load_img_com.php

1<?php 2//load_img_com.php 3 header("Content-type: application/json; charset=UTF-8"); 4 5 require("function.php"); 6 7 $sql = null; 8 $stmt = null; 9 10 $id = $_POST["id"]; 11 12 13 14 try{ 15 $db = db_connect(); 16 17 $sql = "SELECT * FROM trips WHERE id>? ORDER BY created_at DESC"; 18 $stmt = $db->prepare($sql); 19 $stmt->execute( array($id) ); 20 21 $content = array(); 22 while( $row = $stmt->fetch() ){ 23 $content[] = array( 24 "id" => $row["id"], 25 "user_id" => $row["user_id"], 26 "comment" => $row["comment"], 27 "image_content" => $row["image_content"], 28 "created_at" => $row["created_at"] 29 ); 30 } 31 32 $db = null; 33 echo json_encode($content); 34 35 }catch(PDOExeption $e){ 36 echo $e->getMessage(); 37 die(); 38 } 39 40 ?> 41

補足情報

mysql
db名: testdb
テーブル名 :trips
カラム名 : id , user_id , comment , image_content , image_name , image_type ,created_at

多分、わかりづらいと思うので、php,mysql,js を用いた画像とコメントを表示させる方法でも構いません。
何卒、よろしくお願い致します。

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

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

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

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

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

guest

回答1

0

画像を送るなら$_FILESで受けてください
画像をDBに保持するか、ファイルのままで管理するか要検討。後者の方が無駄が少ないと思います。
DBにはテキスト情報を保持しつつ、画像がファイルならそれを紐付けるidが必要になります

ソースについては全体的におかしい感じ

  • insertしてselectしたり
  • id>?したり
  • 画像をloadする(?)のwhileで複数データを処理したり

どういう意図かわからないところが散見されます

sample

fetchで画像とコメントをおくる

javascript

1<script> 2window.addEventListener('DOMContentLoaded', ()=>{ 3 document.querySelector('#btn').addEventListener('click',e=>{ 4 e.preventDefault(); 5 var body=new FormData(e.target.form); 6 var method="post"; 7 fetch("get_file.php",{body,method}).then(res=>res.text()).then(console.log); 8 }); 9}); 10 11</script> 12<form id="f1" method="post" enctype="multipart/form-data"> 13<input type="file" name="myfile"><br> 14<input type="text" name="mycomment" value="hogehoge"><br> 15<input type="submit" value="send" id="btn"> 16</form>
  • get_file.php

PHP

1<?PHP 2print_r($_POST); 3print_r($_FILES); 4

投稿2020/07/07 01:54

編集2020/07/07 02:06
yambejp

総合スコア116724

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

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

zuka3

2020/07/07 10:06

ユーザランキング総合2位の方に、返信されてもらい、とても光栄です。返信ありがとうございます。 私がしたいことは、twitterlike のwebアプリケーションを作りたいです。主にコメントを入力して、画像を投稿をしたい人は、投稿をする。 また、それらの情報をDBに保存して、保存された情報をウェブ上に表示させる。DBの詳細は、idはユーザの固有番号、user_idは、ユーザの名前、commentは、コメント、image_nameは、画像の名前、image_content は画像自体の情報、image_type は画像の拡張子、image_sizeは、画像サイズ、created_at は、DBに追加された時間 です。 jsのところは、わかったのですが、get_file.php は具体的に何をしているのか教えて頂きたいです。 また、画像とコメントを取得してDBに保存するphpファイルとそれらの情報をDBから取り出して、ブラウザに表示させるphpファイルに分けたいです。 かなりわかりづらいと思いますが、ご教授お願い致します。
yambejp

2020/07/07 10:51

get_file.phpは送られたデータを確認するためのものです。 今回はサンプルなので適当に書いています 具体的にはファイルが送られてきていること、postでデータが送られてきていることを 確認できるようにしてあります
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問