こんにちは、セレクトボックスの選択部分を変更するとフォームの内容が変わるというフォームを作っているんですが色々試しても何がどうおかしいのかわからないので質問させていただきます。
PHPは特に触り始めて間もないのでわかりやすく教えてもらえると嬉しいです。
多分色々とおかしいことになってると思いますが出来るだけ分かりやすくよろしくお願いいたします。
【index.html】
<!doctype html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style type="text/css">
fieldset{
border: none;
}
</style>
<script type="text/javascript">
function setForm(ex) {
var target = ex.value;
var group = ex.form.getElementsByTagName("FIELDSET");
var i=0, fs;
while(fs=group[i++]) fs.style.display = fs.id == target?"block":"none";
}
</script>
</head>
<body>
<form action="form.php" method="post">
<table>
<tr>
<td>用件</td>
<td>
<select name="select1" onchange="setForm(this)">
<option value="">選択してください</option>
<option value="A">ご質問</option>
<option value="B">資料請求</option>
<option value="A">その他</option>
</select></td>
</tr>
</table>
<fieldset id="A">
<table>
<tr>
<td>お名前</td>
<td><input type="text" name="name" value=""></td>
</tr>
<tr>
<td>Mail</td>
<td><input type="text" name="mail" value=""></td>
</tr>
<tr>
<td>サイトを知ったきっかけ</td>
<td><input type="checkbox" name="chance[0]" value="friend">知り合い
<input type="checkbox" name="chance[1]" value="serch">検索エンジン<td>
</tr>
<tr>
<td>ご質問内容</td>
<td><textarea name="message" cols="60" rows="5"></textarea></td>
</tr>
</table>
</fieldset>
<fieldset id="B">
<table>
<tr>
<td>お名前</td>
<td><input type="text" name="name" value=""></td>
</tr>
<tr>
<td>Mail</td>
<td><input type="text" name="mail" value=""></td>
</tr>
<tr>
<td>性別</td>
<td><input type="radio" name="gender" value="man">男
<input type="radio" name="gender" vakue="woman">女</td>
</tr>
<tr>
<td>住所</td>
<td><input type="text" name="address" value=""></td>
</tr>
</table>
</fieldset>
<input type="submit" value="送信する" />
</form>
</body>
</html>
</html>
【form.php】
<!doctype html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<?php
mb_language("japanese");
mb_internal_encoding("utf-8");
if(!empty($_POST['mail'])){
$to=$_POST['mail'];
$name=$_POST['name'];
$chance=$_POST['chance'];
$message=$_POST['message'];
$gender=$_POST['gender'];
$address=$_POST['address'];
$form=mb_encode_mimeheader(mb_convert_encoding("自分の名前","JIS","UTF-8"))."<aaa@aaa.com>";
$success=mb_send_mail($to,"名前:".$name."サイトを知ったきっかけ:".$chance."お問い合せ内容:".$messagge."性別:".$gender."住所:".$address,"from:".$from);
}
?>
<?php
if ($success) {
print('送信しました。');
} else {
print('送信に失敗しました。');
}
?>
</body>
</html>
よろしくお願いします!!!!
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
環境作って確認したら他にも悪い所が分かりました。
ご質問、その他を選択した場合「$_POST['name']」「$_POST['mail']」に値が入っておりません。
原因として同じname属性を持つinputが存在する為です。
「$_POST['name']」はどうでもいいですけど、「$_POST['mail']」はif文で判定並びに送信する際に必要です。
<fieldset id="A">
<td>お名前</td>
<td><input type="text" name="name" value=""></td>
<td>Mail</td>
<td><input type="text" name="mail" value=""></td>
(略)
</fieldset>
<fieldset id="B">
<td>お名前</td>
<td><input type="text" name="name" value=""></td>
<td>Mail</td>
<td><input type="text" name="mail" value=""></td>
(略)
</fieldset>
setFormに下記追加
document.getElementById("select").value = ex.value;
下記のようにして配列化し
<td><input type="text" name="name[A]" value=""></td>
<td><input type="text" name="mail[A]" value=""></td>
<td><input type="text" name="name[B]" value=""></td>
<td><input type="text" name="mail[B]" value=""></td>
下記hidden追加
<input type="hidden" id="select" name="select" value="" />
$to=$_POST['mail'][$_POST['select']];
$name=$_POST['name'][$_POST['select']];
これで選択したやつが取れます。
if文も
if(!empty($_POST['mail'][$_POST['select']])){
これに修正
「$_POST['chance']」は、配列が格納されているため
$chance=$_POST['chance'];
これでは本来ほしい状態で値が取得できません。
$chance=$_POST['chance'][0];
//カンマは区切り文字
$chance.=(!empty($chance) && !empty($_POST['chance'][1])) ? ','.$_POST['chance'][1] : $_POST['chance'][1];
こんな感じだと欲しい状態で値が取得できます。
No.1
- 回答日時:
軽く見て問題点をあげるとしたらmb_send_mailの使い方が間違ってると思います。
mb_send_mailは、「mb_send_mail($to, $subject, $message, $from)」なので
$to=>宛先
$subject=>件名
$message=>本文
$from=>メールヘッダの追加(差出人とか文字コードとか設定)
となります。
それを踏まえ
mb_send_mail(
$to←宛先
,"名前:".$name."サイト(略)".$gender."住所:".$address←件名
,"from:".$from←本文
);
ではなく
mb_send_mail(
$to←宛先
,"件名"←件名
,"名前:".$name."サイト(略)".$gender."住所:".$address←本文
,"from:".$from←ヘッダ追加
);
になるのが正しいかと。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- AJAX JavascriptからPHPへのAjax通信でnullが返ってくる 3 2022/08/03 22:00
- PHP 入力した部分を表示させたまま(保持)するにはどうすれば良いでしょうか? 1 2023/01/25 11:14
- JavaScript EasyUIのSubGrid(jquery)におけるObjectに入れた連想配列について 1 2022/05/02 11:21
- JavaScript 以前の質問だと、どの条件でも配列が表示されてしまいます。 1 2022/07/09 11:40
- HTML・CSS 私の能力からして間違っていないような気がします。 4 2022/09/30 13:24
- HTML・CSS テーブルタグのセルの幅の一部だけを指定 1 2023/03/12 12:02
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
- JavaScript javascript作成してます。ラジオボタンで判定するコードを書いてます。 1 2023/07/18 11:03
- PHP PHPでCookieを使った訪問回数について 1 2023/05/28 14:10
- Visual Basic(VBA) Selenium.ChromeDriverの使い方について 7 2022/09/22 06:43
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・【大喜利】【投稿~11/12】 急に朝起こしてきた母親に言われた一言とは?
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・好きな「お肉」は?
- ・あなたは何にトキメキますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・ハマっている「お菓子」を教えて!
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
画面表示とともにtableの指定の...
-
文字数を数える際に空白、改行...
-
FC2掲示板での「性別の選択」を...
-
value内に変数を入れたい
-
return trueとreturn falseの用...
-
1つのページにformを2つ設置。2...
-
プルダウン 項目が多いので先頭...
-
JavaScriptで特定のtdタグにcla...
-
【javascript・PHP】プルダウン...
-
ハイパーリンクを別ウインドウ...
-
プルダウン選択を変更すると、...
-
onchangeイベントを強制的に発...
-
Selectの中身をfor文で入れる
-
formで複数のボタンからひとつ...
-
クリックさせたいが、click()が...
-
マイナスなら赤字で表示したい...
-
【javascript】連想配列からセ...
-
onclickで2個指定するには?
-
チェックされたラジオボタンに...
-
jQueryのプラグイン「Tablesort...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
チェックボックス付きのテーブ...
-
JavaScriptの「.querySelectorA...
-
ラジオボタンとテキストボック...
-
画面表示とともにtableの指定の...
-
テーブル内のチェックボックス...
-
クリックしたラジオボタンの行...
-
ラジオボタンが選択されたらテ...
-
VBSでの自動ログイン
-
formで項目を連結したい
-
文字数を数える際に空白、改行...
-
localStorageでのcheckbox制御
-
Formのシリアライズができない
-
DOM追加時に表示されるが自動削...
-
【緊急】リアルタイムでエラー...
-
innerHTMLで自動生成された表を...
-
繰り返し処理途中にJavaScript...
-
JavaScriptで、コピーボタンを...
-
チェックボックスの全選択・全...
-
同一nameの input type="text"...
-
フォントをまとめて<h5>にでき...
おすすめ情報