2012-12-19 44 views
0

我有一个简单的表单,其中包含5个textareas和每个textarea旁边的复选框。 textarea和复选框值设置为数组。然后,我遍历数组的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()); 
} 
+0

你的问题到底是什么? (提示:不要在评论中回答,[将其添加到您的问题](http://stackoverflow.com/posts/13945209/edit)。) – ghoti

+1

[**请勿使用'mysql_ *'函数在新代码中**](http://bit.ly/phpmsql)。他们不再被维护[并被正式弃用](https://wiki.php.net/rfc/mysql_deprecation)。看到[**红框**](http://j.mp/Te9zIL)?学习[*准备的语句*](http://j.mp/T9hLWi),并使用[PDO](http://php.net/pdo)或[MySQLi](http://php.net/ mysqli) - [这篇文章](http://j.mp/QEx8IB)将帮助你决定哪个。如果你选择PDO,[这里是一个很好的教程](http://j.mp/PoWehJ)。 –

回答

0

据我所知,复选框值不会被发送到服务器,而不是选中时。所以,你需要首先检查它是否存在/定义。

为了更方便,只需添加键值为您的复选框:

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

,然后定义$提交:

$submissions = $_POST['submission']; 

在for循环中:

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

并将您的查询行改为:

'$comment')", $submission); 
+0

嘿,非常感谢这个......就像一个魅力。 – IlludiumPu36