1

我有以下表格:

<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,但为了简单起见就从这个开始,因为我可能只是忽略了一些明显的东西?!

4

3 回答 3

0

选项元素永远不会发送到服务器。只会value发送所选选项的。

在您的情况下,类似的东西manageObj=x将被发送到服务器,用户选择x的元素value在哪里。option您可能误解了[]它在name属性中的使用时间。

如果要将用户创建的目标发送到服务器,则应尝试寻找不同的方法。例如,您可以将数据存储在 hiddeninput中。

于 2012-05-14T16:53:51.377 回答
0

所以我终于想通了!没有数组,因为没有做出选择!我更新了提交按钮以调用 SELECT ALL 函数,现在一切正常。

 <input name="objectiveEdit" id="objEditBtn" type="submit" value="save changes" onclick="selectAll('objectives',true)" />
于 2012-05-15T14:51:28.317 回答
-1

name=' manageObj[] ' - 那不应该是 name=' manageObj ' 吗?

于 2012-05-14T16:53:33.577 回答