※ ChatGPTを利用し、要約された質問です(原文:phpの入力値の渡し方)
phpの入力値の渡し方
このQ&Aのポイント
phpの入力値の渡し方について考えています。ループでテキストボックスやセレクトボックスを作成し、それぞれのコントロールに入力した値を別のphpファイルに渡したいです。
ループではなく一つずつテキストボックスを作成すれば、個々のname属性をpostすることができますが、ループの場合、それぞれの入力値をどのように渡せば良いのかわかりません。
上記の質問文章にあるコードを用いて、勤怠データの入力画面を作成しており、入力したデータをfoo.phpに渡したいと考えています。
ループでテキストボックス、セレクトボックスを作成しそれぞれのコントロールに入力した値を別phpファイルに渡すことを考えています。
ループではなく一個一個テキストボックスを作れば個々のname属性をpostすればいいと思うのですがループの場合、それぞれの入力値をどのように渡せばいいかわかりません。
<test.php>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<link rel="stylesheet" href="style.css" type="text/css" />
<meta name="viewport" content="width=device-width">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>勤怠データ入力</title>
</head>
<script type="text/javascript">
function myEnter(){
myRet = confirm("入力画面を閉じてよろしいですか?");
}
</script>
<body>
<div id="name">
<table>
<tr style="text-align:center; background-color:#DDEBF7;">
</tr>
<form name = "Data" action="foo.php" method="POST">
<tr style="text-align:center;">
</tr>
</table>
</div>
<div id="button">
<input type="submit" name ="touroku" value="登録更新" style="margin-right:30px;" />
<input type="submit" value="戻る" onclick="myEnter()" />
</div>
<div id="calendar">
<table style="text-align:center;">
<tr style="text-align:center; background-color:#DDEBF7;">
<td style="width:20px;">日</td>
<td>開始時間</td>
<td>終了時間</td>
<td>入力1</td>
<td>入力2</td>
<td>入力3</td>
</tr>
<tr><!--1日-->
<?php
$day = 1;
while ($day < 32){
?>
<td><input type="text" readonly value="<?php echo $day ?>" style="width:20px;"</td>
<td><select name="start_time" >
<option value="0" > 0</option>
<option value="1" > 1</option>
</select>
: <select name="start_minute">
<option value="00" >00</option>
<option value="30" >30</option>
</select>
</td>
<td><select name="end_time" >
<option value="0" >0</option>
<option value="1" >1</option>
</select>
:<select name="end_minute">
<option value="00" >00</option>
<option value="30" >30</option>
</select>
</td>
<td><input type="text" name = "nyuryoku1" value="" style=width:150px></td>
<td><input type="text" name = "nyuryoku2" value="" style=width:150px></td>
<td><input type="text" name = "nyuryoku3" value="" style=width:150px></td>
</td>
</tr>
<?php
$day++;
}
?>
</form>
</body>
</html>
<foo.php>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<?php
$s_hour = ($_POST['start_time']);
$s_minutes = ($_POST['start_minute']);
$e_hour = ($_POST['end_time']);
$e_minutes = ($_POST['end_minute']);
$data1 = ($_POST['nyuryoku1']);
$data2 = ($_POST['nyuryoku2']);
$data3 = ($_POST['nyuryoku3']);
$s_time = ($s_hour.$s_minutes);
$e_time = ($e_hour.$e_minutes);
echo '開始時間';
echo $s_time;
echo '終了時間';
echo $e_time;
echo '入力1';
echo $data1;
echo '入力2';
echo $data2;
echo '入力3';
echo $data3;
?>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>無題ドキュメント</title>
</head>
<body>
テスト実行
</body>
</html>
お礼
回答ありがとうございます! 勘違いしてました、[何番目]かの[POSTするname]で取得するんですね これなら[何番目]の部分をループで処理すれば入力値すべて取得できそうです。 PHP始めたばかりなのですがとても参考になりました。 感謝です!!
補足
回答、本当にありがとうございます。 whileの部分ですが、name属性の$dayが1のときそれに対する入力値を示しているということですよね。 回答を参考にnameを変更いたしましたがうまく値が取れていないか書き方が悪いかで思った動きになりませんでした・・ $_POSTの説明のところが理解力不足でわからなかったのですがwhileの部分のみ書き直しても、POSTを受け取る方はこの記述のままだとだめですよね。 たびたび申し訳ありませんがよろしくお願いします。