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

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

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

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

Q&A

解決済

2回答

3908閲覧

配列をドロップダウンリストとし、選択したものを選択された状態にしたい。

uep3vjz9wp

総合スコア20

PHP

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

0グッド

0クリップ

投稿2018/07/22 12:31

編集2018/07/22 14:32

お世話になっております。
68~76行目について。
$reibeppyou = array("1番","2番","3番","4番","5番");で5つの選択肢を用意しドロップダウンリストから選択させます。その後「確認画面へ」をクリックした後、選択肢が選択された状態にしたいとおもっていますが、選択されない状態です。
他の箇所については問題ありません。
選択が継続されるようご教示お願いいたします。
例:3番を選択し、職員番号空欄のまま「確認画面へ」をクリックすると「職員番号が入力されていません。」と出ると同時に3番の選択が継続しているようにしたい。

以下の箇所です。

php

1$reibeppyou = array("1番","2番","3番","4番","5番"); 2 3foreach ($reibeppyou as $name => $value){ 4if(isset($beppyou)){ 5echo "selected"; 6}else{ 7echo "<option value={$value}>{$value}</option>"; 8 } 9}

下がコード全文

php

1<?php 2 3session_start(); 4 5$errors = array(); 6 7if (isset($_POST['submit'])) { 8 9$beppyou = $_POST['beppyou']; 10$shokuinbangou1 = $_POST['shokuinbangou1']; 11 12 13 14if ($shokuinbangou1 === "") { 15$errors['shokuinbangou1'] = "職員番号が入力されていません。"; 16} 17 18 19 20if(count($errors) === 0) { 21$_SESSION['beppyou'] = $beppyou; 22$_SESSION['shokuinbangou1'] = $shokuinbangou1; 23 24 25 header('Location: kensaform2.php'); 26 exit(); 27 } 28} 29 30if(isset($_GET['action']) && $_GET['action'] === 'edit'){ 31$beppyou = $_SESSION['beppyou']; 32$shokuinbangou1 = $_SESSION['shokuinbangou1']; 33} 34 35?> 36 37 38 39<!doctype html> 40<html> 41<head> 42<meta charset="utf-8"> 43<title>入力フォーム</title> 44</head> 45<body> 46<h1>新規登録フォーム</h1> 47 48<?php 49echo "<ul>"; 50foreach($errors as $value){ 51 echo "<li>"; 52 echo $value; 53 echo "</li>"; 54} 55echo "</ul>"; 56?> 57 58<form action="kensaform1.php" method="post"> 59 60<h3> 61<table> 62<tr> 63<th>別表</th><td> 64<form> 65<select name="beppyou"> 66 67<?php 68$reibeppyou = array("1番","2番","3番","4番","5番"); 69 70foreach ($reibeppyou as $name => $value){ 71if(isset($beppyou)){ 72echo "$beppyou"; 73}else{ 74echo "<option value={$value}>{$value}</option>"; 75 } 76} 77 78?> 79 80</tr> 81</select> 82</td> 83</form> 84 85<tr> 86 <th>職員番号入力</th><td><input type="number" min="1" max="1000" name="shokuinbangou1" value="<?php if(isset($shokuinbangou1)){echo $shokuinbangou1;} ?>"></td> 87</tr> 88</h3> 89<tr> 90 <td colspan="2"><input type="submit" name="submit" value="確認画面へ"></td> 91</tr> 92</table> 93</form> 94</body> 95</html>

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2018/07/22 13:17

「他の箇所については問題ありません。」と書かれていますが、HTMLの構造が破綻しています。可能なら修正してください。
uep3vjz9wp

2018/07/22 13:50

コード修正を行いました。サーバーにアップして動作確認実施いたしました。よろしくお願いいたします。
退会済みユーザー

退会済みユーザー

2018/07/22 13:54

form 要素は入れ子にできません。
uep3vjz9wp

2018/07/22 14:21

すみません。つまりやりたい事が実現できないと言うことでしょうか。
退会済みユーザー

退会済みユーザー

2018/07/22 14:26 編集

そういうことではありませんが、PHP以前の問題で、質問に関する問題以外を先に解消してほしいだけ。 trの閉じ忘れもある。
uep3vjz9wp

2018/07/22 14:33

trお恥ずかしい限りです。すみません。
guest

回答2

0

↓は本当にやろうとしていることが実現されている記述でしょうか。

php

1 $beppyou == htmlspecialchars($beppyou, ENT_QUOTES); 2 $shokuinbangou1 == htmlspecialchars($shokuinbangou1, ENT_QUOTES);

そこだけではありません。

PHPコード内に全角が含まれているように見受けられます。
提示されたコードそのままではPHPエラーで動かないコードです。

「selectを選択状態にしたい」のでしたらoptionにselected属性をつけなければなりません。

インデントもかなりおかしくなっているので、PHP,HTML共にきちんと整理してください。それで見えることもあるはずです。

