2014-10-17 120 views
0

如何从添加的输入字段中将值添加到数据库中?当运行此代码表中示出了 “阵列”,而不是..输入值将多个值插入数据库中的一个属性中

Javascript来添加输入字段

<script> 
$(document).ready(function() { 
    var max_fields  = 25; //maximum input boxes allowed 
    var wrapper   = $(".input_fields_wrap"); //Fields wrapper 
    var add_button  = $(".add_field_button"); //Add button ID 

    var x = 1; //initial text box count 
    $(add_button).click(function(e){ //on add input button click 
     e.preventDefault(); 
     if(x < max_fields){ //max input box allowed 
      x++; //text box increment 
      $(wrapper).append('<div><label for="no_telefon[]">No.Telefon: </label><input type="text" name="no_telefon[]" id="no_telefon[]" class="required input_field"><label for="lokasi[]">Lokasi: </label><input type="text" name="lokasi[]" id="lokasi[]" class="required input_field"><a href="#" class="remove_field">Remove</a></div>'); //add input box 
     } 
    }); 

    $(wrapper).on("click",".remove_field", function(e){ //user click on remove text 
     e.preventDefault(); $(this).parent('div').remove(); x--; 
    }) 
}); 

</script> 

输入字段形式

   <fieldset> 

       <div class="input_fields_wrap"> 
       <h3 class="add_field_button"><a href="">Add More Fields</a></h3> 



       <label for="no_telefon[]">No.Telefon:</label> <input type="text" id="no_telefon[]" name="no_telefon[]" class="required input_field" onkeyup="this.value=this.value.replace(/[^0-9.]/g,'')" required/> 
       <label for="lokasi[]">Lokasi:</label> <input type="text" id="lokasi[]" name="lokasi[]" class="required input_field" required/> 


       </div> 

将文件插入数据库的PHP文件

<?php 
require("dbase.php"); 

if ($_POST) { 

    $id_akaun   = isset($_POST['id_akaun'])   ? $_POST['id_akaun'] : ''; 
    $daerah    = isset($_POST['daerah'])   ? $_POST['daerah'] : ''; 
    $kategori_akaun  = isset($_POST['kategori_akaun']) ? $_POST['kategori_akaun'] : ''; 
    $bahagian   = isset($_POST['bahagian'])   ? $_POST['bahagian'] : ''; 
    $jenis    = isset($_POST['jenis'])   ? $_POST['jenis'] : ''; 
    $no_telefon   = isset($_POST['no_telefon'])  ? $_POST['no_telefon'] : ''; 
    $lokasi    = isset($_POST['lokasi'])   ? $_POST['lokasi'] : ''; 
    $id     = isset($_POST['id'])    ? $_POST['id'] : ''; 


    $sql = mysql_query("INSERT INTO maklumat_akaun VALUES ('', '$id_akaun' , '$daerah' , '$kategori_akaun' , '$bahagian')"); 
    $sql = mysql_query("INSERT INTO detail_akaun VALUES ('', '$jenis' , '$no_telefon' , '$lokasi', '".mysql_insert_id()."')"); 





    echo "<script type='text/javascript'> alert('AKAUN BERJAYA DIDAFTARKAN')</script> "; 
    echo "<script type='text/javascript'>window.location='lamanutama.php'</script>"; 
} 


?> 
+0

因为您尝试插入的变量是数组。迭代它们并分别插入它们 – Felk 2014-10-17 00:41:00

+0

我该怎么做?我的意思是应该使用什么方法,或者我应该研究哪个主题? @Felk – itsfawwaz 2014-10-17 00:51:26

+0

研究'foreach'循环。 – Barmar 2014-10-17 00:52:01

回答

0

你需要使用一个循环来处理所有的no_telefonlokasi领域:

$sql = mysql_query("INSERT INTO maklumat_akaun VALUES ('', '$id_akaun' , '$daerah' , '$kategori_akaun' , '$bahagian')"); 
$akaun_id = mysql_insert_id(); 
foreach ($no_telefon AS $i => $telefon) { 
    $sql = mysql_query("INSERT INTO detail_akaun VALUES ('', '$jenis' , '$telefon' , '$lokasi[$i]', '$akaun_id')"); 
} 

这将在detail_akaun创建一个单独的一行每对no_telefonlokasi

顺便说一句,您正在创建与id="no_telefon[]"id="lokasi[]"重复的ID。 ID应该是唯一的。所有带有for="no_telefon[]for="lokasi[]的标签都将附加到第一行中的字段,而不是后面的字段。请使用ID和for,而不是使用ID和for,尝试在输入周围包裹您的标签:

<label>No.Telefon: <input type="text" name="no_telefon[]" class="required input_field" onkeyup="this.value=this.value.replace(/[^0-9.]/g,'')" required/></label> 
+0

变量的名称与数据库中列的名称无关。对于任何没有唯一ID的输入标签,您应该使用换行标签方法。如果您愿意,您也可以将其用于其他输入。请参阅http://stackoverflow.com/questions/18432376/what-does-for-attribute-do-in-label-tags/18432439#18432439 – Barmar 2014-10-17 01:33:32

+0

它的工作,感谢您的帮助! – itsfawwaz 2014-10-17 01:33:55

0

数组数据不能保存在SQL中,因为它是一种php数据类型,不能轻易转换为字符串。

所以你需要自己做转换。

一个简单的例子:

$no_telefon_string = ""; 
foreach($no_telefon as $telefon) 
{ 
    $no_telefon_string .= $telefon.","; 
} 
$no_telefon_string = rtrim($no_telefon_string, ","); 

现在你可以将$ no_telefon_string变量到数据库中。

要打开$ no_telefon_string回一个数组,你可以使用:

$no_telefon = explode($no_telefon_string, ","); 

$ no_telefon现在将您最初从形式后得到的数组。

+0

为什么你写一个循环而不是使用'implode()'? – Barmar 2014-10-17 00:54:56

+0

另外,不要鼓励在数据库中放置逗号分隔的列表。 – Barmar 2014-10-17 00:55:28

+0

就是这样吗?!哦,如果只有我知道的人。非常感谢! – MicroParsec 2014-10-17 00:57:19