
プルダウンメニューを使用して、フォーム→確認→送信と順々に値を受け取りたいのですが、form.phpではプルダウンメニューは表示されますが、form.phpで選択したプルダウンメニューがconfirm.phpでは表示されません。
confirm.phpでも表示されてなおかつ送信をしたら受け取れるようにしたいのです。
初心者なので、いろいろと勉強をしながら、本を読んだり、調べたのですが、まったくわからずです。どなたかご教授お願いします。
form.php
<form method="post" action="confirm.php">
<table cellpadding="0" cellspacing="0" border="0"><tr><td>項目</td><td>入力欄</td><td>記入例</td></tr>
<tr><td><label for="name">名前</label></td><td><input type="text" size="50" name="name" id="name" value="<?php print h(@$_SESSION['name']); ?>" /></td><td>例:goo 太郎</td></tr>
<tr><td><label for="mail">生年月日</label></td><td>
<select name="year[]"><option value="1970">1970</option><option value="1971">1971</option><option value="1972">1972</option><option value="1973">1973</option><option value="1974">1974</option></select>年
<select name="month[]"><option value="01">01</option><option value="02">02</option><option value="03">03</option><option value="04">04</option><option value="05">05</option><option value="06">06</option></select>月
<select name="day[]"><option value="01">01</option><option value="02">02</option><option value="03">03</option><option value="04">04</option><option value="05">05</option><option value="06">06</option></select>日
</td><td>例:1990年01月01日</td></tr>
<tr><td colspan="3" style="text-align:center;"><input type="hidden" name="aaa" value="<?php print h($aaa); ?>" /><input type="submit" value="確認" /></td></tr>
</table></form>
confirm.php
session_start();
$_POST = checkInput($_POST);
if (isset($_POST['aaa']) && isset($_SESSION['aaa'])) {
$aaa = $_POST['aaa'];
if (!in_array($aaa, $_SESSION['aaa'])) {
die('不正アクセスの疑いがあります。');
}
} else {
die('不正アクセスの疑いがあります。');
}
$name = isset($_POST['name']) ? $_POST['name'] : NULL;
$kana = isset($_POST['kana']) ? $_POST['kana'] : NULL;
$mail = isset($_POST['mail']) ? $_POST['mail'] : NULL;
$comment = isset($_POST['comment']) ? $_POST['comment'] : NULL;
$error = array();
★★★各項目のチェック★★★
$_SESSION['name'] = $name;
$_SESSION['kana'] = $kana;
$_SESSION['mail'] = $mail;
$_SESSION['comment'] = $comment;
$_SESSION['error'] = $error;
<table class="form" cellpadding="0" cellspacing="0" border="0">
<tr><td>項目</td><td>入力欄</td><td class="title_color" style="border-left:1px solid #ffffff;">記入例</td></tr>
<tr><td>名前</td><td class="title_back2"><?php print h($name);?></td><td>例:goo 太郎</td></tr>
<tr><td>生年月日</td><td>★★★★★ここにform.phpからのプルダウンメニューを受け取りたい★★★★★</td><td>例:1990年01月01日</td></tr>
</table>
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td><form action="form.php" method="post"><input type="submit" value="戻る" /></form></td>
<td><form action="send.php" method="post"><input type="hidden" name="aaa" value="<?php print h($aaa);?>" /><input type="submit" value="送信" /></form></td>
</tr></table>
No.4ベストアンサー
- 回答日時:
混乱を避けるために、配列指定をはずすことを #1 でお勧めしたのです、
> multipul を指定してるわけでもないようなので [] はいらなくないですか?
> name="year[]" → name="year"
とすれば
$year = isset( $_POST[ 'year' ] ) ? $_POST[ 'year' ] : null;
で済みます。
--------------------------------------------------------------
$year = isset( $_POST[ 'year' ] ) ? $_POST[ 'year' ][ 0 ] : null;
この時点で、$year には '1971' などの文字列が格納されています。
(もちろん何も選択されていなければ null になります。)
ですので、
<?php print h($year[0]) ;?>年
とすると、一文字目だけの表示 "1年" とならないですか?
この回答への補足
でました。
ですが、このform.phpで1971年01月01日と選択した場合confirm.phpの確認画面でも1971年01月01日と表示させたいのですが、記述はどのようになるでしょうか?
また、この場合
// POSTされたデータとエラーメッセージをセッション変数に保存
$_SESSION['year'] = $year[0];
$_SESSION['month'] = $month[0];
$_SESSION['day'] = $day[0];
$_SESSION['error'] = $error;
はこのままでよろしいのでしょうか?
本当に初心者なのもので、なにもわからないためお願いします。
No.3
- 回答日時:
mail の件は撤回しますが、回答は同じです。
$year = is_array( $_POST[ 'year' ] ) ? $_POST[ 'year' ][ 0 ] : null;
$month = is_array( $_POST[ 'month' ] ) ? $_POST[ 'month' ][ 0 ] : null;
$day = is_array( $_POST[ 'day' ] ) ? $_POST[ 'day' ][ 0 ] : null;
$birthday = "{$year}年{$month}月{$day}日";
<tr><td>生年月日</td><td><?= $birthday ?></td><td>例:1990年01月01日< /td></tr>
それとも、プルダウンそのものを取得したいという意味ですか?
この回答への補足
お忙しい中有難う御座います。
もし参考サイト等を知っているならば教えていただけないでしょうか?
下記がsend.phpになります。
<?php
$mailTo = '****@****.com';
$subject = 'お問合せ';
$returnMail = '****@*****';
function checkInput($var) {
if (is_array($var)) {
return array_map('checkInput', $var);
} else {
if (get_magic_quotes_gpc()) { // magic_quotes_gpc対策
$var = stripslashes($var);
}
if (preg_match('/\0/', $var)) { // NULLバイト攻撃対策
die('不正な入力です。');
}
if (!mb_check_encoding($var, 'shift-jis')) { // 文字エンコードの確認
die('不正な入力です。');
}
return $var;
}
}
session_start();
$_POST = checkInput($_POST);
if (isset($_POST['aaaa']) && isset($_SESSION['aaaa'])) {
$aaaa = $_POST['aaaa'];
if (!in_array($aaaa, $_SESSION['aaaa'])) {
die('不正アクセスの疑いがあります。');
}
} else {
die('不正アクセスの疑いがあります。');
}
$name = $_SESSION['name'];
$kana = $_SESSION['kana'];
$mail = $_SESSION['mail'];
$year = $_SESSION['year'][0];
$month = $_SESSION['month'][0];
$day = $_SESSION['day'][0];
$comment = $_SESSION['comment'];
mb_language('ja');
mb_internal_encoding('shift-jis');
$header = 'From: ' . mb_encode_mimeheader($name) . ' <' . $mail . '>';
$message = '';
$comment = "差出人:" .$_SESSION['name']."\n". "メール:" .$_SESSION['mail']."\n\n\n". "->フリガナ:\n" .$_SESSION['kana']."\n\n". "->お問合せ内容:\n" .$_SESSION['comment'];
if (ini_get('safe_mode')) {
$result = mb_send_mail($mailTo, $mailBCC, $subject, $comment, $header);
} else {
$result = mb_send_mail($mailTo, $mailBCC, $subject, $comment, $header, '-f' . $returnMail);
}
if ($result) {
$message = '送信完了いたしました。<br />担当者よりご連絡をお待ちくださいませ。';
$_SESSION = array();
session_destroy();
} else {
$message = '送信失敗';
}
?>
No.2
- 回答日時:
mail の件だけ撤回しますが、回答は同じです。
$year = is_array( $_POST[ 'year' ] ) ? $_POST[ 'year' ][ 0 ] : null;
$month = is_array( $_POST[ 'month' ] ) ? $_POST[ 'month' ][ 0 ] : null;
$day = is_array( $_POST[ 'day' ] ) ? $_POST[ 'day' ][ 0 ] : null;
<tr><td>生年月日</td><td>$year年$month月$day日</td><td>例:1990年01月01日< /td></tr>
それとも、プルダウンそのものを取得したいという意味ですか?
この回答への補足
有難う御座います。
試させていただいたのですが、受け取りができませんでした。
年月日だけしか表示されませんでした。
confirm.phpは下記のようになります。
<?php
// 変数にPOSTされたデータを代入
$name = isset($_POST['name']) ? $_POST['name'] : NULL;
$kana = isset($_POST['kana']) ? $_POST['kana'] : NULL;
$mail = isset($_POST['mail']) ? $_POST['mail'] : NULL;
$year = is_array($_POST['year']) ? $_POST['year'][0] : NULL;
$month = is_array($_POST['month']) ? $_POST['month'][0] : NULL;
$day = is_array($_POST['day']) ? $_POST['day'][0] : NULL;
$comment = isset($_POST['comment']) ? $_POST['comment'] : NULL;
// POSTされたデータとエラーメッセージをセッション変数に保存します。
$_SESSION['name'] = $name;
$_SESSION['kana'] = $kana;
$_SESSION['mail'] = $mail;
$_SESSION['year'] = $year[0];
$_SESSION['month'] = $month[0];
$_SESSION['day'] = $day[0];
$_SESSION['comment'] = $comment;
$_SESSION['error'] = $error;
?>
<table cellpadding="0" cellspacing="0" border="0">
<tr><td>項目</td><td>入力欄</td><td>記入例</td></tr>
<tr><td>名前</td><td><?php print h($name);?></td><td>例:ORENZZE 太郎</td></tr>
<tr><td>フリガナ</td><td><?php print h($kana);?></td><td>例:オレンツェ タロウ</td></tr>
<tr><td>メール</td><td><?php print h($mail);?></td><td>例:mail@orenzze.com</td></tr>
<tr><td>生年月日</td><td><?php print h($year[0]) ;?>年<?php print h($mont[0]) ;?>月<?php print h($day[0]) ;?>日</td><td>例:1980年01月01日</td></tr>
<tr><td>お問合せ内容</td><td><?php print nl2br(h($comment));?></td><td>例:お気軽にご質問下さい</td></tr>
</table>
<table class="form" cellpadding="0" cellspacing="0" border="0">
<tr>
<td><form action="form.php" method="post"><input type="submit" value="戻る" /></form></td>
<td><form action="send.php" method="post"><input type="hidden" name="aaaa" value="<?php print h($aaaa);?>" /><input type="submit" value="送信" /></form></td>
</tr>
</table>
No.1
- 回答日時:
mail に紐付けされたフォーム部品がないから。
年月日の取得は$_POST[ 'year' ] ,$_POST[ 'month' ], $_POST[ 'day' ] では?ちなみに、配列指定してるから、$_POST[ 'year' ][ 0 ] としなければいけない。
multipul を指定してるわけでもないようなので [] はいらなくないですか?
name="year[]" → name="year"
余計なことだけど、メールでもないのに名前が mail だと紛らわしくないですか?
option のどれかひとつに selected を指定したほうがいいですよ。
この回答への補足
ご回答有難う御座います。
文字数制限のため、かなり省略させていただきました。
<?php
session_start();
$aaaa = md5(uniqid(mt_rand(), TRUE));
$_SESSION['aaaa'][] = $aaaa;
?>
<form method="post" action="confirm.php">
<table cellpadding="0" cellspacing="0" border="0">
<tr><td>項目</td><td>入力欄</td><td>記入例</td></tr>
<tr><td><label for="name">名前</label></td><td><input type="text" size="50" name="name" id="name" value="<?php print h(@$_SESSION['name']); ?>" /></td><td>例:goo 太郎</td></tr>
<tr><td><label for="kana">フリガナ</label></td><td><input type="text" size="50" name="kana" id="kana" value="<?php print h(@$_SESSION['kana']); ?>" /></td><td>例:グー タロウ</td></tr>
<tr><td><label for="mail">メール</label></td><td><input type="text" size="50" name="mail" id="mail" value="<?php print h(@$_SESSION['mail']); ?>" /></td><td>例:***@***.com</td></tr>
<tr><td><label for="birthday">生年月日</label></td>
<td>
<select name="year" id="year">
<option value="1970">1970</option><option value="1971">1971</option><option value="1972">1972</option><option value="1973">1973</option>
<option value="1974">1974</option><option value="1975">1975</option><option value="1976">1976</option><option value="1977">1977</option>
<option value="1978">1978</option><option value="1979">1979</option><option value="1980">1980</option><option value="1980">1981</option>
<option value="1982">1982</option><option value="1983">1983</option><option value="1984">1984</option><option value="1985">1985</option>
<option value="1986">1986</option><option value="1987">1987</option><option value="1988">1988</option><option value="1989">1989</option>
<option value="1990">1990</option><option value="1991">1991</option><option value="1992">1992</option><option value="1993">1993</option>
</select>年
<select name="month" id="month">
<option value="01">01</option><option value="02">02</option><option value="03">03</option><option value="04">04</option>
<option value="05">05</option><option value="06">06</option><option value="07">07</option><option value="08">08</option>
<option value="09">09</option><option value="10">10</option><option value="11">11</option><option value="12">12</option>
</select>月
<select name="day" id="day">
<option value="01">01</option><option value="02">02</option><option value="03">03</option><option value="04">04</option>
<option value="05">05</option><option value="06">06</option><option value="07">07</option><option value="08">08</option>
<option value="09">09</option><option value="10">10</option><option value="11">11</option><option value="12">12</option>
<option value="13">13</option><option value="14">14</option><option value="15">15</option><option value="16">16</option>
<option value="17">17</option><option value="18">18</option><option value="19">19</option><option value="20">20</option>
<option value="21">21</option><option value="22">22</option><option value="23">23</option><option value="24">24</option>
<option value="25">25</option><option value="26">26</option><option value="27">27</option><option value="28">28</option>
<option value="29">29</option><option value="30">30</option><option value="31">31</option>
</select>日
</td>
<td>例:1980年01月01日</td>
</tr>
<tr><td><label for="comment">お問合せ内容</label></td><td><textarea name="comment" id="comment" /><?php print h(@$_SESSION['comment']); ?></textarea></td><td >例:お気軽にご質問下さい</td></tr>
<tr><td colspan="3" style="text-align:center;"><input type="hidden" name="aaaa" value="<?php print h($aaaa); ?>" /><input type="submit" value="確認" alt="確認" /> </td></tr>
</table></form>
これがform.phpです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
プルダウンリンクを外部ファイ...
-
セッションにIDを振って値を代入
-
処理後のページ内移動について
-
DBの値をチェックボックスに反...
-
フォームへの前回入力値をクリ...
-
PHPでじゃんけん勝負
-
文字列(×と÷)の文字化けについて
-
フォーム送信後の更新ボタンで...
-
php or条件検索結果と入力した...
-
PHP等を用いて在庫数を表示・管...
-
同じページでフォームデータを...
-
GETとPOST以外のデータの渡し方...
-
リンク先のフォームに自動的に...
-
POSTを使わずに値を渡す方法
-
VBA で、スペースを含むファイ...
-
チェックボックスのうちひとつ...
-
PHPの初心者です。現在チェック...
-
PHPでフォームに表示させたCSV...
-
現在ラジオボタンのデータベー...
-
PHPエラー 教えて下さい
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
セレクトしたときに全て初期状...
-
PHP で画面の一部だけを変えたい。
-
input type="hidden"で送る値を...
-
PHPにてselectboxの色によっ...
-
mysqlからのコンボボックスにつ...
-
「"」(ダブルクォーテーション)...
-
ウェブ上で選択した複数行の内...
-
PHP プルダウンメニュー MYSQL
-
【PHP&JavaScript】複数の別ウ...
-
HTML_QuickFormのチェックボッ...
-
複数のセレクトボックスを1つに...
-
CodeIgniter/set_value()
-
選択したタグ、入力した検索文...
-
データベースにある値でリスト...
-
プログラミング言語で、使える...
-
Smarty 配列のキーを変数で
-
コンボボックス(プルダウン)...
-
phpの質問です
-
わかりません・・・
-
MySQLのレコードを検索、...
おすすめ情報