在数据库的1个属性中插入了多个值

Multiple values inserted into 1 attribute in database

本文关键字:插入 数据库 1个 属性      更新时间:2023-09-26

如何将添加的输入字段中的值获取到数据库中?当我运行此代码时,表显示的是"数组",而不是输入的值。。

添加输入字段的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>";
}

?>

您需要使用一个循环来处理所有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,而是尝试将标签包装在输入上:

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

数组数据无法保存在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现在将是您最初从表单帖子中获得的数组。