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'])

for$objMsgの応答が返さ1れ、配列が出力されません。これは、表向きは空であるため、 for ループにも入らないことを意味します。

JavaScript を含めることもできますが、簡単にするためにこれだけから始めました。

4

3 に答える 3

0

だから私はついにそれを理解しました!選択が行われていないため、配列はありません。SELECT ALL関数を呼び出すように送信ボタンを更新しましたが、これですべて問題ありません。

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

オプション要素がサーバーに送信されることはありません。選択したオプションのみvalueが送信されます。

あなたの場合、ユーザーが選択した要素の がmanageObj=xサーバーに送信されます。属性でいつ使用されるかを誤解している可能性があります。xvalueoption[]name

ユーザーが作成した目標をサーバーに送信する場合は、別の方法を探す必要があります。inputたとえば、データを非表示の s に保存できます。

于 2012-05-14T16:53:51.377 に答える
-1

name=' manageObj[] ' - name=' manageObj ' ではないでしょうか?

于 2012-05-14T16:53:33.577 に答える