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

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

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

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

1回答

1577閲覧

php bootstrapのモーダルでformでデータを送信できない

cochumo

総合スコア6

PHP

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2019/01/20 16:49

編集2019/01/20 23:51

いつもお世話になっております。formにてデータを送信できず、困っています。皆様のお知恵を拝借したく存じます。
初学者なもので、ご迷惑をお掛けするかも知れませんがよろしくお願い致します。

前提・実現したいこと

php,bootstrapを使ってインスタ風のサービスを作っています。
投稿の一覧表示内で論理削除ボタンを設置し、モーダルにて確認し、
formにてpost_idを送って、そのidを元にDBにアクセスし論理削除を行いたい。

・他のページでは、bootstrapのformは使えている。
・var_dumpしてどの時点でデータが送れていないのか、確認してformデータが送信できていないと判明している。
var_dump($_POST['is_deleted']); -> NULL

又、このようなことしなくてもこうやればできるよ!なども教えて頂ければ幸いです。

編集・追記依頼の部分の画像になります
イメージ説明

該当のソースコード html bootstrap(modal)

html

1<!-- モーダル ここから --> 2 3 <div class="flexbox modal_bt"> 4 <button type="button" class="btn btn-primary btn-sm control" data-toggle="modal" data-target="#myModal-data3"> 5 <i class="far fa-trash-alt fa-lg"></i> 6 </button> 7 </div> 8 9 <div class="modal fade" id="myModal-data3" tabindex="-1" role="dialog"> 10 <div class="modal-dialog" role="document"> 11 <div class="modal-content"> 12 <div class="modal-header"> 13 <h4 class="modal-title">投稿の削除</h4> 14 <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button> 15 </div> 16 <div class="modal-body"> 17 <form method="post" action=""> 18 <div class="form-group"> 19 <h5>本当に削除しますか?</h5> 20 <p>論理削除なので投稿自体は削除されません</p> 21 </div> 22 <div class="modal-footer"> 23 <!-- DBの論理削除カラムを1に変更する --> 24 <input type="hidden" id="is_deleted" name="is_deleted" value="<?php echo $post['id']; ?>"> 25 <input type="submit" class="btn btn-primary" value="削除"> 26 </div> 27 </form> 28 </div> 29 </div> 30 </div> 31 </div> 32 33<!-- モーダル ここまで -->

該当のソースコード php

php

1<?php 2 var_dump($_POST['is_deleted']); 3 // 論理削除 4 if (!empty($_POST['is_deleted'])) { 5 var_dump('if文入ったよ'); 6 $postIsDeleted = $db->prepare('UPDATE posts SET is_deleted=1 WHERE post_id=?'); 7 $postIsDeleted->execute($_POST['is_deleted']); 8 9 header('Location: index.php'); exit(); 10 } 11?>

試したこと

同じような問題が記事になっていないか検索したところ
・モーダルを覆うように<form>を書く
→特に変わらない
・type="submit"をモーダルの外側に書く
→モーダル内に送信ボタンを入れたいので却下(試していない)
・idやnameをユーモアな名前に変更
→最初はid,name共にdeleteでしたがis_deletedに変更 →特に変わらない

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

AWS EC2

PHP 7.0.33 (cli) (built: Jan 9 2019 22:04:26) ( NTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2017 Zend Technologies

bootstrap 4.1.3

必要な情報が足りないようでしたら、言って頂ければ追記致します。

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

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

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

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

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

m.ts10806

2019/01/20 16:55

$postになってますが、これは?
cochumo

2019/01/20 23:03

投稿ありがとうございます。 すみません、どこのことでしょうか?
m.ts10806

2019/01/20 23:19

<?php echo $post['id']; ?>
cochumo

2019/01/20 23:49

ここではvalueに$post['id']を入れて削除したい際に、この$post['id']の値を使ってSQLの ('UPDATE posts SET is_deleted=1 WHERE post_id=?')の?の部分に入れているので問題ありませんでした。値も取れていることを確認しています。 しかし、formが送れているところではこのような処理をしていないので怪しいかも知れませんね。調べてみます!
m.ts10806

2019/01/21 00:03

この書き方では$_POSTを間違えて書いたという印象しか受けませんでした。$postがどこからどう来ているか質問者さんにしかわからないので。 間違えて書いたならemptyなので送信されてないのもうなずけます。
cerfweb

2019/02/01 10:17

ひょっとして<form>が<form>の入れ子になっていたりはしていませんか?
guest

回答1

0

自己解決

非常に初歩的なことでした。

$postIsDeleted->execute($_POST['is_deleted']);

ではなく

$postIsDeleted->execute(array($_POST['is_deleted']));

でした。
executeする変数が1つだったためarrayがいらないと思っていました。
リファレンスの確認不足でした。
お騒がせしました。
PDOStatement::execute
https://www.php.net/manual/ja/pdostatement.execute.php

投稿2019/04/11 13:58

cochumo

総合スコア6

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問