こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

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>

投稿日時 - 2014-08-15 13:06:54

QNo.8717660

困ってます

質問者が選んだベストアンサー

whileのところを
<?php

$day = 1;
while ($day < 32){
?>
<td><input type="text" readonly value="<?php echo $day ?>" style="width:20px;"></td>
<td><select name="<?php echo $day ?>[start_time]" >
<option value="0" > 0</option>
<option value="1" > 1</option>

</select>
: <select name="<?php echo $day ?>[start_minute]">
<option value="00" >00</option>
<option value="30" >30</option>
</select>
</td>
<td><select name="<?php echo $day ?>[end_time]" >
<option value="0" >0</option>
<option value="1" >1</option>
</select>
:<select name="<?php echo $day ?>[end_minute]">
<option value="00" >00</option>
<option value="30" >30</option>
</select>
</td>
<td><input type="text" name = "<?php echo $day ?>[nyuryoku1]" value="" style=width:150px></td>
<td><input type="text" name = "<?php echo $day ?>[nyuryoku2]" value="" style=width:150px></td>
<td><input type="text" name = "<?php echo $day ?>[nyuryoku3]" value="" style=width:150px></td>
</td>
</tr>
<?php
$day++;
}
?>
のようにname = "<?php echo $day ?>[nyuryoku3]"のような形にします。
角かっこ[]でくくります。

すると$_POSTは以下のように取れます。
Array
(
[touroku] => 登録更新
[1] => Array
(
[start_time] => 0
[start_minute] => 00
[end_time] => 0
[end_minute] => 00
[nyuryoku1] =>
[nyuryoku2] =>
[nyuryoku3] =>
)

[2] => Array
(
[start_time] => 0
[start_minute] => 00
[end_time] => 0
[end_minute] => 00
[nyuryoku1] =>
[nyuryoku2] =>
[nyuryoku3] =>
)
 :
 :

投稿日時 - 2014-08-15 13:32:14

補足

回答、本当にありがとうございます。

whileの部分ですが、name属性の$dayが1のときそれに対する入力値を示しているということですよね。

回答を参考にnameを変更いたしましたがうまく値が取れていないか書き方が悪いかで思った動きになりませんでした・・

$_POSTの説明のところが理解力不足でわからなかったのですがwhileの部分のみ書き直しても、POSTを受け取る方はこの記述のままだとだめですよね。

たびたび申し訳ありませんがよろしくお願いします。

投稿日時 - 2014-08-15 14:14:31

お礼

回答ありがとうございます!

勘違いしてました、[何番目]かの[POSTするname]で取得するんですね

これなら[何番目]の部分をループで処理すれば入力値すべて取得できそうです。

PHP始めたばかりなのですがとても参考になりました。
感謝です!!

投稿日時 - 2014-08-15 14:28:21

ANo.1

このQ&Aは役に立ちましたか?

10人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問