-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtopic-229.html
220 lines (201 loc) · 18.5 KB
/
topic-229.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja" dir="ltr">
<head>
<title>日本PHPユーザ会 掲示板: PHP事はじめ » 配列を使うメールフォーム</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="description" content="日本PHPユーザ会運営の掲示板です。※ただいまテスト運用中です。" />
<meta name="keywords" content="php,web,php.gr.jp,community,usebb" />
<link rel="stylesheet" type="text/css" href="./templates/phpgrjp0.3/styles.css" />
<link rel="shortcut icon" href="./templates/phpgrjp0.3/gfx/usebb.ico" />
<link rel="alternate" type="application/rss+xml" title="日本PHPユーザ会 掲示板 RSS フィード" href="rss.xml" />
<script type="text/javascript" src="sources/javascript.js"></script>
</head>
<body onload="javascript:init_external()">
<div id="pagebox-bg">
<div id="shadow-left">
<div id="shadow-right">
<p id="logo"><a href="index.html"><img src="./templates/phpgrjp0.3/gfx/usebb.png" alt="UseBB" title="ホーム" /></a></p>
<h1 id="boardname"><span id="line">日本PHPユーザ会 掲示板</span></h1>
<h2 id="boarddescr">日本PHPユーザ会運営の掲示板です。※ただいまテスト運用中です。</h2>
<div id="topmenu"><ul>
<li><a href="index.html">ホーム</a></li><li><a href="faq.html">FAQ</a></li><li><a href="active.html">活発なトピック</a></li>
</ul></div>
<div id="topmenu-shadow"></div>
<p class="locationbar">
• <a href="index.html">日本PHPユーザ会 掲示板</a> » <a href="forum-2.html">PHP事はじめ</a> » 配列を使うメールフォーム
</p>
<h3 id="forumname"><a href="topic-229.html">配列を使うメールフォーム</a></h3>
<p id="forummods"></p>
<p id="toolbartop"> </p>
<p id="pagelinkstop">ページ: 1</p>
<table class="maintable">
<tr>
<th>投稿者</th>
<th>投稿</th>
</tr>
<tr class="tr1">
<td class="postername">
<div class="posternamecontainer"><a href="profile-318.html">meo</a></div>
</td>
<td class="postinfo">
<div class="postlinks"></div>
<div class="postdate"><a href="topic-post629.html#post629" name="post629" rel="nofollow">#1</a> 2010 年 7 月 21 日(水) 12:47</div>
</td>
</tr>
<tr class="tr1">
<td class="posterinfo">
会員
<div class="avatar"></div>
<div class="field">登録者: 3 2010</div>
<div class="field">返信数: 6</div>
<div class="field"></div>
</td>
<td class="postcontent">
<div class="post">php配列を使ったメールフォームがどうもうまくいきません。。。<br />助けてくださいm(_ _)m<br /><br />以前の人が作成したPHPのメールフォームを変更し、予約フォームを作成しております。<br /><br />下記の図のように商品をチェックボックスで選び、<br />テキストボックスで個数を入力するというフォームを作り、<br />メール送信したいのです。<br /><br /><図><br />↓チェックボックス<br />□商品1 __個←テキストボックス<br />□商品2 __個<br />□商品3 __個<br /><br />PHPにて下記の事がうまくできません。<br />1.for()又はそれ以外にて、商品[]と個数[]の2つの配列を表示の仕方がわかりません。<br /><br />2.メール送信する際に、配列のまま送信すると"Array"となってしまうので、<br /> implode("&", $_POST['shohin']);を使用しました。<br /> しかしこれだとメール送信すると、<br /> 商品1&商品2&商品3 1個&2個&3個となってしまうので、<br /> <br /> 商品1 1個&商品2 2個 というようにメールで送ることはできますでしょうか? <br /><br /><br /><br />■HTML■<br /><form method="post" action="rsv.php"><br /><input type="checkbox" name="shohin[]" value="商品1" />商品1<input type="text" name="kosu[]">個<br /><input type="checkbox" name="shohin[]" value="商品2" />商品2<input type="text" name="kosu[]">個<br /><input type="checkbox" name="shohin[]" value="商品3" />商品3<input type="text" name="kosu[]">個<br /></form><br /><br /><br />■PHP■<br /><?php<br />$shohin = $_POST["shohin"];<br />$kosu = $_POST["kosu"];<br />$mode = $_POST["mode"];<br />if($mode == "sends"){<br /> $title = "ありがとうございました。ご予約を受け付けました。}?><br /><br /><br /><?php print $title ?><br /><?php if($mode != "sends"){ ?><br /><br /><?php<br />//配列を取り出し表示します。<br /> for( $i = 0; $i < count( $shohin ); $i ++ ){<br /> for( $i = 0; $i < count( $kosu ); $i ++ ){<br /> print "{$shohin[$i]}{$kosu[$i]}<br/>";} }<br />//配列を文字列に変換。<br /> $shohin = implode("/", $_POST['shohin']);<br /> $kosu = implode("/", $_POST['kosu']);<br />?><br /><br /> <?php<br /> if($error){<br /> print "<input type=\"button\" value=\"戻る\" onClick=\"history.back()\" />\n";<br /> }else{<br /> print "<form action=\"rsv.php\" method=\"post\">\n"; <br /> print "<input type=\"hidden\" name=\"shohin\" value=\"{$shohin}\" />\n";<br /> print "<input type=\"hidden\" name=\"kosu\" value=\"{$kosu}\" />\n";<br /> print "<input type=\"button\" value=\"戻る\" onClick=\"history.back()\" />\n";<br /> print "<input type=\"submit\" value=\"送信\" />\n";<br /> print "</form>\n"; }<br /> ?><br /><br /><?php<br />//お知らせのメール<br /> }else{<br /> $to_1 = "***@****";<br /><br /> $subject = "ご予約です ";<br /> <br /> $message .= "希望商品 : {$shohin}{$kosu}\n\n";<br /> <br /> $add_header = "Content-Type:text/plain; charset=ISO-2022-JP\n";<br /> $add_header .= "From:<***@*****>\n";<br /> $add_header .= "Content-Transfer-Encoding: 7bit\n";<br /> <br /> mb_internal_encoding("UTF-8");<br /> mb_language("Japanese");<br /><br /> mb_send_mail($to_1,$subject,$message,$add_header);<br />}<br />?><br /><?php<br />//フォームのすべてのテキストをチェックする<br />function txtCheck($txt){<br /> $txt = htmlspecialchars($txt,ENT_QUOTES);<br /> return $txt;<br />}<br />?><br /><br /><br />以上です。<br />知識不足な質問でごめんなさい。<br />どなたかよろしくお願い致します。</div>
</td>
</tr>
<tr class="tr2">
<td class="postername">
<div class="posternamecontainer"><a href="profile-246.html">nulla</a></div>
</td>
<td class="postinfo">
<div class="postlinks"></div>
<div class="postdate"><a href="topic-post630.html#post630" name="post630" rel="nofollow">#2</a> 2010 年 7 月 21 日(水) 16:49</div>
</td>
</tr>
<tr class="tr2">
<td class="posterinfo">
会員
<div class="avatar"></div>
<div class="field">登録者: 8 2009</div>
<div class="field">返信数: 103</div>
<div class="field"></div>
</td>
<td class="postcontent">
<div class="post">こんにちは。<br />こういうフォームは組んだことがないので<br />ちょっと適当にやってみました。<br />htmlのinput要素のname属性値は明示的な添字が必要みたいですね。<br />参考程度にしてください。<br /><br /><br /><br />#form.html<br /><html><br /><head><br /><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><br /><title>mail form</title><br /><body><br /><form method="post" action="rsv.php"><br /><input type="checkbox" name="shohin[0]" value="商品1">商品1<input type="text" name="kosu[0]">個<br><br /><input type="checkbox" name="shohin[1]" value="商品2">商品2<input type="text" name="kosu[1]">個<br><br /><input type="checkbox" name="shohin[2]" value="商品3">商品3<input type="text" name="kosu[2]">個<br><br /><input type="hidden" name="mode" value="sends"><br /><input type="submit"><br /></form><br /></body><br /></html><br /><br /><br /><br />#rsv.php<br /><?php<br /><br />ini_set('display_errors', 'On');<br />error_reporting(E_ALL);<br /><br />function hsc($string) {<br /> if(is_array($string)) {<br /> return array_map("hsc", $string);<br /> }<br /> else {<br /> return htmlspecialchars($string, ENT_QUOTES);<br /> }<br />}<br /><br />function CheckInputData($var) {<br /> if(is_array($var)) {<br /> return array_map("CheckInputData", $var);<br /> }<br /> else {<br /> if(get_magic_quotes_gpc()) {<br /> $var = striplashes($var);<br /> }<br /> return trim($var);<br /> }<br />}<br /><br />$_POST = CheckInputData($_POST);<br />$mode = $_POST["mode"];<br /><br />header("Content-Type: text/plain; utf-8");<br />if($mode === "sends" && isset($_POST["shohin"])){<br /> print "ありがとうございました。ご予約を受け付けました。\n";<br />}<br />else {<br /> print "商品を選択してください。";<br /> exit();<br />}<br /><br />$shohin = hsc($_POST["shohin"]);<br />$kosu = hsc($_POST["kosu"]);<br /><br />$message = "希望商品: \n";<br />while($shohin_name = current($shohin)) {<br /> $message .= $shohin_name . " " . $kosu[key($shohin)] . "個\n";<br /> next($shohin);<br />}<br /><br />mb_language("ja");<br />mb_internal_encoding("utf-8");<br /><br />$to_1 = "***@****";<br /><br />$subject = "ご予約です";<br /><br />$add_header = "From: <***@*****>";<br /><br />// mb_send_mail($to_1, $subject, $message, $add_header);<br /><br /><br /><br />// print_r($shohin);<br />// print_r($kosu);<br /> print_r($message);<br /><br />?><br /><br />追記 忘れてましたが1番の質問の意味がわかりませんでした。<div class="editinfo">« 最終編集者 <a href="profile-246.html">nulla</a> 日時 2010 年 7 月 21 日(水) 16:53. »</div></div>
</td>
</tr>
<tr class="tr1">
<td class="postername">
<div class="posternamecontainer"><a href="profile-318.html">meo</a></div>
</td>
<td class="postinfo">
<div class="postlinks"></div>
<div class="postdate"><a href="topic-post631.html#post631" name="post631" rel="nofollow">#3</a> 2010 年 7 月 21 日(水) 17:36</div>
</td>
</tr>
<tr class="tr1">
<td class="posterinfo">
会員
<div class="avatar"></div>
<div class="field">登録者: 3 2010</div>
<div class="field">返信数: 6</div>
<div class="field"></div>
</td>
<td class="postcontent">
<div class="post">返信本当にありがとうございます!<br /><br /><追記 忘れてましたが1番の質問の意味がわかりませんでした。<br />説明がわかりづらくて申し訳ありません!<br /><br /><br />作成している予約フォームですが、<br />【入力画面(HTML)】確認ボタン→【 確認画面(rsv.php)】送信ボタン → <br />【”ありがとうございました。予約を受け付けました”(rsv.php)】<br /><br />という流れで、フォームで入力してものを、<br />確認としてrsv.phpで出力した後、送信したいのです。<br /><br />その際に、(あなたが選んだのは)「商品1:1個」「商品2:2個」と表示する為に<br />PHPでどのように記述すればいいのか<br /><br />配列が2つあるので、<br />forでの値の回し方は↓の記述でいいのか、<br /><br />もしくはfor()以外の他の関数を使用して配列を表示する場合は、<br />どういった記述がいいのか<br />そちらをお聞きしたかったのです<br /><br /><?php<br />//配列を取り出し表示します。<br /> for( $i = 0; $i < count( $shohin ); $i ++ ){<br /> for( $i = 0; $i < count( $kosu ); $i ++ ){<br /> print "{$shohin[$i]}{$kosu[$i]}<br/>";} }<br />//配列を文字列に変換。<br /> $shohin = implode("/", $_POST['shohin']);<br /> $kosu = implode("/", $_POST['kosu']);<br />?><br /><br /><br />説明不足ですみません。<br />上記でも分かりづらかったら仰って下さい。<br />よろしくお願い致します。</div>
</td>
</tr>
<tr class="tr2">
<td class="postername">
<div class="posternamecontainer"><a href="profile-246.html">nulla</a></div>
</td>
<td class="postinfo">
<div class="postlinks"></div>
<div class="postdate"><a href="topic-post632.html#post632" name="post632" rel="nofollow">#4</a> 2010 年 7 月 21 日(水) 17:53</div>
</td>
</tr>
<tr class="tr2">
<td class="posterinfo">
会員
<div class="avatar"></div>
<div class="field">登録者: 8 2009</div>
<div class="field">返信数: 103</div>
<div class="field"></div>
</td>
<td class="postcontent">
<div class="post">それでしたらすでに用件は満たしているような気がします。<br />私が提示したソースを実際に試してみてください。</div>
</td>
</tr>
<tr class="tr1">
<td class="postername">
<div class="posternamecontainer"><a href="profile-318.html">meo</a></div>
</td>
<td class="postinfo">
<div class="postlinks"></div>
<div class="postdate"><a href="topic-post633.html#post633" name="post633" rel="nofollow">#5</a> 2010 年 7 月 21 日(水) 18:08</div>
</td>
</tr>
<tr class="tr1">
<td class="posterinfo">
会員
<div class="avatar"></div>
<div class="field">登録者: 3 2010</div>
<div class="field">返信数: 6</div>
<div class="field"></div>
</td>
<td class="postcontent">
<div class="post">早速の返信ありがとうございます!<br /><br />実際に試させて頂こうと、サーバーにあげ、実行したのですが、<br />Fatal error: Call to undefined function: striplashes() in /home/sites/chicappa.jp/users/chicappa.jp-climbone/web/test/rsv.php on line 30 と表示されました。<br /><br />私のコードで on line 30 は $var = striplashes($var); が該当するのですが<br /><br />もしくは私の方に不手際がありますでしょうか?<br /><br />お手数おかけしまして本当にすみません。<br />よろしくお願いしますm(_ _)m</div>
</td>
</tr>
<tr class="tr2">
<td class="postername">
<div class="posternamecontainer"><a href="profile-246.html">nulla</a></div>
</td>
<td class="postinfo">
<div class="postlinks"></div>
<div class="postdate"><a href="topic-post634.html#post634" name="post634" rel="nofollow">#6</a> 2010 年 7 月 22 日(木) 8:26</div>
</td>
</tr>
<tr class="tr2">
<td class="posterinfo">
会員
<div class="avatar"></div>
<div class="field">登録者: 8 2009</div>
<div class="field">返信数: 103</div>
<div class="field"></div>
</td>
<td class="postcontent">
<div class="post">おはようございます。<br />誤植でした。<br />striplashes → stripslashes</div>
</td>
</tr>
<tr class="tr1">
<td class="postername">
<div class="posternamecontainer"><a href="profile-318.html">meo</a></div>
</td>
<td class="postinfo">
<div class="postlinks"></div>
<div class="postdate"><a href="topic-post635.html#post635" name="post635" rel="nofollow">#7</a> 2010 年 7 月 22 日(木) 18:23</div>
</td>
</tr>
<tr class="tr1">
<td class="posterinfo">
会員
<div class="avatar"></div>
<div class="field">登録者: 3 2010</div>
<div class="field">返信数: 6</div>
<div class="field"></div>
</td>
<td class="postcontent">
<div class="post">nulla様 返信ありがとうございます。<br /><br />無事思い通りの仕様ができました!m(_ _)m<br /><br />提示して頂いたソースを何度も拝見し、<br />一部を作成中のphpに組み込ませて頂きました。<br /><br />作成中のものは、if elseでエラーを指定してあり<br />確認→送信と1つのphpでしたが、<br />それだとうまく配列がメール送信されない為、<br />確認と送信のphpと2つのphpに分けて、組み込みました。<br /><br />まだ勉強不足の為、正しく記述できてるかはわかりませんが、<br />何とか希望通りの仕様となりました。<br /><br />本当に困っていたので、助かりました。<br />ありがとうございます!</div>
</td>
</tr>
</table>
<p id="toolbarbottom"> </p>
<p id="pagelinksbottom">ページ: 1</p>
<div id="bottomfix"></div>
<p id="actionlinks"></p>
<p class="locationbar">
• <a href="index.html">日本PHPユーザ会 掲示板</a> » <a href="forum-2.html">PHP事はじめ</a> » 配列を使うメールフォーム
</p>
<p id="linkbar">
</p>
<p id="bottom">
日本PHPユーザ会 掲示板 は <a href="http://www.usebb.net">UseBB 1 フォーラムソフトウェア</a> を使用しています
</p>
<div id="bottom-shadow"></div>
</div>
</div>
</div>
</body>
</html>