2012-05-14 38 views
1

我有以下形式:列表框與JavaScript動作不張貼值

<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

所以我終於明白了!沒有陣列,因爲沒有選擇!我更新了提交按鈕來調用一個SELECT ALL函數,現在它很好。

<input name="objectiveEdit" id="objEditBtn" type="submit" value="save changes" onclick="selectAll('objectives',true)" /> 
-1

name ='manageObj []''should not that name ='manageObj'?

+0

這個例子不會改變任何東西。 – kapa

+0

元素標識符或名稱中不允許使用括號 - 這樣使用它們是錯誤的。 –

+0

請向我展示規範的相關部分,因爲我沒有找到它說不允許的部分(提示:它不在那裏)。 – kapa

0

選項元素從不發送到服務器。只有所選選項的value將被髮送。

在你的情況,像manageObj=x將被髮送到服務器,其中x是由用戶選擇的option元素的value。當您在name屬性中使用它時,可能會誤解[]

如果您想將用戶創建的目標發送到服務器,您應該嘗試查找不同的方法。例如,您可以將數據存儲在隱藏的input中。

+0

我有一個類似的列表框 - 它允許用戶從一個列表中選擇項目並將其移動/保存到第二個列表。進程頁面是相同的,我想我應該這樣做 – jlisham

+0

我應該捕獲輸入的文本並將其作爲值(對於其他我捕獲的ID#)傳遞。因爲這還包括對選項列表進行排序的功能(將這部分簡化爲簡化),我使用索引編號(或試圖)作爲orderNumber。 – jlisham

+0

所以我終於明白了!沒有陣列,因爲沒有選擇!我更新了提交按鈕來調用一個SELECT ALL函數,現在它很好。 '' – jlisham