【问题标题】:How can i insert dynamic textbox values into database table on same ID using php?如何使用 php 将动态文本框值插入到相同 ID 的数据库表中?
【发布时间】:2015-03-13 12:54:44
【问题描述】:

我需要将动态文本框值插入到同一 id 的数据库表中,现在我可以只在不同的用户 id 上插入值。

当我尝试将动态文本框值插入 id 1 上的数据库表中时,动态文本框值将变为不同的 id,如 2、3、4 等。并且也成为 id 1 的零字段值。@ 987654321@

这是我的 html 和 javascript 代码:

文件名:index.php

<!DOCTYPE html>
<html>

    <head>
    <SCRIPT src="http://code.jquery.com/jquery-2.1.1.js"></SCRIPT>
        <style>
        table, th, td {
        border: 1px solid black;
        border-collapse: collapse;
        }
        th, td {
        padding: 5px;
        }
        table{
        background-image:  #eee;
        }

        </style>

    </head>

<body>

    <form name="registration" id="regis" method="post" enctype="multipart/formdata">
        <table>

                <th colspan="1">
                <th>Details Mahall members</th>
                </th>

            <tr>
                <td>Name of the person:</td>
                <td>
                    <input type="text" name="first_name1" id="fname1" placeholder="Enter name" value=""/>
                </td>
            </tr>


            <tr>
                <td>Name of the father:</td>
                <td>
                    <input type="text" name="first_name2" id="fname2" placeholder="Enter name" value=""/>
                </td>
            </tr>

            <tr>
                <td>Name of the mother:</td>
                <td>
                    <input type="text" name="first_name3" id="fname3" placeholder="Enter name" value=""/>
                </td>
            </tr>



            <tr>
                <td>Details of family members:</td><td></td>

            </tr>

            <tr>
                <td></td>
                <td>
                    <table width="100%">
                        <tr>
                            <th><center>No:</center></th><th><center>Name</center></th><th><center>Age</center></th><th><center>Relation<strong></th><th><center>Occupation<strong></th>
                        </tr>
                    </table>
                </td>
            </tr>

            <tr>
                <td></td>

                <td>
                <DIV id="product">
                        <DIV class="product-item float-clear" style="clear:both;">

                            <?php require_once("sub.php") ?>

                        </DIV>
                    </DIV></td></tr>
                <tr><td></td><td> <DIV class="btn-action float-clear">
                    <input type="button" name="add_item" value="Add More" onClick="addMore();" />
                    <input type="button" name="del_item" value="Delete" onClick="deleteRow();" />
                    <span class="success"><?php if(isset($message)) { echo $message; }?></span>
                </DIV>
                </td>


            </tr>

            <tr>
            <td>

                <input type="submit" name="save" value="Submit"/>
                <input type="reset" value="cancel"/>

            </td><td></td>
            </tr>
        </table>


    </form>
    <SCRIPT>
function addMore() {
    $("<DIV>").load("sub.php", function() {
            $("#product").append($(this).html());
    }); 
}
function deleteRow() {
    $('DIV.product-item').each(function(index, item){
        jQuery(':checkbox', this).each(function () {
            if ($(this).is(':checked')) {
                $(item).remove();
            }
        });
    });
}
</SCRIPT>
</body>
</html>

文件名:sub.php

<DIV class="product-item float-clear" style="clear:both;">
<DIV class="float-left"><input type="checkbox" name="item_index[]" /></DIV>
<table cellspacing="2"> 
 <tr>

<td><DIV class="float-left"><input type="text" name="name1[]" style="width:60px"/></DIV></td>
<td><DIV class="float-left"><input type="text" name="name2[]" style="width:90px"/></DIV></td>
<td><DIV class="float-left"><input type="text" name="name3[]" style="width:62px"/></DIV></td>
<td><DIV class="float-left"><input type="text" name="name4[]" style="width:130px"/></DIV></td>
<td><DIV class="float-left"><input type="text" name="name5[]" style="width:178px"/></DIV></td>
</DIV>
</tr>
</table>

这是我插入数据库的 php 代码

<?php
$username="root";
$password="sha12345";
$hostname="localhost";

$dbhandle = mysql_connect($hostname,$username,$password) or die("Could not connect to database");

$select = mysql_select_db("sha", $dbhandle);


    if(isset($_POST['save']))
{
    $personname = $_POST['first_name1'];
    $fathername = $_POST['first_name2'];
    $mothernname = $_POST['first_name3'];


    mysql_query("INSERT INTO sha(Name_person,Name_father,Name_mother)   VALUES ('$personname','$fathername','$mothernname')");  



        if(!empty($_POST["save"])) {


        $itemCount = count($_POST["name1"]);
        $itemValues=0;
        $query = "INSERT INTO sha (no_members,name_members,age_members,relation_members,occupation_members) VALUES ";
        $queryValue = "";
        for($i=0;$i<$itemCount;$i++) {
            if(!empty($_POST["name1"][$i]) || !empty($_POST["name2"][$i]) || !empty($_POST["name3"][$i]) || !empty($_POST["name4"][$i]) || !empty($_POST["name5"][$i])) {
                $itemValues++;
                if($queryValue!="") {
                    $queryValue .= ",";
                }
                $queryValue .= "('" . $_POST["name1"][$i] . "', '" . $_POST["name2"][$i] . "', '" . $_POST["name3"][$i] . "', '" . $_POST["name4"][$i] . "', '" . $_POST["name5"][$i] . "')";
            }
        }
        $sql = $query.$queryValue;
        if($itemValues!=0) {
            $result = mysql_query($sql);
            if(!empty($result)) $message = "Added Successfully.";
        }
    }
    }
    mysql_close();

