0

我有一个简单的表单,其中包含 5 个文本区域和每个文本区域旁边的复选框。textarea 和 checkbox 值设置为数组。然后我循环遍历 textarea 的数组并插入记录。textarea 值工作正常,但复选框值没有按需要工作。

表格:

<form action="" method="post" name="form">
<table border="0" align="left" cellpadding="5">
  <tr>
    <td valign="top">Submission</td>
    <td valign="top"><p>Allowed</p></td>
    <td valign="top">Comment</td>
  </tr>
  <tr>
    <td width="13%" valign="top">Prescription</td>
    <td width="13%" align="center" valign="top"><input name="submission[]" id="submission_1" type="checkbox" value="0" /></td>
    <td width="74%" valign="top"><textarea name="comment[]" cols="45" rows="5"></textarea></td>
  </tr>
  <tr>
    <td valign="top">Lab Request</td>
    <td align="center" valign="top"><input name="submission[]" id="submission_1" type="checkbox" value="1" /></td>
    <td valign="top"><textarea name="comment[]" cols="45" rows="5"></textarea></td>
  </tr>
  <tr>
    <td valign="top">Generic request</td>
    <td align="center" valign="top"><input name="submission[]" id="submission_1" type="checkbox" value="2" /></td>
    <td valign="top"><textarea name="comment[]" cols="45" rows="5"></textarea></td>
  </tr>
  <tr>
    <td valign="top">Image request</td>
    <td align="center" valign="top"><input name="submission[]" id="submission_1" type="checkbox" value="3" /></td>
    <td valign="top"><textarea name="comment[]" cols="45" rows="5"></textarea></td>
  </tr>
  <tr>
    <td valign="top">Stationery</td>
    <td align="center" valign="top"><input name="submission[]" id="submission_1" type="checkbox" value="4" /></td>
    <td valign="top"><textarea name="comment[]" cols="45" rows="5"></textarea></td>
  </tr>
  <tr>
    <td colspan="3" valign="top"><input type="submit" name="define_submissions" id="submit" value="Add Submissions" /></td>
  </tr>
</table>
</form>

PHP:

$submission = intval($_POST['submission']);
$submission_comment = $_POST['comment'];


if(isset($_POST['define_submissions'])){ 

for($i=0, $count = count($submission_comment);$i<$count;$i++) {
    $comment = $submission_comment[$i];
    $query_level_1 = 
sprintf("INSERT INTO submission (             
           submission_pk,
           pathway_fk,
           submission_allowed,
           comment
        ) VALUES (
           '',
           '$pathway',
           '%s',
           '$comment')", $submission === $i ? 'y' : 'n');
$result_level_1 = mysql_query($query_level_1, $connection) or die(mysql_error());
}
4

1 回答 1

0

AFAIK,未选中时,复选框值不会发送到服务器。因此,您需要首先检查它是否存在/已定义。

为了使它更容易,只需将键值添加到您的复选框:

<input name="submission[0]" id="submission_1" type="checkbox" value="0" />
<input name="submission[3]" id="submission_1" type="checkbox" value="3" />

然后,定义 $submission:

$submissions = $_POST['submission'];

for循环内部:

$submission = isset($submissions[$i]) ? 'n' : 'y';

并将您的查询行更改为:

'$comment')", $submission);
于 2012-12-19T03:58:22.337 回答