【问题标题】:Prepopulate Values in token input textbox from database using PHP使用 PHP 从数据库中预填充令牌输入文本框中的值
【发布时间】:2016-05-06 10:02:22
【问题描述】:

下面是我的代码,用于使用 tokeninput 在文本中添加选项数量作为标签。在保存按钮时选择标签后,我将选择作为数组并将其保存在数据库中作为美国,爱尔兰在国家列中。保存后想要预填充保存使用jquery方法将数据作为标签。下面是这个过程的参考代码。

     <link rel="stylesheet" type="text/css" href="http://code.jquery.com/ui/1.10.4/themes/ui-lightness/jquery-ui.css"/>
      <link rel="stylesheet" href="styles/token-input.css" type="text/css" />
      <script type="text/javascript" src="src/jquery.tokeninput.js"></script>
<script>
      var country_list=[ 
{id: 1, name: "UK"}, 
{id: 2, name: "CANADA"}, 
{id: 3, name: "IRELAND"}, 
{id: 4, name: "SINGAPORE"}, 
{id: 5, name: "AUSTRALIA"}, 
{id: 6, name: "NEWZEALAND"}, 
{id: 7, name: "SWITZERLAND"}, 
{id: 8, name: "CYPRUS"}, 
{id: 9, name: "FRANCE"}, 
{id: 10, name: "MALAYSIA"}, 
{id: 11, name: "ITALY"}, 
{id: 12, name: "SWEDEN"}, 
{id: 13, name: "GERMANY"}, 
{id: 14, name: "USA"}, 
{id: 15, name: "DUBAI"}, 
{id: 16, name: "SPAIN"}, 
{id: 17, name: "LITHUANIA"}, 
{id: 18, name: "NETHERLANDS"}, 
{id: 19, name: "LATVIA"}, 
{id: 20, name: "SOUTH AFRICA"}, 
{id: 21, name: "OTHERS"} 
]; 
var selected_countries=<?php echo json_encode(explode(",",$country));?>; 
//alert(selected_countries);
var populate_list=[]; 
var index; 
for (index = 0; index < country_list.length; ++index) { 
console.log(country_list[index]); 
if(selected_countries.indexOf(country_list[index].name)>-1){ 

populate_list.push(country_list[index]); 
} 
} 
var prepopulate = { 
prePopulate : populate_list 
}; 

$("#country").tokenInput(country_list,prepopulate);
</script>

HTML 代码

 <input type="text" name="country"  id="country">

为了保存结果,我使用了数据库中所有选定的文本

AJAX 代码

var arr1 = $('#country').tokenInput("get");
            var names1 = [];
            $.each(arr1, function(i, obj)
            {
             names1.push(obj.name);
            });
            var country=names1.join(); 

结果数据库端和 UI 端

【问题讨论】:

    标签: php jquery mysql ajax token


    【解决方案1】:

    来自http://loopj.com/jquery-tokeninput/

    预填充 使用现有数据预填充令牌输入。设置为 JSON 对象数组,例如:[{id: 3, name: "test"}, {id: 5, name: "awesome"}] 预填充输入。

    var country_list=[ 
    {id: 1, name: "UK"}, 
    {id: 2, name: "CANADA"}, 
    {id: 3, name: "IRELAND"}, 
    {id: 4, name: "SINGAPORE"}, 
    {id: 5, name: "AUSTRALIA"}, 
    {id: 6, name: "NEWZEALAND"}, 
    {id: 7, name: "SWITZERLAND"}, 
    {id: 8, name: "CYPRUS"}, 
    {id: 9, name: "FRANCE"}, 
    {id: 10, name: "MALAYSIA"}, 
    {id: 11, name: "ITALY"}, 
    {id: 12, name: "SWEDEN"}, 
    {id: 13, name: "GERMANY"}, 
    {id: 14, name: "USA"}, 
    {id: 15, name: "DUBAI"}, 
    {id: 16, name: "SPAIN"}, 
    {id: 17, name: "LITHUANIA"}, 
    {id: 18, name: "NETHERLANDS"}, 
    {id: 19, name: "LATVIA"}, 
    {id: 20, name: "SOUTH AFRICA"}, 
    {id: 21, name: "OTHERS"} 
    ]; 
    
    var selected_countries=<?php echo json_encode(explode($country));?>; 
    var populate_list=[]; 
    var index; 
    for (index = 0; index < country_list.length; ++index) { 
    
    if(selected_countries.indexOf(country_list[index].name)>-1){ 
    populate_list.push(country_list[index]); 
    } 
    } 
    var prepopulate = { 
    prepopulate : populate_list 
    }; 
    
     $("#country").tokenInput(country_list,prepopulate);
    

    【讨论】:

    • 没错,但我想从数据库值预填充我该怎么做。
    • 你应该只使用 json_encode() 从 php 中编码你的数据。如果你想要详细信息,只需给我你的 php 代码
    • php 代码没什么特别的。我刚刚从 ajax 作为 UK,Ireland 获得了价值,我在国家/地区字段中插入了该值
    • if(isset($_POST['country'])) { $country = $_POST['country']; } 其他 { $country=""; } $l2 = "更新细节 SET career_aspiring = '$career_aspiring' , subject_want_study='$subject_want_study', level = '$level', country = '$country', specific_location ='$specific_location', specific_institution = '$specific_institution' , cmets ='$cmets' WHERE per_email='$per_email'";
    • 首先将所有国家/地区保存在同一列中是个坏主意,因为这样您就不能在JOINS中使用此字段。但是如果您最终决定保留数据库结构,至少您是应该保存 id 而不是名称,以便您以后可以使用它来预填充输入字段
    【解决方案2】:

    将输入文本框更改为以下内容:

    <input type="text" name="country"  id="country" value='<?php echo  $country; ?>' data-country='<?php echo  $country; ?>'>
    

    然后添加 prePopulate 参数,如下所示:

    prePopulate: $('#country').data('country') 
    

    【讨论】:

    • 我想从数据库中获取该值。如图所示。我想从数据库中检索英国和爱尔兰并动态预填充它
    • 它可以在 jquery 本身中完成,但您在数据库中保存国家名称而不是 id。这在前端将不匹配。令牌匹配 id 的
    • 那我该怎么做。给我一些建议
    • 现在我更改它。我只是保存相应数据的 id。我尝试使用上面的代码,但它没有预先填充
    • 您是否检查过您的浏览器控制台是否有任何错误
    猜你喜欢
    • 2013-08-14
    • 1970-01-01
    • 1970-01-01
    • 2012-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多