php で画像とコメントを入力・選択させ、DBに保存し、ブラウザに表示させたいのですが、画像データとコメントのデータを同時に遷移させたいphpファイルに送りたいのですが、書き方があってるかわかりません。<form>....</form>の部分を Trip ボタンを押した時に送りたいです。
php
1 2<div class="input_form"> 3 <div class="container mt-5"> 4 <div class="row"> 5 <div class="col-md-4 pt-4 pl-4"> 6 <form class="trip_image" method="post" enctype="multipart/form-data" > 7 <div class="form-group"> 8 <label>画像選択</label> 9 <input type="file" name="image" accept=".jpg, .png" required> 10 </div> 11 <textarea class="comment"></textarea> 12 <button class="trip_button">Trip</button> 13 </form> 14 </div> 15 </div> 16 </div> 17</div> 18 19//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" : $(".image").val() 29 }, 30 dataType: "json" 31 }) 32 .done(function(data){ 33 update(); 34 $(".comment").val(""), 35 $(".image").val(""); 36 }) 37 .fail(function(XMLHttpRequest, textStatus, errorThrown){ 38 fail_err_msg(XMLHttpRequest, textStatus, errorThrown); 39 }); 40 }); 41
php
1<?php 2 header("Content-type: application/json; charset=UTF-8"); 3 4 date_default_timezone_set("Asia/Tokyo"); 5 6 //function.php はdb接続をする 7 require("function.php"); 8 9 $sql = null; 10 $stmt = null; 11 12 $id = $_POST["id"]; 13 $user_id = $_POST["user_id"]; 14 $comment = $_POST["comment"]; 15 $name = $_FILES['image']['name']; 16 $type = $_FILES['image']['type']; 17 $content = file_get_contents($_FILES['image']['tmp_name']); 18 $size = $_FILES['image']['size']; 19 $datetime = new DateTime(); 20 $datetime = $datetime->format("Y-m-d H:i:s"); 21 22 try{ 23 $db = db_connect(); 24 25 $sql = "INSERT INTO trips(id, user_id, comment,image_name , image_type , 26 image_content , image_size , created_at) VALUES(null, ?, ?, ? , ?, ?, ?, ?)"; 27 $stmt = $db->prepare($sql); 28 $stmt->execute( array($user_id, $comment, $name, $type, $content, $size, $datetime) ); 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_content" => $row["image_content"], 41 "created_at" => $row["created_at"] 42 ); 43 } 44 45 $db = null; 46 echo json_encode($content); 47 48 }catch(PDOExeption $e){ 49 echo $e->getMessage(); 50 die(); 51 } 52 53 ?>
わかりづらいと思いますが、よろしくお願いします。
保存処理と取得処理 (= 表示処理) のコードを提示してください。
現在起きてる問題や現象を明示してください。
合ってるかどうかは動かせば分かる話です。この内容では動かしてすらいないように見受けられます。
失敗してから覚えることの方が多いですよ
ファイルを受け取るとか保存するとかいう以前に明らかに構文エラーがありますので、display_errorsなりphp -lなりを活用してまず構文エラーを解決してください。
php code checker で確認したのですが、構文エラーがないとでて、どこが違うかわからないです。今のところ、コメントのみがdbに保存されています。なので、違うと思われるのは、$_FILESの宣言の仕方なのか、コメントのみが、dbにINSERTせれているので、SQL文のINSERT文が違うのか、ぐらいしか思いつかないです...
何卒、ご教授お願い致します。
回答2件
あなたの回答
tips
プレビュー