teratail header banner
teratail header banner
質問するログイン新規登録
PHP

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

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

Q&A

解決済

2回答

581閲覧

formのsubmitで自身を指定し、PHPとjavascriptを実行させたいが、javascriptのみ実行されない

momo717

総合スコア2

PHP

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

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

0グッド

0クリップ

投稿2021/10/22 02:46

0

0

前提・実現したいこと

HTML+PHP+JacaScriptで、DBに情報を登録するフォームを作っています。
動作の流れは、

フォームに情報を入力し、submitに自身のファイルを指定して自身を呼び出す

$_POSTが空かどうか判断し、空でない場合のみDB登録を実行する

というものを想定しています。
DB登録の際、PHPとjavascriptを使用する必要があるのですが、javascriptが動作しません。

該当のソースコード

HTML

1<?php 2 if(!empty($_POST)){ 3 if($_POST['HNBN'] === ''){ 4 $error['HNBN'] = 'blank'; 5 } 6 7 if(empty($error)){ 8 ?> 9 <?php 10 include('../include/kihon_update.php'); //実行される 11 ?> 12 <script> 13 console.log("更新内容を保存しました"); //実行されない 14 </script> 15 //以下のPHPは実行される 16 <?php 17 $Location = 'Location: index.php?id='.$KAKOUHNBN; 18 header($Location); 19 exit(); 20 } 21 } 22?> 23 24<!--中略--> 25 26<form method="POST" action=""> 27 <!--フォーム--> 28</form>

実行順としては、
formがsubmitされる

自身が呼び出され、PHPのif(!empty($_POST))内が処理される

<script>タグ内が実行される という様に考えているのですが、実行順はこれで正しいですか? また、javascriptだけ実行されないのはなぜでしょうか?

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

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

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

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

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

guest

回答2

0

自己解決

実行されないjavascriptを、header()の前に書いていることが原因でした。

投稿2021/10/22 09:03

momo717

総合スコア2

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

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

0

PHPでscriptを書き出すのは微妙ですが一応動いているみたいですよ

PHP

1<?php 2if(!empty($_POST)){ 3 if($_POST['HNBN'] === ''){ 4 $error['HNBN'] = 'blank'; 5 } 6 if(empty($error)){ 7?> 8<script> 9 console.log("更新内容を保存しました"); 10</script> 11<?php 12 } 13} 14?> 15<form method="POST"> 16<input type="text" name="HNBN" value=""> 17<input type="submit" value="send"> 18</form>

なお、$_POST['HNBN']のような参照の仕方はおすすめできません
いったん以下のようにして参照してください

PHP

1$HNBN=filter_input(INPUT_POST,'HNBN'); 2

投稿2021/10/22 02:58

yambejp

総合スコア117944

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

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

momo717

2021/10/22 05:59

回答ありがとうございます。 確かに、その部分だけだと動作することは確認できました。実際のコードの別の部分を調べてみます。 また、 > PHPでscriptを書き出すのは微妙ですが > なお、$_POST['HNBN']のような参照の仕方はおすすめできません とのことですが、具体的になぜ微妙なのか、おすすめできないのか教えていただきたいです。
yambejp

2021/10/22 06:26

> 具体的になぜ微妙なのか サーバーサイドのプログラム(バック)で動的な部分(フロント)の制御をするのは 本質的に担当が違うからです。かりに同じ人間がやるにしても、なにかあったときの 問題の切り分けのために、分離したほうが賢明です サーバー処理はAPIでデータを返し、それをクライアントサイドでどう表現するかは フロント側に任せてしまうべきです。
momo717

2021/10/22 06:33

そういうことですね、わかりました。 ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.30%

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

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

質問する

関連した質問