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

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

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

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

JavaScript

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

HTML

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

解決済

入力フォームをjavascriptでエラー表示の設定したらPHPが発動しなくなりました。

ghtew2
ghtew2

総合スコア172

PHP

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

JavaScript

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

HTML

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

2回答

0評価

1クリップ

491閲覧

投稿2021/11/30 07:39

編集2021/12/01 01:17

入力フォームのエラーメッセージを発するコードを書いているのですが、PHPよりもエラーメッセージが目立ちやすいので、javascriptでエラーメッセージが出るようにコードを書いたのですが、
そうすると、入力フォームに対するPHPの全ての効果が発動されなくなります。

入力フォームに入力して、次の確認画面から、戻るときに入力した情報の保持など提示コードのスタイルシートに書いてあるPHPの効果がすべて発動しません。

これを全てPHPも発動するようにしたいのですが、調べても方法が分からずに止まったままです。
javascriptでエラーメッセージは最初の送信ボタンを押すときに発動するのみで良いと考えています。
どうしたらよいでしょうか?回答よろしくお願いいたします。

入力フォーム→確認表示画面→送信完了画面の3つで構成されています。
入力フォームの最初の画面のコード(companyhp6form1.php)

php

<?php session_start(); $errors = array(); if(isset($_POST['submit'])) { $name = $_POST['name']; $furigana = $_POST['furigana']; if($name === "") { $errors['name'] ="名前が入力されていません。 "; } if($furigana === "") { $errors['furigana'] ="フリガナが入力されていません。 "; } $name = htmlspecialchars($name, ENT_QUOTES); $furigana = htmlspecialchars($furigana, ENT_QUOTES); if(count($errors) === 0) { $_SESSION['name'] = $name; $_SESSION['furigana'] = $furigana; /* 確認画面の表示, */ header('Location:http:▼▼'); exit(); } } if(isset($_GET['action']) && $_GET['action'] === 'edit'){ $name = $_SESSION['name']; $furigana = $_SESSION['furigana']; } ?> <!DOCTYPE html> <html lang="ja"> <head> <meta content="text/html; charset=utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>企業ホームページ お問い合わせ画面</title> <link rel="stylesheet" href="companyhp6form1.css"> <link rel="stylesheet" href="reset.css"> <script src="jquery-3.6.0.min.js"></script> <style type="text/css"> /* 入力フォームの位置 */ .auto-style1 { text-align: center; } </style> <?php echo "<ul>";foreach($errors as $value) { echo "<li>"; echo $value; echo "</li>"; } echo "</ul>"; ?> </head> <body> <!--javaによるエラー表示のためid="form"を追加--> <form action="companyhp6form1.php" method="post" id="form"> <!--フォーム中央寄せのため1つ1つdivで囲むauto-style1--> <div class="auto-style1"> <p class="tel-titile"> 名前:※ </p> <input type="text" class="name" name="name" id="name" value="<?php if(isset($name)){ echo $name; } ?>" /> </div> <div class="auto-style1"> <p class="tel-titile"> フリガナ:※ </p> <input type="text" class="furigana" name="furigana" id="furigana" value="<?php if(isset($furigana)){ echo $furigana; } ?>" /> </div> <div class="auto-style1"> <button type="submit" id="submit" name="submit" class="auto-style4"> 送信</button> </div> </form> </body> <script src="main.js"></script> <script> const form = document.querySelector('#form'); /* <form action="companyhp6form1.php" method="post" id="form"> フォームエラーの表示のため id="form" */ const name = document.querySelector('#name'); const furigana = document.querySelector('#furigana'); form.addEventListener('submit', function(event) { let msg = ""; /* エラーメッセージが箇条書きに表示されるように改行\n"コードを記入 */ if (name.value == "") msg += "名前が入力されていません。\n"; if (furigana.value == "") msg += "フリガナが入力されていません。\n"; if (msg == "") return; event.preventDefault(); alert(msg); }); </script> <script src="jquery-3.6.0.min.js"></script> </html>

●●●入力確認表示画面のPHP(companyhp6form2.php)

php

