2016-04-14 21 views
1

Bir ekleme düğmesine bastığımda metin kutularına dinamik olarak metin eklemeye çalışıyorum. Veritabanına değerleri kaydeden ve veritabanından silen metin kutularını eklemek/kaldırmak için kod ekledim. Sayfa yüklemesinde, yine metin kutularını dinamik olarak oluşturan ve ona değer katan showitem adlı bir işlev oluşturdum.JQuery'de veriler nasıl güncellenir ve tek kayıt düğmesine veri eklenir?

Artık benim sorunum, herhangi bir metin kutusunu güncellediğimde, veritabanında güncellenmesi ve veritabanına eklenecek yeni bir metin kutusu eklenmesi durumunda. Burada

<HTML> 
<HEAD> 
<style> 
#frmAddHtml{border: #ccc 1px solid; width:550px; margin-left: 400px;} 
.add_button{ margin-top:20px; margin-left:470px; padding:5px; } 
#outer div{ margin-bottom:10px; border: #ccc 1px solid;padding: 5px; width:480px;margin-left: 20px;} 
input[type="text"] {padding: 5px;border:#ccc 1px solid;margin: 0px 20px;width:180px;height: 20px; } 
#save_button {padding: 5px;border:#ccc 1px solid;margin: 0px 20px;width:180px;height: 30px; margin-left: 180px; padding: 5px;} 
</style> 

<SCRIPT src="http://code.jquery.com/jquery-2.1.1.js"></SCRIPT> 
<SCRIPT> 
$(document).ready(function(){ 
    showitem(); 

    $('.add_button').click(function() { 
     var textHTML = '<div><input type="text" name="item_text1" value=""/><input type="text" name="item_text2" value=""/><a href="javascript:void(0);" class="remove_button" title="Remove field"><img src="image/minus.png"/></a></div>'; 
     // $('.item_text:last').clone().insertAfter('.item_text:last'); 
     $('.outer').append(textHTML); 
    }); 

    $('.outer').on('click', '.remove_button', function() {  
     $(this).parent('div').remove(); 
     var item_id = $(this).parent('div').find('input[type="hidden"]').val(); 
     $.ajax({ 
      type : 'POST', 
      url : 'data.php', 
      data : "action=deleteitem&item_id="+item_id, 
      success : function(data) { 
       $("#msg").html(data); 
      } 
     }); 
    }); 

    // $(document).on("keyup", "input[type=text]", function(){ 
    // var $textbox = $(this); 
    // var item_id = $(this).parent('div').find('input[type="hidden"]').val(); 
    // alert($textbox.val()); 
    // alert(item_id); 
    // }); 

    $('#save_button').click(function(){ 
     var x = []; 
     var inputEle = document.getElementsByName("item_text1"); 
     for(var i = 0; i < inputEle.length; i++){ 
      inputField1 = inputEle[i].value; 
      x.push(inputField1); 
     } 
     var y = []; 
     var inputEle1 = document.getElementsByName("item_text2"); 
     for(var i = 0; i < inputEle1.length; i++){ 
      inputField2 = inputEle1[i].value; 
      y.push(inputField2); 
     } 
     var a = []; 
     var addedEle = document.getElementsByClassName("textbox1"); 
     for(var i = 0; i < addedEle.length; i++) { 
      addedfield=addedEle[i].value; 
      a.push(addedfield); 
     } 
     alert(a); 
     // $('input[type="hidden"]').each(function() { 
     // z.push($(this).val()); 
     // }); 
     // alert(z); 

     var data = {'first_array':JSON.stringify(x),'second_array':JSON.stringify(y),'action':"additem"}; 
     $.ajax({ 
      type : 'POST', 
      url : 'data.php', 
      data : data, 
      success : function(data) { 
       $("#msg").html(data); 
       $("#outer").empty(); 
       showitem(); 
      } 
     }); 
    }); 
}); 

function showitem() { 
    $.ajax({ 
     type : 'POST', 
     url : 'data.php', 
     data : "action=showitem", 
     success : function(data) { 
      var item = JSON.parse(data); 
      for (var i = 0; i < item.length; i++){ 
       var textHTML='<div><input type="hidden" name="item_id[]" value="'+item[i].id+'"/><input type="text" id="textbox1" class="textbox1" name="item_text1[]" value="'+item[i].item_text1+'"/><input type="text" name="item_text2[]" value="'+item[i].item_text2+'"/><a href="javascript:void(0);" class="remove_button" title="Remove field"><img src="image/minus.png"/></a></div>'; 
       $('.outer').append(textHTML); 
      } 
     } 
    }); 
} 
</SCRIPT> 
</HEAD> 
<BODY> 
<form name="frmAddHtml" id="frmAddHtml" action="" method="post"> 
    <p id="msg"></p> 
    <a href="#" class="add_button" title="Add field"><img src="image/pus1.png"/></a> 
    <div class="outer" id="outer"> 
     <!-- 
     <div class="item_text"> 
      <input type="text" name="item_text1" value=""/> 
      <input type="text" name="item_text2" value=""/> 
      <a href="#" class="remove_button" title="Remove field"><img src="image/minus.png"/></a> 
     </div> 
     --> 
    </div> 
    <input type="button" id="save_button" class="button" value="Save"> 
</form> 
</BODY> 
</HTML> 

Ve data.php dosyasıdır:

<?php 
if(!mysql_connect("localhost", "root", "1234")) { 
    die(' connection problem ! --> '.mysql_error()); 
} 
if(!mysql_select_db("logindemo")) { 
    die('oops database selection problem ! --> '.mysql_error()); 
} 
$x = 0; 
$action = $_POST['action']; 
if($action == "additem") { 
    $array1 = json_decode($_POST['first_array']); 
    $array2 = json_decode($_POST['second_array']); 
    foreach(array_combine($array1, $array2) as $key => $value) { 
     $query="INSERT INTO tbl_item(item_text1,item_text2) VALUES ('$key','$value')"; 
     if(mysql_query($query)) { 
      $x++; 
     } 
    } 
    if($x >= 1) { 
     echo "".$x." data added"; 
    } else { 
     echo "error"; 
    } 
} else if($action == "showitem") { 
    $query = "select * from tbl_item"; 
    $stmt = mysql_query($query); 
    while($crow = mysql_fetch_array($stmt)) { 
     $resultset[] = $crow; 
    } 
    echo json_encode($resultset); 
} else if($action == "deleteitem") { 
    $id = $_POST['item_id']; 
    $query = "delete from tbl_item where id=$id"; 
    $stmt = mysql_query($query); 
    echo "deleted"; 
} 

Bir tek kurtarmak düğme tıklama güncellenmiş verileri artı yeni eklenen veri deposunu kaydetmek istediğiniz

İşte benim kodudur.

+0

item_text1 nedir? – Patel

+0

data.php item_text1 veritabanı alan adıdır ve komut dosyasında textbox name – suh

cevap

0

Bu işlevi gerçekleştirmenin iki yolu vardır.

  1. Alan değerlerini veritabanından silmek ve düzenlemede her zaman yeni kayıt eklemek için olasılık olup olmadığını denetleyin.

  2. Dizin, giriş yaparken giriş alanı için veritabanı kimliği değeri olarak kullanılır.

< giriş tipi = "metin" adı = "item_text1 [1]" değeri = "10" />
< giriş tipi = "metin" adı = "item_text1 [2]" değeri = "345 "/>
< giriş türü =" text "name =" item_text1 [2] "value =" 345 "/>
.
.
.
.
< giriş type = "text" name = "item_text1 [10]" value = "787" />

,

<input type="hidden" name="max_id " value="10"/> 

Ve için

yeni kayıt ekleme, gizli alanı olarak bir max_id tutun

$('.add_button').click(function() 
    { 
     var count = $("#max_id").val()+1; 
     var textHTML = <input type="text" name="item_text1[count]" value=""/>'; 
     $('.outer').append(textHTML); 
     $("#max_id").val(count); }) 

Veritabı kimliği item_text1'in dizinleri olduğundan, sunucu tarafında yeni bir alan veya mevcut alan olup olmadığını kolayca kontrol edebilirsiniz.

+0

teşekkürler u :) sanırım ikinci yol için gidiyorum – suh

İlgili konular