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

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

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

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

HTML

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

Q&A

解決済

1回答

903閲覧

htmlのformのsubmitが効かない

jacky-tom

総合スコア4

PHP

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

HTML

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

0グッド

0クリップ

投稿2023/06/07 06:24

編集2023/06/07 06:31

htmlのsubmitを効くようにしたいです。

PHPでサイトの管理者向けのユーザー管理システムを開発しています。

発生している問題・エラーメッセージ

ユーザーの修正画面を作成したところ、「確認」ボタンをクリックしても無反応です。

エラーメッセージ

Audit usage of navigator.userAgent, navigator.appVersion, and navigator.platform
とデバッグツールには出ていますが、調査したところ、上記は、
「Web サイトがユーザーの指紋を採取するためにこれらの情報を使用するため、Chrome がユーザー プラットフォームと Chrome バージョンに関する詳細情報をあまり提供しないことを意味するだけです。」
との事で今回の現象とは無関係かと思っています。

該当のソースコード

php

1<!doctype html> 2<html lang=ja> 3 <head> 4 <meta charset="utf-8"> 5 <title>ユーザーメンテナンス(修正)</title> 6 <meta name="description" content="ユーザーの修正画面"> 7 <!--リセットcss--> 8 <link rel="stylesheet" href="https://unpkg.com/ress/dist/ress.min.css"> 9 <!--css--> 10 <link href="css/ad_style.css" rel="stylesheet"> 11 <!--レスポンシブ対応--> 12 <meta name="viwport" content="width=device-width, initial-scale=1"> 13 <!--Googleフォント--> 14 <link href="https://fonts.googleapis.com/css2?family=Sawarabi+Gothic&display=swap" rel="stylesheet"> 15 <link href="https://fonts.googleapis.com/css2?family=Shippori+Mincho:wght@500&display=swap" rel="stylesheet"> 16 </head> 17 <body> 18 <h1>ユーザーメンテナンス(修正)</h1> 19 <form> 20 <?php 21 $pdo = new PDO('mysql:host=localhost;dbname=salon;charset=utf8','salon', 'salon_pass'); 22 $stmt=$pdo->prepare('select * from user_table where id=?'); 23 $stmt->execute([$_REQUEST['id']]); 24 foreach($stmt->fetchAll() as $row) { 25 echo '<form action="user_update_conf.php" method="post">'; 26 echo '<div>'; 27 echo '<label for="id">ID:</label>'; 28 echo '<input type="text" name="id" value="', $row['id'], '"readonly id="id">'; 29 echo '</div>'; 30 echo '<div>'; 31 echo '<label for="sei">姓:</label>'; 32 echo '<input type="text" name="sei" value="',$row['last_name'], '" id = "sei">'; 33 echo '</div>'; 34 echo '<div>'; 35 echo '<label for="mei">名:</label>'; 36 echo '<input type="text" name="mei" value="', $row['first_name'], '" id = "mei">'; 37 echo '</div>'; 38 echo '<div>'; 39 echo '<label for="sei_kana">姓(カナ)</label>'; 40 echo '<input type="text" name="sei_kana" value="', $row['last_name_kana'], '" id="sei_kana">'; 41 echo '</div>'; 42 echo '<div>'; 43 echo '<label for="mei_kana">名(カナ)</label>'; 44 echo '<input type="text" name="mei_kana" value="', $row['first_name_kana'], '" id="mei_kana">'; 45 echo '</div>'; 46 echo '<div>'; 47 echo '<label for="user">ユーザー</label>'; 48 echo '<input type="text" name="user" value="', $row['user'], '" id="user">'; 49 echo '</div>'; 50 echo '<div>'; 51 echo '<label for="password">パスワード</label>'; 52 echo '<input type="password" name="password" value="', $row['password'], '" id="password">'; 53 echo '</div>'; 54 echo '<div>'; 55 echo '<label for="password2">パスワード(確認用)</label>'; 56 echo '<input type="password" name="password2" value="', $row['password'], '" id="password2">'; 57 echo '</div>'; 58 } 59 ?> 60 <div class = "button_layout"> 61 <a href="user_table.php" class="button_c">戻る</a> 62 <input type="submit" class="button_b" name="btnsubmit" id="btnsubmit" value="確認"> 63 </div> 64 </form> 65 </body> 66</html> 67

最初は、label forの後に=が無かったので、追記しました。
でも現象は同じです。

よろしくお願いいたします。

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

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

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

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

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

m.ts10806

2023/06/07 06:29

コードがマークダウンのcode ( ``` の囲い )に入っていませんので、入れてください。 現状だとコードコピペも結構手間で、読みにくくなっています。 https://teratail.com/help/question-tips#questionTips37 あと、タイトルがsbumitになってしまっているのと、厳密には「formのsubmit」になるはずなので、 要件と状況にあわせて修正願います。
jacky-tom

2023/06/07 06:32

ご指摘ありがとうございます。 修正しました。
guest

回答1

0

ベストアンサー

マークダウンになっていないので階層等ちゃんと把握できていませんが、
formの入れ子はできません。

https://developer.mozilla.org/ja/docs/Web/HTML/Element/form
許可されている内容 フローコンテンツ。ただし、 <form> 要素を内包することは許可されていません

(以下、ブラウザ内テキスト検索のハイライト)
※マークダウン修正前のほうがハイライト見やすい位置になっているのでそのままにしています


イメージ説明


構造だけ見るとこうなってます

<form> <form action="user_update_conf.php" method="post"> </form>

foreachも見受けられますし、「どの情報をどこに対してSUBMITしたいのか」を整理するところから
実装調整してください。

現状ではforeachの中にactionが明記されたformがありますが、
formの閉じがforeachの外にあります。

投稿2023/06/07 06:34

編集2023/06/07 06:44
m.ts10806

総合スコア80861

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

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

jacky-tom

2023/06/07 06:52

解決しました。 最初の<form>は不要でした。初歩的なミスで大変失礼いたしました。 XSSの件もご指摘ありがとうございます。 リンク先を確認して対応します。
m.ts10806

2023/06/07 06:54

解決されたようで何よりです。 少々もう1件補足しますと、あくまで練習用?かもしれませんが、エラーハンドリング(try-catch)も覚えておいた方が良いと思います。 (現状ではDBアクセスや実行時に何が問題があってもエラー詳細が得られる実装になっていない)
jacky-tom

2023/06/07 07:47

ご指摘ありがとうございます。 承知いたしました。 try-catchも対応します。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問