我有一张网上表格,上面列出了我孩子的棒球联盟的投手信息。该表格允许输入多个投手(数量未知)。我在给我发邮件的过程中遇到了问题。
下面是表单中的代码(这是针对pitcher1的代码--每个表单最多有10个投手):
<tr bgcolor=#cfcfcf>
<td align=center><b>Team</td><td align=center><b>Pitcher Name</td>
<td align=center><b>Age</td><td align=center><b>Pitches</td></tr>
<tr>
<td><select name="pitcherteam1" size="1">
<option>PLEASE SELECT TEAM
<option>Team 1</option>
<option>Team 2</option>
<option>Team 3</option>
</select></td><td>
<input type=text size=50 name="pitcher1"></td>
<td><select name="pitcherage1" size="1">
<option>AGE
<option>8
<option>9
</select></td>
<td><input type="text" size=3 name="pitcherpitches1"></td></tr>下面是我的php电子邮件函数中的内容:
$size_array = count($_POST['pitcher[]']);
for ($i=0; $i<$size_array; $i++){
$message .= <<<MESSAGE
<tr><td>$_POST['pitcherteam'][$i]</td>
<td><b>$_POST['pitcher'][$i]</td>
<td><b>$_POST['pitcherage'][$i]</b></td>
<td><b>$_POST['pitcherteam'][$i]</b></td></tr>
MESSAGE;
} 我希望循环遍历表单和目标行,这些行只有一个投手输入(与之相反,每次回显所有10行,在非填充字段中有空白/坏数据)。
发布于 2013-07-29 14:04:06
更改输入以使用[]语法,而不是设置数字:
<tr bgcolor=#cfcfcf>
<td align=center><b>Team</td><td align=center><b>Pitcher Name</td>
<td align=center><b>Age</td><td align=center><b>Pitches</td></tr>
<tr>
<td><select name="pitcherteam[]" size="1">
<option>PLEASE SELECT TEAM
<option>Team 1</option>
<option>Team 2</option>
<option>Team 3</option>
</select></td><td>
<input type=text size=50 name="pitcher[]"></td>
<td><select name="pitcherage[]" size="1">
<option>AGE
<option>8
<option>9
</select></td>
<td><input type="text" size=3 name="pitcherpitches[]"></td></tr>然后从PHP中删除[],因为PHP会自动将这些解析为本机数组。还有一个检查,这样如果投手是空的,就忽略行。
$size_array = count($_POST['pitcher']); // <-- notice there's no []
for ($i=0; $i<$size_array; $i++){
if($_POST['pitcher'][$i] != ''){
$message .= <<<MESSAGE
<tr><td>{$_POST['pitcherteam'][$i]}</td>
<td><b>{$_POST['pitcher'][$i]}</td>
<td><b>{$_POST['pitcherage'][$i]}</b></td>
<td><b>{$_POST['pitcherteam'][$i]}</b></td></tr>
MESSAGE;
}
}发布于 2013-07-29 13:58:42
检查是否设置了$_POST‘投手’的值,如果没有,则跳过消息:
if( !isset($_POST['pitcher'][$i]} ) continue;或者,对于你的代码:
$size_array = count($_POST['pitcher[]']);
for ($i=0; $i<$size_array; $i++){
if( !isset($_POST['pitcher'][$i]} ) continue;
$message .= <<<MESSAGE
<tr><td>$_POST['pitcherteam'][$i]</td><td><b>$_POST['pitcher'][$i]</td><td><b>$_POST['pitcherage'][$i]</b></td><td><b>$_POST['pitcherteam'][$i]</b></td></tr>
MESSAGE;
} 发布于 2013-07-29 15:45:04
这是我从您嵌入的代码中编写的一个快速脚本。大约一个小时前,我看了你的问题,当时反应有限,从那以后,你的问题似乎就解决了。与其抛出这段代码,我想我会提供它,以防它帮助你或其他人。
test.php::
print "<html><head><title>title</title></head><body>";
$size_array = count($_POST['pitcher']); // <-- notice there's no []
for ($i=0; $i<$size_array; $i++){
if($_POST['pitcher'][$i] != ''){
$team = $_POST['pitcherteam'][$i];
$pitchername = $_POST['pitchername'][$i];
$age = $_POST['pitcherage'][$i];
$pitcherpitches = $_POST['pitcherpitches'][$i];
if ($pitchername) {
print "$team, $pitchername, $age, $pitcherpitches<br>";
}
}
}
$form_input_row = '<table><tr bgcolor=#cfcfcf><td align=center><b>Team</td><td align=center><b>Pitcher Name</td><td align=center><b>Age</td><td align=center><b>Pitches</td></tr><tr><td><select name="pitcherteam[]" size="1"><option>PLEASE SELECT TEAM<option>Team 1</option><option>Team 2</option><option>Team 3</option></select></td><td><input type=hidden size=50 name="pitcher[]" value="somedata"><input type=text size=50 name="pitchername[]"></td><td><select name="pitcherage[]" size="1"><option>AGE<option>8<option>9</select></td><td><input type="text" size=3 name="pitcherpitches[]"></td></tr></table>';
print "<form method=\"POST\">";
for ($j = 0; $j<6; $j++) {
print $form_input_row;
}
print "<input type=\"submit\" value=\"submit\">";
print "</form></body></html>";https://stackoverflow.com/questions/17925796
复制相似问题