我将数据显示在一个html表中,带有一个包含场地列表的下拉框。每位志愿者都将被分配一个场地。我设想能够通过HTML表格并为每个志愿者分配一个场地。下拉框包含可以分配给它们的所有可能场所。
<select>
<option value="1">Setup</option>
<option value="2">Check in</option>
etc...
</select>
然后,一旦我完成了每个志愿者的分配,我想点击提交,它将为每个志愿者分配适当的值。
我将如何做到这一点,我知道如何做到这一点,但一次只能做一次。
答案 0 :(得分:3)
更改每个选择的名称,其方式包括志愿者ID:
<select name="venues[1]">
<option value="1">Setup</option>
etc...
</select>
<select name="venues[2]">
<option value="1">Setup</option>
etc...
</select>
<select name="venues[3]">
<option value="1">Setup</option>
etc...
</select>
提交后,将在$ _POST命名的场地中设置一个表格,其中包含索引:1,2,3(志愿者ID),并为每位志愿者提供选定值。
现在,您可以迭代$_POST['venues']
数组并保存每个值:
foreach ($_POST['venues'] as $volunteer_id => $venue) {
save_venue_for_volunteer($volunteer_id, $venue);
}
答案 1 :(得分:1)
这是一个非常粗略的例子,说明如何处理这个问题。注意:您的MySQL表(假设MySQL)必须是支持事务的类型(InnoDB,MyISAM不支持)。
<?php
if ( isset( $_POST['venuChoice'] ) )
{
// Create a transaction
mysql_query( 'BEGIN' );
$failure = false;
// Loop over the selections
foreach ( $_POST['venuChoice'] as $employeeId => $venueId )
{
$sql = sprintf(
'UPDATE table SET columns=%d WHERE id=%d'
, intval( mysql_real_escape_string( $venueId ) )
, intval( mysql_real_escape_string( $employeeId ) )
);
if ( ! @mysql_query( $sql ) )
{
$failure = true;
break;
}
}
// Close out the transaction
if ( $failure )
{
mysql_query( 'ROLLBACK' );
// Display and error or something
} else {
mysql_query( 'COMMIT' );
// Success!
}
}
?>
<form>
<select name="venueChoice[1]">
<option value="1">Setup</option>
<option value="2">Check in</option>
</select>
<select name="venueChoice[2]">
<option value="1">Setup</option>
<option value="2">Check in</option>
</select>
<select name="venueChoice[3]">
<option value="1">Setup</option>
<option value="2">Check in</option>
</select>
</form>
您还可以修改此项以跟踪每个员工当前的场地选择,将其与POST数据进行比较,然后仅针对实际更改的那些执行UPDATE查询。
答案 2 :(得分:0)
我想不出任何办法。您可以将多个SQL语句放入1个MySQL查询中:
UPDATE volunteer SET venue = 1 WHERE id = 2;
UPDATE volunteer SET venue = 2 WHERE id = 3;
...
我希望有一种方法,但我认为每个查询中的位置会有所不同,以便将其合并为一个。
答案 3 :(得分:0)
foreach ($_POST['venues'] as $volunteer_id => $venue) {
save_venue_for_volunteer($volunteer_id, $venue);
}
function save_venue_for_volunteer($volunteer_id, $venue) {
$result = mysql_query("UPDATE volunteers_2009 SET venue_id='$venue' WHERE id='$volunteer_id'")
or die(mysql_error());
}
它将保存到的表格是志愿者_2009,这应该是怎么回事?