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

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

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

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PHP

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

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

Q&A

解決済

3回答

466閲覧

完了ボタンと戻るボタン(PHPとMySQL)

nkn_021314

総合スコア17

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PHP

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

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

0グッド

0クリップ

投稿2019/02/11 15:50

編集2019/02/13 05:18

「名前」「学籍番号」「年齢」「備考欄」の四つを入力フォーム→確認画面→完了画面となるようなデータフォームをつくっています。

確認画面で、未入力や記号などのエラーがあれば「戻るボタン」を不備がなければ「完了ボタン」が表示されるようにしたいのですが、どちらの場合も戻るボタンしか表示されません。

エラーが生じるのであれば探しどころがわかるのですが、エラーも生じないためどの部分に不備があるか分かりません。
また戻るボタンを押した際に前の画面に入力情報を保持したいのですが、反映していないようなので、その部分についてもなにかミスがあればご指摘いただけると嬉しいです。

初歩的な細かいミスかもしれませんが、よろしくお願いします。

PHP

1 2<?php 3 4session_start(); 5$age= htmlentities($_POST[age], ENT_QUOTES, "UTF-8"); 6$name= htmlentities($_POST[name], ENT_QUOTES, "UTF-8"); 7$number= htmlentities($_POST[number], ENT_QUOTES, "UTF-8"); 8echo str_replace('&lt;br&gt;', '<br>', htmlspecialchars( $_POST ,ENT_QUOTES) ); 9 10 11$_SESSION["age"]=$age; 12$_SESSION["name"]=$name; 13$_SESSION["number"]=$number; 14 15$postData = $_POST; 16$error = array(); 17 18 function formValidation($postData) { 19 if(empty($postData['age'])) { 20 $error[] = "年齢を入力してください"; 21 } else if(!preg_match('/^[0-9]+$/',$postData['age'])) { 22 $error[] = "年齢を正しく入力してください"; 23 } 24 25 26 if (empty($postData['name'])) { 27 $error[] = "お名前を入力してください"; 28 } else if (!preg_match('/^[ぁ-んァ-ヶー一-龠  \r\n\t]+$/', $postData['name'])) { 29 $error[] = "お名前は全角文字で入力してください"; 30 } 31 32 if(empty($postData['number'])) { 33 $error[] = "学籍番号を入力してください"; 34 } else if(!preg_match('/^[a-zA-Z0-9]+$/',$postData['number'])) { 35 $error[] = "学籍番号を正しく入力してください"; 36 } 37 return $error; 38 } 39 $error = formValidation($postData); 40 if(empty($postData['input-submit-check']) || !empty($error)) { 41 $page_flag = 1; 42 } else { 43 $page_flag = 0; 44 } 45 46?> 47 48 49 50 51//以下略

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

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

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

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

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

date

2019/02/12 09:10

入力フォームはどのようになっているでしょうか? また戻るボタンを押した際に前の画面に入力情報を保持したいのですが  こっちは入力フォームを見ないと原因がわかりません
nkn_021314

2019/02/13 05:19

回答ありがとうございます。 一応自己解決しましたので、解決方法を記入しました
guest

回答3

0

php

1//変数の初期化 2$page_flag = 1;

ここで毎回 1 が代入されています。


質問内容とは無関係だけど
htmlentities の使い所も間違ってますよ。

投稿2019/02/11 15:53

編集2019/02/11 15:55
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

nkn_021314

2019/02/11 16:03

ありがとうございます。修正して //変数の初期化 $page_flag = 1; を消去しましたが、やはり「戻るボタン」しか表示されません・・・。 この件が解決したら、htmlentitiesについて調べなおします。ご指摘ありがとうございます。
退会済みユーザー

退会済みユーザー

2019/02/11 16:05

消去するだけじゃダメですよ。 根本的なところから設計を見直す必要があります。 ちょこっといじれば動くかと言うとそうではありません。 自分なら、全部書き直すと思います。
nkn_021314

2019/02/11 19:14

割と変更してみましたが全部だめでした。 一応、質問に記入しているプログラムは変更した中で一番合ってそうなものに変更しました。 合っていると思って修正しようとするからだめなんですかね・・・。 しかし、どこが間違ってるかわからないので意識ができないですね・・・。
guest

0

自己解決

PHP

1 2if(empty($postData['input-submit-check']) || !empty($error)) { 3 $page_flag = 1; 4 } else { 5 $page_flag = 0; 6 } 7

ここの部分が

PHP

1 if(empty($postData['age']) || empty($postData['name']) ||empty($postData['number']) || !empty($error)) { 2 $page_flag = 1; 3 } else { 4 $page_flag = 0; 5 }

こうでした

投稿2019/02/13 05:13

編集2019/02/13 05:19
nkn_021314

総合スコア17

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

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

0

ちょっと考え方が違う気がします

入力フォーム→確認画面→完了画面

入力フォーム→確認画面→登録ページ→完了画面

ですね。
そして確認画面で未入力がある場合は自動で入力フォームに戻ればよいでしょう。
すでにすべてのデータがセッションに格納されている状態なので
確認画面には入力欄は不要です。
あと登録ページに飛ぶかだけのボタンがあれば良いでしょう。
登録画面では簡単なバリデートしつつ特に問題なければ登録して
完了画面に飛ばします。

投稿2019/02/12 00:52

yambejp

総合スコア114769

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

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

nkn_021314

2019/02/12 05:27

すいません。課題で、入力フォーム→確認画面→登録ページ→完了画面の順で作れといわれているのでそこはどうしようもないです。。。
yambejp

2019/02/12 05:35

> 入力フォーム→確認画面→登録ページ→完了画面の順で作れ いや、だからそう指摘したんですが・・・
nkn_021314

2019/02/12 08:38

すいません、 入力フォーム→確認画面→完了画面の順で作れ の間違いです
yambejp

2019/02/12 09:59

確認画面→完了画面ということは完了=登録画面ということでしょうか? 二重投稿とかセッションの解除とか制御が煩雑になりますが大丈夫ですか?
nkn_021314

2019/02/13 05:15

一応解決はしました。 課題なので・・・。 自分でフォームを作る時はおっしゃる方法で作ろうと思います。 ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問