我正在尝试将复选框中的某些值发布到我的数据库中,此时它会发布一个值,但只有最后选择的值(我目前有8个复选框)。以下是我使用的获取复选框:
<?
$data = mysql_query("SELECT * FROM members WHERE active='Yes' ORDER BY name") or die(mysql_error());
//And we display the results
while($result = mysql_fetch_array( $data ))
{
echo "<input type='checkbox' name='attendees[]'";
echo 'value="' . $result['name'] . '">';
echo " ";
echo $result['name'];
echo "<br>";
}
?>
所以他们成功地以我的形式显示,我可以按照我想要的数量打勾,但是当我检查数据库时,只显示最后一个。
我一直在阅读,似乎我需要将它们存储在一个数组中,但这是我发现难以理解的一点。
有人可以帮助我,以便所有选择的值都显示在数据库中,而不仅仅是最后一个吗?
编辑:太长,无法放入评论中,所以这里是将值添加到数据库的代码
<?php
if(isset($_POST['submit']))
{
$date = $_POST['date'];
$score = $_POST['score'];
$attendees = $_POST['attendees'];
$result = mysql_query("INSERT INTO quiz_results (date, score, attendees)
VALUES ('$date','$score','$attendees')",$connect);
echo "<div class='alert alert-info'><b>Event Added!</b> - You'll will now be taken back to the previous page.</div>";
echo "<meta http-equiv=Refresh content=4;url=add-result.php>";
}//end of if($submit).
?>
答案 0 :(得分:1)
$attendees = $_POST['attendees'];
$与会者是一个数组。您不能简单地将PHP数组存储在数据库中,而无需先将其转换为字符串。您可以将其存储为逗号分隔列表:
if ( is_array($attendees) ) {
$attendees = implode(', ', $attendees);
}
但是,当“与会者”的名称包含逗号时会发生什么?你可以序列化它:
if ( is_array($attendees) ) {
$attendees = serialize($attendees);
}
但是,在任何一种情况下,当您想根据与会者过滤数据时会发生什么?现在你有更多的问题。
管理此数据的最佳方式(Google:数据库一对多关系)是将与会者存储在一个看起来像这样的单独表格中:
quiz_id attendee_id
1 20
1 42
1 50
请在how to select from database based on a match in category?上查看我的答案。
答案 1 :(得分:0)
看起来您需要为每个复选框指定一个不同的名称。
$i=0;
while($result = mysql_fetch_array( $data ))
{
echo "<input type='checkbox' name='attendees[$i]'";
$i++
...
我希望$ _POST ['与会者']是一个数组?
然后当您插入测验结果时,您需要循环遍历数组并一次将一行元素插入数据库,您不能直接插入数组,并希望每个元素自动采用自己的行
希望它有所帮助,请告诉我。
答案 2 :(得分:0)
查看强>
<?php
$data = mysql_query("SELECT * FROM members WHERE active='Yes' ORDER BY name");
$html = '';
//And we display the results
while($result = mysql_fetch_array( $data )) {
$html .= sprintf( '<input type="checkbox" name="attendees[]" value="%d"> %s' , $result['id'] , $result['name'] );
}
echo $html;
发布表单时
<?php
$attendees = isset( $_REQUEST['attendees'] ) ? $_REQUEST['attendees'] : null;
if( !is_null($attendees) && is_array($attendees)){
foreach( $attendees as $attendee){
// do something.. with attendee id
}
echo 'Ids: '.implode(', ', $attendees);
}