ここから本文です

phpで 最初のページで○か×を選択して次のページのテキストボックスには選択した...

uzo********さん

2019/3/1910:41:21

phpで

最初のページで○か×を選択して次のページのテキストボックスには選択した図形一方だけが入力可能にしたいです。

選んだマークをテキストボックスに入力して送信ボタンを押したタイミングで選択したマーク以外のものが入力されていると
エラーを出す仕様にしたいです。

閲覧数:
36
回答数:
1
お礼:
500枚

違反報告

ベストアンサーに選ばれた回答

プロフィール画像

カテゴリマスター

shi********さん

2019/3/1911:42:59

>最初のページで○か×を選択して

select要素を使いますか?それともinput要素で属性をradioかcheckboxかのどちらかを使いますか?

#php以前のhtmlの部分は先に決めていただかないと・・・


例えばinput要素(属性=radio)を使うとして

<form action="next.php" method="post">
<input type="radio" name="sel" value="maru" checked>〇<br>
<input type="radio" name="sel" value="batsu">×<br>
<input type="submit">
</form>

のようなフォームからPOSTされたと仮定するなら

<?php
$arr = ['maru'=>'〇', 'batsu'=>'×'];
$sel = filter_input(INPUT_POST, 'sel');
$val = isset($sel)&&isset($arr[$sel]) ? $arr[$sel] : "";
?>
<form action="last.php" method="post">
<input type="hidden" name="sel" value="<?= $val; ?>"><?= $val; ?>
<input type="submit">
</form>

とか

<?php
$arr = ['maru'=>'〇', 'batsu'=>'×'];
$sel = filter_input(INPUT_POST, 'sel');
?>
<form action="last.php" method="post">
<input type="text" name="sel" value="<?= isset($sel)&&isset($arr[$sel]) ? $arr[$sel] : ""; ?>" readonly>
<input type="submit">
</form>

のように「編集不可」にして次に渡すべきだと思います。

質問に書かれているフローに従ってどうしても表示後に入力させたいなら(そして「送信ボタンを押したタイミングで」チェックしたいなら)その部分はJavaScriptでチェックすることになると思います。

<?php
$arr = ['maru'=>'〇', 'batsu'=>'×'];
$sel = filter_input(INPUT_POST, 'sel');
$val = isset($sel)&&isset($arr[$sel]) ? $arr[$sel] : "";
?>
<form action="last.php" method="post" onsubmit="return check()">
<input type="text" name="sel" id="selvalue" value="<?= $val ?>">
<input type="submit">
</form>

<script>
function check() {
var val = document.getElementById('selvalue').value;
if (val === '<?= $val; ?>') { return true; }
alert('input abort');
return false;
}
</script>

#編集したらエラーになるとわかっているのに編集可能に
#する意味はないと思いますけどね(汗

  • 質問者

    uzo********さん

    2019/3/1911:54:36

    三目並べを作っています
    最初のページでユーザーはセレクトボックスで○か×を選択します。
    2ページ目にテキストボックスが9個あります
    このテキストボックスにマークを入れて送信ボタンを押すと入力されたマークがユーザーが選択したものかチェックして問題なければ
    コンピュータが
    埋まっていないテキストボックスにユーザーが選択しなかった方のマークを入れるという感じのものが作りたいのです。

  • その他の返信を表示

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

この回答は投票によってベストアンサーに選ばれました!

あわせて知りたい

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる