2016-11-08 48 views
0

如何使用mysql将动态生成的字段值插入到后端。使用jquery和mysql保存多个文本框的值

我试图用文本框添加行,并使用jQuery下拉并自动保存 字段值的定期。

所以我需要取出文本框的ID并下拉,但目前我只有第一个文本框的ID和下拉。

$(function() { 
 
    $("#btnAdd").bind("click", function() { 
 
     AddControl(); 
 
    }); 
 

 
    $("#btnGet").bind("click", function() { 
 
     var values = ""; 
 
     $("input[name=DynamicTextBox]").each(function() { 
 
      values += $(this).val() + "\n"; 
 
     }); 
 
     alert(values); 
 
    }); 
 

 
    $("body").on("click", ".remove", function() { 
 
     $(this).closest("div").remove(); 
 
     var i = 1; 
 
     var Ids = []; 
 
     $('[id*=ddl]').each(function() { 
 
      $(this).attr("id", "ddl" + i); 
 
      Ids.push(i); 
 
      i++; 
 
     }); 
 
     $('[id*=hfDDLId]').val(parseInt($('[id*=hfDDLId]').val()) - 1); 
 
      var resultIds = Ids.join(','); 
 
      $('[id*=hfDropDownIds]').val(resultIds); 
 
     }); 
 
    }); 
 

 
    function AddControl() { 
 
     var Id = parseInt($('[id*=hfDDLId]').val()) + 1; 
 
     var ddlId = "ddl" + (Id); 
 
     var div = $("<div />"); 
 
     div.html(getDropDownList(ddlId, ddlId)); 
 
     div.append(GetDynamicTextBox('')); 
 
     $("#TextBoxContainer").append(div); 
 
     $('[id*=hfDDLId]').val(Id); 
 

 
     var previousDropDownId = $('[id*=hfDropDownIds]').val(); 
 
     if (previousDropDownId != '') { 
 
      $('[id*=hfDropDownIds]').val(previousDropDownId + ',' + Id); 
 
     } else { 
 
      $('[id*=hfDropDownIds]').val(Id); 
 
     } 
 
     return false; 
 
    } 
 

 
    function getDropDownList(name, id) { 
 
     var combo = $("<select></select>").attr("id", id).attr("name", name).attr("runat", "server").attr("class", "class").attr("required", "required"); 
 
     combo.append("<option value=" + "" + ">" + "Select Category" + "</option>"); 
 
     combo.append("<option value=" + "1" + ">" + "1" + "</option>"); 
 
     combo.append("<option value=" + "2" + ">" + "2" + "</option>"); 
 
     combo.append("<option value=" + "3" + ">" + "3" + "</option>"); 
 
     return combo; 
 
    } 
 

 
    function GetDynamicTextBox(value) { 
 
     return '<input name = "DynamicTextBox" id="ingr_name" type="text" value = "' + value + '" required/>&nbsp' + '<input name = "DynamicTextBox" type="text" value="' + value + '" required/>&nbsp' + '<input type="button" value="Remove" class="remove" />' 
 
     }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<form id="form1" runat="server"> 
 
    <div> 
 
     <input id="btnAdd" type="button" value="Add" /> 
 
     <br/> 
 
     <br/> 
 
     <div id="TextBoxContainer"> 
 
      <!--Textboxes will be added here --> 
 
     </div> 
 
     <br/> 
 
     <input type="hidden" id="hfSelectedValue" runat="server" /> 
 
     <input type="hidden" id="hfDropDownIds" value="" runat="server" /> 
 
     <input id="btnGet" type="button" value="Get Values" /> 
 
     <input type="hidden" id="hfDDLId" value="0" /> 
 
    </div> 
 
</form>

代码在后端

Assunimg插入我已经给id为文本框为 'ingr_name' 聊天室张贴一样:

<?php 

$con=mysqli_connect("localhost","root","pass","DB"); 

if (mysqli_connect_errno()) { 
    echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
} 

if (isset($_POST['txt_area']) && $_POST['txt_area'] != '') {  

$ingr_name = mysqli_real_escape_string($con,$_POST['ingr_name']); 
$qry = "Select count(*) as cnt from table"; 
$res = mysqli_query($con,$qry);  
$row = mysqli_fetch_array($res); 
if ($row['cnt'] == 0) { 
    $qry_ins = 'my insert query'; 
} 
?> 
+0

更改您的所有ID到问题解决 – madalinivascu

+0

第一件事情动态生成的文本框,您没有添加该框的ID。您在名称检查的所有框中添加了相同的名称。而不是应用conman类名称,然后根据类名开始每个循环。 –

+0

['.val()'](http://api.jquery.com/val/)只返回单个元素的值。所以你是选择器正在获得一切,但你只能从列表中的第一个元素获得值。相反,制作一些数组,循环遍历所选元素并将每个值推送到相应的数组上。另外,虽然jquery可能能够使用选择器选择元素,但最好确保页面上的每个元素都有唯一的ID。 – Terminus

回答

0

@SachinSachin如果你只想插入一个文本框的值,请尝试下面的代码

function insert_data(){ 
      var url = "insert.php"; 
      $.ajax({ 
        url : url, 
        type: "POST", 
        data: $('#formid').serialize(), 

        success: function(data) 
        { 
         alert(data); 

        } 
       }); 
     } 

在提交按钮上调用此函数,并在insert.php中,像往常一样使用post方法获取值并将它们插入到mysql中。如果是成功打印echo "inserted";其他打印echo "failed";您将在上述insert_data()函数中的警报消息中获得此状态。在这里,我假设你使用PHP作为后端,如果不使用你的语言相同的过程。

+0

我想将所有字段值插入后端...文本框,下拉提交并从后端删除如果我点击删除 – Sach

+0

插入所有文本框和下拉字段首先使用相同的名称为所有文本框和另一个相同的名称为所有下拉列表和表单提交如上。现在在支持你将获得所有的文本框值作为数组与您使用的名称和下拉列表值也相同。而且为了删除,在提交之前不需要后端。 – prudhvi259

+0

可以请你在代码中解释为新的Ajax和前端技术,这个插入不同的文本框应该发生在不同的表..这是我的卡死 – Sach

相关问题