<?php session_start(); if(isset($_SESSION['name'])){ $name = $_SESSION['name']; $furigana = $_SESSION['furigana']; $_SESSION['token'] = base64_encode(openssl_random_pseudo_bytes(48)); $token = htmlspecialchars($_SESSION['token'], ENT_QUOTES); ?> <!DOCTYPE html> <html> <head> <meta content="text/html; charset=utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>企業のホームページお問い合わせ入力確認画面</title> <link rel="stylesheet" href="companyhp6form2.css"> <link rel="stylesheet" href="reset.css"> /* 申し込みボタンの位置 */ .auto-style1 { text-align: center; } </style> </head> <body> <form action ="companyhp6form3.php" method ="post"> <input type ="hidden" name ="token" value ="<?php echo $token ?>"> <div class="title"> <label class="title" for="title">お申し込み内容の確認</label> </div> <div class="row"> <label class="col-sm-2 control-label" for="name">名前:<small><?php echo $name; ?></small></label> </div> <p></p> <p></p> <p></p> <div class="row"> <label class="col-sm-2 control-label" for="furigana">フリガナ:<small><?php echo $furigana; ?></small></label> </div> <div class="auto-style1"> <button type="submit" id="submit" name="submit" class="auto-style4"> 内容を確認して送信</button> </div> <div class="auto-style5"> <!--リンク文字中央配置のためのdiv--> <p><a href="companyhp6form1.php"> &#9664;お申し込み内容を変更する</a></p> </div><!--特殊記号三角&#9664;--> </form> </body> </html>

●●●PHPMailerを使った送信画面のコード(companyhp6form3.php)

php

<?php // PHPMailer クラスをネーム空間にインポート use PHPMailer\PHPMailer\PHPMailer; use PHPMailer\PHPMailer\SMTP; use PHPMailer\PHPMailer\Exception; require('PHPMailer/src/PHPMailer.php'); require('PHPMailer/src/Exception.php'); require('PHPMailer/src/SMTP.php'); // 入力内容の取得・変数に格納 session_start(); if(isset($_POST['token'], $_SESSION['token']) && ($_POST['token'] === $_SESSION['token'])){ unset($_SESSION['token']); $name = $_SESSION['name']; $furigana = $_SESSION['furigana']; } // メール日本語対応 mb_language("japanese"); mb_internal_encoding("UTF-8"); // インスタンス生成 $mail = new PHPMailer(true); // 文字エンコードを指定 $mail->CharSet = 'utf-8'; try { // デバッグ設定 // $mail->SMTPDebug = 2; // デバッグ出力を有効化(レベルを指定) // $mail->Debugoutput = function($str, $level) {echo "debug level $level; message: $str<br>";}; // SMTPサーバの設定 $mail->isSMTP(); // SMTPの使用宣言 $mail->Host = '●●.com'; // SMTPサーバーを指定 $mail->SMTPAuth = true; // SMTP authenticationを有効化 $mail->Username = '■■@email.com'; // SMTPサーバーのユーザ名 $mail->Password = '????'; // SMTPサーバーのパスワード $mail->SMTPSecure = 'ssl'; // 暗号化を有効(tls or ssl)無効の場合はfalse $mail->Port = 465; // TCPポートを指定(tlsの場合は465や587) // メール本体 $mail->setFrom('■■@email.com', 'sana'); // 送信元メールアドレスと名前 $mail->Body = "下記の情報を受け取りました。\n内容を確認し、こちらから折り返し、ライン又はメールアドレスにてご案内させて頂きます。\n\n"; $mail->Subject = mb_encode_mimeheader('会社'); $mail->Body .= "お名前:".$name."\n"; $mail->Body .= "フリガナ:".$furigana."\n"; // 送信 $mail->send(); echo '送信済み'; } catch (Exception $e) { echo "送信失敗: {$mail->ErrorInfo}"; } ?> <!DOCTYPE html> <html> <head> <meta content="text/html; charset=utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>企業のホームページ お問い合わせ 送信後の画面</title> <link rel="stylesheet" href="companyhp6form3.css"> <style type="text/css"> </style> </head> <body> </body> </html>

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

maisumakun

2021/11/30 07:42

> 提示コードのスタイルシートに書いてあるPHPの効果がすべて発動しません。 提示されたコードにスタイルシートは見当たらないのですが、何を指していますか?
ghtew2

2021/11/30 09:31

回答ありがとうございます。わかりにくくてすみません。この質問で提示しているPHPコードのことです。
ghtew2

2021/11/30 09:48

PHPの効果で入力フォームに入力したデータを、確認表示画面→送信という流れで、今まで行っていたのですが、この質問で提示したPHPがそうです。 ただ、最初の入力フォームの画面だけPHPとjavascriptで2重にしてエラー表示したかったので、javascriptのコードを追加しました。 javascriptのコードを追加するとPHPが動作しないのです。この質問で提示したPHPも全て発動させたいです。
ghtew2

2021/11/30 09:56

確認表示画面のPHPのコードも追加しました。
yambejp

2021/11/30 10:03

action="companyhp6form1.php" これは自分自身がcompanyhp6form1.phpということですか?
ghtew2

2021/11/30 10:16

回答ありがとうございます。今、提示コード3つにタイトルを追加しました。companyhp6form1.phpは、PHPファイルのタイトル名になります。 最初の入力フォーム画面(companyhp6form1.php) 入力確認画面の表示(companyhp6form2.php) 送信画面PHPMilarを使ったコード(companyhp6form3.php) です。
Lhankor_Mhy

2021/12/01 00:58

CSS は関係なさそうなので、質問タグの削除を願います。
ghtew2

2021/12/01 01:20

消去しました。すみません。
Lhankor_Mhy

2021/12/01 01:21

ご対応ありがとうございます。

まだ回答がついていません

会員登録して回答してみよう

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

PHP

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

JavaScript

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

HTML

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