ブラウザで画面を表示したときに「ソースを表示」で出来上がったHTMLが取得できます。
そのHTMLが意図通りに生成されているか確認してください。
HTML構文的におかしくないかも確認してください。

投稿2018/07/22 13:49

m.ts10806

総合スコア80850

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

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

uep3vjz9wp

2018/07/22 14:05

コード修正を行いました。サーバーにアップして動作確認実施いたしました。よろしくお願いいたします。
m.ts10806

2018/07/22 14:09

インデントもおかしいままですし、 リンク見てませんよね。>optionにselected属性 ほとんど進んでません。 適当に感覚で対応しないでください。
m.ts10806

2018/07/22 14:11 編集

ここも読んでませんよね。 ----------------------------------------- ブラウザで画面を表示したときに「ソースを表示」で出来上がったHTMLが取得できます。 そのHTMLが意図通りに生成されているか確認してください。 HTML構文的におかしくないかも確認してください。 ----------------------------------------- 読んでたら出力したhtmlがおかしいことに気づけるはず。 気づけてないならhtmlの基礎からやり直したほうがいいです。 きちんとhtmlを組めないとPHPから意図したhtmlを出力することはできません。
uep3vjz9wp

2018/07/22 14:16

リンク見たのですが、「読み込み時に、予め選択状態にしておく」のでなく、例えば3番を選択し、職員番号空欄のまま「確認画面へ」をクリックすると「職員番号が入力されていません。」と出ると同時に3番の選択が継続しているようにしたいのと違うようです。 実際、<option selected></option>では選択が継続しておりません。説明不足ですみません。
m.ts10806

2018/07/22 14:31

<option selected></option> ↑これではどのoptionを選んだか解釈できませんよね。 読んだ上で自身の感覚でやっているだけです。 (3回目) ----------------------------------------- ブラウザで画面を表示したときに「ソースを表示」で出来上がったHTMLが取得できます。 そのHTMLが意図通りに生成されているか確認してください。 HTML構文的におかしくないかも確認してください。 ----------------------------------------- 先にべた書きでHTMLを組んでください。 全部固定値でいいです。selectはそのうちの1つを選んだ前提で良いです。 PHP書く前にゴールとなるHTMLを組んでください。 (2回目)きちんとhtmlを組めないとPHPから意図したhtmlを出力することはできません。
m.ts10806

2018/07/22 14:34 編集

今の理解度と技術力でちょこちょこ対応していても一向にゴールには向かいませんよ。 最初(ゴールとなるモックHTML)から作り直したほうが早く確実です。
guest

0

ベストアンサー

サンプル

php

1<?php 2/** 3 * index.php 4 */ 5ini_set('display_errors', true); 6error_reporting(E_ALL); 7 8session_start(); 9 10$reibeppyou = array("1番", "2番", "3番", "4番", "5番"); 11?><!DOCTYPE HTML> 12<html lang="ja"> 13 <head> 14 <meta charset="UTF-8"> 15 <title>入力画面</title> 16 </head> 17 <body> 18 <form method="post" action="confirm.php"> 19 <p> 20 <label for="beppyou">別表:</label> 21 <select name="beppyou" id="beppyou"> 22 <?php foreach ($reibeppyou as $value) : ?> 23 <?php if ($value == $_SESSION['beppyou']) : ?> 24 <option selected value="<?php echo $value; ?>"><?php echo $value; ?></option> 25 <?php else: ?> 26 <option value="<?php echo $value; ?>"><?php echo $value; ?></option> 27 <?php endif; ?> 28 <?php endforeach; ?> 29 </select> 30 </p> 31 <p> 32 <label>職員番号: 33 <input name="staff_number" type="text" value="<?php echo $_SESSION['staff_number']; ?>" /> 34 </label> 35 </p> 36 <p> 37 <button>確認画面へ</button> 38 </p> 39 </form> 40 </body> 41</html>

php

1<?php 2/** 3 * confirm.php 4 */ 5ini_set('display_errors', true); 6error_reporting(E_ALL); 7session_start(); 8 9if (filter_input(INPUT_SERVER, 'REQUEST_METHOD') == 'POST') { 10 $_SESSION = $_POST; 11} 12?><!DOCTYPE HTML> 13<html lang="ja"> 14 <head> 15 <meta charset="UTF-8"> 16 <title></title> 17 </head> 18 <body> 19 <p><?php echo filter_input(INPUT_POST, 'beppyou'); ?></p> 20 <p><?php echo filter_input(INPUT_POST, 'staff_number'); ?></p> 21 <a href="index.php">修正</a> 22 </body> 23</html>

投稿2018/07/22 14:48

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

uep3vjz9wp

2018/07/24 00:07

返信おそくなりまして大変失礼いたしました。参考にさせていただき無事解決いたしました。本当に頭がさがります。ありがとうございました。勉強になりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問