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

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

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

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

Q&A

解決済

2回答

1034閲覧

php で画像と文字列(コメント)を表示させる

zuka3

総合スコア3

PHP

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

0グッド

0クリップ

投稿2020/07/10 15:59

編集2020/07/11 06:43

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 ?>

わかりづらいと思いますが、よろしくお願いします。

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

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

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

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

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

thyda.eiqau

2020/07/10 21:35

保存処理と取得処理 (= 表示処理) のコードを提示してください。
m.ts10806

2020/07/10 22:51

現在起きてる問題や現象を明示してください。 合ってるかどうかは動かせば分かる話です。この内容では動かしてすらいないように見受けられます。 失敗してから覚えることの方が多いですよ
thyda.eiqau

2020/07/11 06:57

ファイルを受け取るとか保存するとかいう以前に明らかに構文エラーがありますので、display_errorsなりphp -lなりを活用してまず構文エラーを解決してください。
zuka3

2020/07/11 09:01

php code checker で確認したのですが、構文エラーがないとでて、どこが違うかわからないです。今のところ、コメントのみがdbに保存されています。なので、違うと思われるのは、$_FILESの宣言の仕方なのか、コメントのみが、dbにINSERTせれているので、SQL文のINSERT文が違うのか、ぐらいしか思いつかないです... 何卒、ご教授お願い致します。
guest

回答2

0

ベストアンサー

"image" : $(".image").val()

これでは単にファイル選択したときに設定させる文字列が送られるだけです。ブラウザによっても内容が違います。
FormDataなど使ってください。
ajaxのオプションも足りていません。

「Ajax ファイルアップロード」で調べるとたくさん参考記事は出てきます。

投稿2020/07/11 09:40

m.ts10806

総合スコア80850

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

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

zuka3

2020/07/12 05:36

アドバイスありがとうございます!!! こんな感じ⬇︎で書いてみたんですが、画像情報はdbに保存されないです... $(".trip_button").on("click", function(event){ $.ajax({ type: "POST", url: "get_trip.php", data: { "id": $(".list:first").data("list"), "user_id": "<?php echo $_SESSION['user_id']; ?>", "comment": $(".comment").val(); }, dataType: "json" }) .done(function(data){ update(); $(".comment").val(""); }) .fail(function(XMLHttpRequest, textStatus, errorThrown){ fail_err_msg(XMLHttpRequest, textStatus, errorThrown); }); // $(".column").animate({scrollTop: 0}, "fast"); function file_upload(){ // フォームデータを取得 var formdata = new FormData($('#trip_button').get(0)); // POSTでアップロード $.ajax({ url : "get_trip.php", type : "POST", data : formdata, cache : false, contentType : false, processData : false, dataType : "html" }) .done(function(data, textStatus, jqXHR){ alert(data); }) .fail(function(jqXHR, textStatus, errorThrown){ alert("fail"); });
zuka3

2020/07/13 13:36

↓このように書いたのですが、コメント、画像共にPOSTされません。 アドバイス頂けないでしょうか?? $(".trip_button").on("click", function(event){ function file_upload(){ // フォームデータを取得 var formdata = new FormData($('#trip_data').get(0)); // POSTでアップロード $.ajax({ url : "get_trip.php", type : "POST", data : { formdata, "id": $(".list:first").data("list"), "user_id": "<?php echo $_SESSION['user_id']; ?>", "comment": $(".comment").val() }, cache : false, contentType : false, processData : false, dataType : "json", success: console.log('send!'); }) .done(function(data, textStatus, jqXHR){ update(); $(".comment").val(""); }) .fail(function(jqXHR, textStatus, errorThrown){ fail_err_msg(XMLHttpRequest, textStatus, errorThrown); }); } });
guest

0

formに action属性 がないですね。

http://www.htmq.com/html5/form.shtml

投稿2020/07/10 16:20

satokei

総合スコア1217

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

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

zuka3

2020/07/10 16:26

formタグにaction属性は必須ですか? class 属性?を使って、ajaxの方でclassの名前がclickされた時の処理を書いています。ajax の処理の方で遷移させたいページにデータを送る処理を書いています。そっちの方もあってるかわからないですが...
satokei

2020/07/10 16:30

> ajaxの方でclassの名前がclickされた時の処理を書いています 質問からでは、そのようなことは分からないです。 質問の内容を見直してはいかがでしょうか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問