2017-09-17 49 views
0

好吧,似乎原始請求很混亂,請讓我嘗試重新措辭。我有一個表單,見下面的代碼,用兩個選擇,用戶從可用位置列表(一)移動到選定位置列表(二),並輸入一些其他領域(我包括一個文本字段爲例),我需要能夠看到第一個選擇(One)中的值和第二個列表中的值(兩個)如何提交HTML格式的項目清單

將會有大量值,因此用戶只需單擊或按Ctrl鍵並單擊值他們希望不實際。

<!DOCTYPE html> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
    <title>Test for P1727410</title> 
    <script src="/ref-files/js/jquery-3.2.1.min.js"></script> 
    <script type="text/javascript"> 
     $(function() { 
      function moveItems(origin, dest) { 
       $(origin).find(':selected').appendTo(dest); 
      } 

      function moveAllItems(origin, dest) { 
       $(origin).children().appendTo(dest); 
      } 

      $('#left').click(function() { 
       moveItems('#Two', '#One'); 
      }); 

      $('#right').on('click', function() { 
       moveItems('#One', '#Two'); 
      }); 

      $('#leftall').on('click', function() { 
       moveAllItems('#Two', '#One'); 
      }); 

      $('#rightall').on('click', function() { 
       moveAllItems('#One', '#Two'); 
      }); 
     }); 
    </script> 
</head> 
<body> 
    <h2>Test for P1727410</h2> 
    Available Locations | Selected Locations 
    <form method="POST" action="#"> 
     <select id="One" name="One" multiple="multiple"> 
      <option value="1">Loc1</option> 
      <option value="2">Loc2</option> 
      <option value="3">Loc3</option> 
     </select> 
     &nbsp; 
     &nbsp; 
     <select id="Two" name="Two" multiple="multiple"> 
     </select> 

     <br /> 
     <input type="text" name="something" /><br /> 
     <input type="hidden" name="form" value="1" /> 
     <input type="button" id="leftall" value="<<" /> 
     <input type="button" id="left" value="<" /> 
     <input type="button" id="right" value=">" /> 
     <input type="button" id="rightall" value=">>" /> 
     <br /> 
     <input type="Submit" name="Submit" value="Submit" /> 
    </form> 
    <p> 
    <?php 
     if(isset($_POST['form'])) { 
      echo "<pre>"; 
      print_r($_POST); 
      echo "</pre>"; 
     } 
    ?> 
    </p> 
</body> 
</html> 
+0

爲什麼不選擇全部/無**?這個問題到底是什麼?有什麼選擇? –

+0

@DaniSpringer我有一個位置列表,可能多達892個,我希望能夠從可用位置中選擇某些位置,並將它們添加到選定位置,在我們更新用戶的後端與地點,他們可以選擇從1到892個地點的任何東西,如果他們想要他們都選擇一切都很好,但在很多情況下他們會想要一個子集 –

+0

因此,添加一個搜索框來過濾結果。或其他過濾器。我不明白這個問題是什麼。如果它是「你能爲我做這個」,那麼沒有。 SO幫助解決問題:[mcve] –

回答

-1

這個問題令人困惑,因爲我們不知道你到底想顯示在前端(HTML + JavaScript)的,你要發送到後端(PHP)什麼做什麼,你想在數據庫中插入/更新/刪除什麼?

我認爲最簡單的辦法是:

你應該在你的數據庫3個表:用戶,位置和user_locations。 user_locations應該至少有2列:「user_id」和「location_id」。

HTML:添加一個新的HTML輸入隱藏:

<input type="hidden" id="two_values" name="two_values" value="" /> 

的Javascript:當用戶點擊提交按鈕,從第二個下拉列表中的所有值,並將其發送到服務器。像這樣:

<script> 
    $(document).ready(function() { 
     // on user clicks submit button, this code will be executed first 
     $('form').submit(function() { 
      // we'll take all values of the Two dropdown and put them in 1 string 
      var all_values = ''; 
      $("#Two option").each(function() { 
       if(all_values === '') { 
        all_values += $(this).val(); 
       } else { 
        all_values += ',' + $(this).val(); 
       } 
      }); 
      $('#two_values').val(all_values); 
     }); 
    }); 
</script> 

PHP:獲取two_values,並把它們分成數組。

if(isset($_POST['form'])) { 
    $two_values_arr = explode(',', $_POST['two_values']); 
    // ... 
} 

PHP和MySQL:首先,刪除所有以前的用戶的位置:

$q = 'DELETE FROM `locations` WHERE `user_id` = ' . $user_id; 
// run the $q .. 

然後,做一個循環插入每個值這個用戶

foreach($two_values_arr as $location_id) { 
    $q = 'INSERT INTO `user_locations` (user_id, location_id) VALUES (' . $user_id . ', ' . $location_id . ')'; 
    // run the $q .. 
} 

查看HTML :當用戶查看頁面時,您應該獲取所有用戶的位置,用戶應該打印的位置他兩個下拉列表,以及他沒有的一個下拉列表