我有以下表格:
<form name='progObj_form' method='POST' enctype='multipart/form-data' action='processpage.php'>
<select name='manageObj[]' id='objectives' multiple="multiple">
<option value=0>there are no objectives for this program</option>
</select><br />
<a href='#nogo' onclick="delItem(objectives,0,'objEditBtn')" class='shiftOpt'>delete selected</a><br />
<input name='newObjective' type='text' id='newObjective'/>
<input name='addNew' type='button' onclick="AddItem(newObjective.value,6,'objectives','objEditBtn');" value='add objective'/>
<input name="passProgID" type="hidden" value="1" /><br />
<input name="objectiveEdit" id="objEditBtn" type="submit" value="save changes" disabled=disabled/>
</form>
允许在列表框中添加和删除数据(本例中的目标)。一切正常,但由于某种原因,更新的列表框值未传递到流程页面。
我正在捕捉这样的数据(简化):
if (isset($_POST['objectiveEdit'])){
$progID=$_POST['passProgID'];
for ($v=1;$v<count($_POST['manageObj']);$v++){
$value=$_POST['manageObj'][$v];
$sqlObj="INSERT INTO progObjective (progID,objective,objectiveOrder) VALUES ($progID,$value,$v)";
$result = mssql_query($sqlObj,$linkProbation) or die('Query failed: '.$sqlObj);
}//end for ($a=0;$a<count($_POST['manageObj']);$a++)
$objMsg=print_r($_POST['manageObj']).$sqlObj;
}//end if (isset($_POST['objectiveEdit'])
对于$objMsg
,我收到1
的响应,并且数组不打印,因为表面上,它是空的,这意味着它也不会进入for循环。
我也可以包含javascript,但是为了简单起见就是这样,因为我可能只是忽略了一些明显的东西?!
答案 0 :(得分:0)
永远不会将选项元素发送到服务器。只会发送所选选项的value
。
在您的情况下,manageObj=x
之类的内容将发送到服务器,其中x
是用户选择的value
元素的option
。在[]
属性中使用name
时,您可能会误解input
。
如果要将用户创建的目标发送到服务器,则应尝试查找其他方法。例如,您可以将数据存储在隐藏的{{1}}中。
答案 1 :(得分:0)
所以我终于明白了!没有数组,因为没有选择!我更新了提交按钮以调用SELECT ALL功能,现在一切都很好。
<input name="objectiveEdit" id="objEditBtn" type="submit" value="save changes" onclick="selectAll('objectives',true)" />
答案 2 :(得分:-1)
name =' manageObj [] ' - 不应该是name =' manageObj '吗?