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

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

ただいまの
回答率

90.33%

  • PHP

    21413questions

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

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

解決済

回答 2

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 288

uep3vjz9wp

score 13

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

以下の箇所です。

$reibeppyou = array("1番","2番","3番","4番","5番");

foreach ($reibeppyou as $name => $value){
if(isset($beppyou)){
echo "selected";
}else{
echo "<option value={$value}>{$value}</option>";
    }
}

下がコード全文

<?php

session_start();

$errors = array();

if (isset($_POST['submit'])) {

$beppyou = $_POST['beppyou'];
$shokuinbangou1 = $_POST['shokuinbangou1'];



if ($shokuinbangou1 === "") {
$errors['shokuinbangou1'] = "職員番号が入力されていません。";
}



if(count($errors) === 0) {
$_SESSION['beppyou'] = $beppyou;
$_SESSION['shokuinbangou1'] = $shokuinbangou1;


    header('Location: kensaform2.php'); 
    exit();
  }
}

if(isset($_GET['action']) && $_GET['action'] === 'edit'){
$beppyou = $_SESSION['beppyou'];
$shokuinbangou1 = $_SESSION['shokuinbangou1'];
}

?>



<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>入力フォーム</title>
</head>
<body>
<h1>新規登録フォーム</h1>

<?php
echo "<ul>";
foreach($errors as $value){
 echo "<li>";
 echo $value;
 echo "</li>";
}
echo "</ul>";
?>

<form action="kensaform1.php" method="post"> 

<h3>
<table>
<tr>
<th>別表</th><td>
<form>
<select name="beppyou">

<?php
$reibeppyou = array("1番","2番","3番","4番","5番");

foreach ($reibeppyou as $name => $value){
if(isset($beppyou)){
echo "$beppyou";
}else{
echo "<option value={$value}>{$value}</option>";
    }
}

?>

</tr>
</select>
</td>
</form>

<tr>
 <th>職員番号入力</th><td><input type="number" min="1" max="1000"  name="shokuinbangou1" value="<?php if(isset($shokuinbangou1)){echo $shokuinbangou1;} ?>"></td>
</tr>
</h3>
<tr>
     <td colspan="2"><input type="submit" name="submit" value="確認画面へ"></td>
</tr>
</table>
</form>
</body>
</html>
  • 気になる質問をクリップする

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

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

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

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

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

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

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

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

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • uep3vjz9wp

    2018/07/22 23:21

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

    キャンセル

  • Kosuke_Shibuya

    2018/07/22 23:24 編集

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

    キャンセル

  • uep3vjz9wp

    2018/07/22 23:33

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

    キャンセル

回答 2

+1

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

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


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

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

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

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

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/07/22 23:05

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

    キャンセル

  • 2018/07/22 23:09

    インデントもおかしいままですし、
    リンク見てませんよね。>optionにselected属性

    ほとんど進んでません。
    適当に感覚で対応しないでください。

    キャンセル

  • 2018/07/22 23:10 編集

    ここも読んでませんよね。

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

    読んでたら出力したhtmlがおかしいことに気づけるはず。
    気づけてないならhtmlの基礎からやり直したほうがいいです。
    きちんとhtmlを組めないとPHPから意図したhtmlを出力することはできません。

    キャンセル

  • 2018/07/22 23:16

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

    キャンセル

  • 2018/07/22 23:31

    <option selected></option>
    ↑これではどのoptionを選んだか解釈できませんよね。
    読んだ上で自身の感覚でやっているだけです。

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

    先にべた書きでHTMLを組んでください。
    全部固定値でいいです。selectはそのうちの1つを選んだ前提で良いです。
    PHP書く前にゴールとなるHTMLを組んでください。
    (2回目)きちんとhtmlを組めないとPHPから意図したhtmlを出力することはできません。

    キャンセル

  • 2018/07/22 23:33 編集

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

    キャンセル

checkベストアンサー

0

 サンプル

<?php
/**
 * index.php
 */
ini_set('display_errors', true);
error_reporting(E_ALL);

session_start();

$reibeppyou = array("1番", "2番", "3番", "4番", "5番");
?><!DOCTYPE HTML>
<html lang="ja">
    <head>
        <meta charset="UTF-8">
        <title>入力画面</title>
    </head>
    <body>
        <form method="post" action="confirm.php">
            <p>
                <label for="beppyou">別表:</label>
                <select name="beppyou" id="beppyou">
                    <?php foreach ($reibeppyou as $value) : ?>
                        <?php if ($value == $_SESSION['beppyou']) : ?>
                            <option selected value="<?php echo $value; ?>"><?php echo $value; ?></option>
                        <?php else: ?>
                            <option value="<?php echo $value; ?>"><?php echo $value; ?></option>
                        <?php endif; ?>
                    <?php endforeach; ?>
                </select>
            </p>
            <p>
                <label>職員番号:
                    <input name="staff_number" type="text" value="<?php echo $_SESSION['staff_number']; ?>" />
                </label>
            </p>
            <p>
                <button>確認画面へ</button>
            </p>
        </form>
    </body>
</html>
<?php
/**
 * confirm.php
 */
ini_set('display_errors', true);
error_reporting(E_ALL);
session_start();

if (filter_input(INPUT_SERVER, 'REQUEST_METHOD') == 'POST') {
    $_SESSION = $_POST;
}
?><!DOCTYPE HTML>
<html lang="ja">
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
        <p><?php echo filter_input(INPUT_POST, 'beppyou'); ?></p>
        <p><?php echo filter_input(INPUT_POST, 'staff_number'); ?></p>
        <a href="index.php">修正</a>
    </body>
</html>

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/07/24 09:07

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

    キャンセル

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

  • PHP

    21413questions

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