前提・実現したいこと
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 を用いた画像とコメントを表示させる方法でも構いません。
何卒、よろしくお願い致します。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/07/07 10:06
2020/07/07 10:51