?>

【问题讨论】:

    标签: javascript php jquery mysql database


    【解决方案1】:

    您可以在 HTML 中输入数组,例如 name="first_name[]"

    <input type="text" name="first_name[]" id="fname1" placeholder="Enter name" value=""/>
    <input type="text" name="first_name[]" id="fname2" placeholder="Enter name" value=""/>
    <input type="text" name="first_name[]" id="fname3" placeholder="Enter name" value=""/>
    

    然后在 php 中获取时,你可以写

    print_r($_POST['first_name']);
    

    这将包含数组中的所有值

    【讨论】:

    • 真的很感谢你帮助我bheem raj,我跟着你编辑了,但现在没有插入值,我应该在html中创建文本框以插入数据库表吗?
    【解决方案2】:

    好的,您可以按照以下步骤操作

    创建表格用户

    CREATE TABLE users(
       id INT NOT NULL AUTO_INCREMENT,
       Name_person VARCHAR(50) NOT NULL,
       Name_father VARCHAR(50) NOT NULL,
       Name_mother VARCHAR(50) NOT NULL,
       PRIMARY KEY ( id )
    );
    

    创建表family_members

    CREATE TABLE family_members(
       id INT NOT NULL AUTO_INCREMENT,
       user_id INT NOT NULL,
       no_members TINYINT(2) NOT NULL DEFAULT 1,
       name_members VARCHAR(50) NOT NULL,
       age_members VARCHAR(50) NOT NULL,
       relation_members VARCHAR(50) NOT NULL,
       occupation_members VARCHAR(100) NOT NULL,
       PRIMARY KEY ( id )
    );
    

    然后在你的 PHP 代码中

    mysql_query("INSERT INTO users(Name_person,Name_father,Name_mother) VALUES ('$personname','$fathername','$mothernname')");  
    
    
    $user_id = mysql_insert_id();
    
    $query = "INSERT INTO family_members (user_id,no_members,name_members,age_members,relation_members,occupation_members) VALUES ";
    $queryValue = "";
    for($i=0;$i<$itemCount;$i++) {
        if(!empty($_POST["name1"][$i]) || !empty($_POST["name2"][$i]) || !empty($_POST["name3"][$i]) || !empty($_POST["name4"][$i]) || !empty($_POST["name5"][$i])) {
            $itemValues++;
            if($queryValue!="") {
                $queryValue .= ",";
            }
            $queryValue .= "('".$user_id. "', '" . $_POST["name1"][$i] . "', '" . $_POST["name2"][$i] . "', '" . $_POST["name3"][$i] . "', '" . $_POST["name4"][$i] . "', '" . $_POST["name5"][$i] . "')";
        }
    }
    $sql = $query.$queryValue;
    

    此外,您还可以通过 JOIN 轻松获取记录,或者只是简单地获取记录

    假设你想获取用户 1 的记录

    $get_user = mysql_query("SELECT * FROM users WHERE id = 1");
    $user = mysql_fetch_assoc($get_user);
    $user_id = $user['user_id'];
    
    
    echo '<table>';
    echo '<tr><th colspan="5">Recod of User '.$user['Name_person'].'</th></tr>';
    $get_user_family = mysql_query("SELECT * FROM family_members WHERE user_id = '$user_id'");
    while ($family = mysql_fetch_assoc($get_user_family))
    {
        echo"<tr><td>".$family['no_members']."</td><td>".$family['name_members']."</td><td>".$family['age_members']."</td><td>".$family['relation_members']."</td><td>".$family['occupation_members']."</td></tr>";
    }
    echo '<table>';
    

    【讨论】:

    • 谢谢,实际上我可以将动态文本框的所有值插入到表格中,但我不能插入相同的id。
    • 谢谢 bheem raj,我可以正确插入第二个查询,但问题在于值转到不同的 id。你现在可以查看我附加的快照,然后你会很容易理解我想问什么.
    • 哦,你应该有两个表,比如说1. users2. fmembers,它们之间应该有one-to-many关系,LIKE:在fmembers中创建新字段user_id .然后将Name_person,Name_father,Name_mother存储在users表中,得到user_id = mysql_insert_id()。使用此user_idno_members etc 等其他信息存储在fmembers 表中。
    • -非常感谢您对我的帮助,现在我可以将第二个查询插入到 family_members 表中,我得到了一个类似 undefined user_id 的错误,但现在我清除了该错误。还列出了两个表中的用户和 family_members 详细信息。非常感谢bheem raj。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-03
    • 1970-01-01
    • 1970-01-01
    • 2017-06-12
    • 1970-01-01
    • 2023-03-17
    相关资源
    最近更新 更多