2016-08-24 33 views
0

我花了整天試圖找到答案,我只是放棄了。這裏是我的問題,希望你能幫助我:發送郵件的默認選擇2選項

我需要通過多個選擇從Select2通過Post方法。直到這裏,如果我在Select2選項中逐一選擇它們,我沒有任何問題,我按提交,所有事情都按照它的順序進行。

事情是當頁面加載時:我可以看到最後一個保存的選項的默認值,但如果我按提交,沒有從列表中選擇任何東西,我期望相同的值將通過Post方法,但沒有...它在空白處,刪除保存的最後一個選項。

換句話說,這件事的唯一方法是每次選擇一個選項(或多個選項),如果我不選擇,則不會發送默認選項。

Here's我的代碼的例子,所以你可以檢查出來,並給我一個手:

..... 
<title>page1</title> 
<script type="text/javascript"> 
    $(document).ready(function(){ 
     $(".myselect").select2(); 
    }); 
</script> 
</head> 
<body> 
<?php 
$previouschoice="This is one This is two"; //this variable is populated with a mysqli query. 
?> 
<form method="post" action="page2.php"> 
      <select id="test" class="myselect" name="mychoices[]" multiple="multiple"> 
       <option value="<?php echo $previouschoice;?>" selected="selected"><?php echo $previouschoice;?></option> 
       <option value="This is one">This is one</option> 
       <option value="This is two">This is two</option> 
       <option value="This is three">This is three</option> 
      </select> 
</form> 
</body> 

在page2.php中將我的Post值存儲到一個MySQL數據庫以供稍後檢索,抓取和在一個可變的串聯數據,就像這樣:

$mypost =$_POST['mychoices']; 
foreach ($mypost as $a) { 
    $mychoices=$mychoices.' '.$a; 
} 

所以$mychoices最終將$previouschoice回到page1.php中

還嘗試了其他帖子中建議的initSelection,使用完全相同的輸出。這是:

$(".myselect").select2().select2("val", null); 
    $('#test').val('<?php echo $previouschoice;?>').trigger('change'); 

請幫忙!

+0

我不明白你的問題是什麼,你可以有另一種嘗試解釋 – RiggsFolly

+0

我會通過改變'NAME =「mychoices []」啓動'爲'NAME =「mychoices」'因爲我認爲這會在數組內部生成一個數組,這可能會令人困惑 – RiggsFolly

+0

但是,如果您想知道在$ _POST數組中發送的內容,請在代碼中添加一個'print_r($ _ POST);'並將其轉儲讀取格式 – RiggsFolly

回答

0

我不確定我完全理解你的問題,但我會給它一個鏡頭。

  1. 你可以從選擇,提交和檢索確定幾個項目。
  2. 當頁面重新加載時,您可以閱讀之前的選擇
  3. 重新提交「忘記」選擇內容,除非您再次選擇相同的選項。

如果這對你的作品,永遠選擇,我會添加類似

<?php if(in_Array("This is one", $previousChoice) echo "selected"> 

在這裏您將替代「這是一個」必要。這當然假設$ previousChoice是一個數組。

這樣,您首先選擇的選項將自動重新選擇,並且應該在您再次提交表單時繼續進行。

韋恩

+0

$ previousChoice不是數組,它是一個包含多個先前選項組合的字符串,所以它就像是一個Select2列表的新選項。 – azirion