希望使用php将两个动态创建的输入值保存在一个mysql行中


Want two dynamically created input values to be saved in one mysql row using php

我想要的是当用户点击一个链接,它应该自动创建两个文本框的时间,从我们可以点击和创建无限数量的文本框,当提交它应该保存所有动态创建的文本框两个文本框在一行。

意思是textboxA textboxB

以这种方式......

我在网上找到了一个代码,它的工作原理与我想要的非常相似…但是当点击链接时,它每次只创建一个文本框,而不是两个文本框。首先,我会给你完整的原始代码…

1) index . php

<?php 
//Include the database class
require("classes/db.class.php");
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>jQuery</title>
<script type="text/javascript" src="js/jquery.js"></script>
<link rel="stylesheet" type="text/css" href="css/css.css" />
<script type="text/javascript">
var count = 0;
$(function(){
    $('p#add_field').click(function(){
        count += 1;
        $('#container').append(
                '<strong>Link #' + count + '</strong><br />' 
                + '<input id="field_' + count + '" name="fields[]' + '" type="text" /><br />' );
    });
});
</script> 
<body>
<?php
//If form was submitted
if (isset($_POST['btnSubmit'])) {
    //create instance of database class
    $db = new mysqldb();
    $db->select_db();
    //Insert static values into users table
    $sql_user = sprintf("INSERT INTO users (Username, Password) VALUES ('%s','%s')",
                        mysql_real_escape_string($_POST['name']),
                        mysql_real_escape_string($_POST['password']) );  
    $result_user = $db->query($sql_user);

    //Check if user has actually added additional fields to prevent a php error
    if ($_POST['fields']) {
        //get last inserted userid
        $inserted_user_id = $db->last_insert_id();
        //Loop through added fields
        foreach ( $_POST['fields'] as $key=>$value ) {
            //Insert into websites table
            $sql_website = sprintf("INSERT INTO websites (Website_URL) VALUES ('%s')",
                                   mysql_real_escape_string($value) );  
            $result_website = $db->query($sql_website);
            $inserted_website_id = $db->last_insert_id();

            //Insert into users_websites_link table
            $sql_users_website = sprintf("INSERT INTO users_websites_link (UserID, WebsiteID) VALUES ('%s','%s')",
                                   mysql_real_escape_string($inserted_user_id),
                                   mysql_real_escape_string($inserted_website_id) );  
            $result_users_website = $db->query($sql_users_website);
        }
    } else {
        //No additional fields added by user
    }
    echo "<h1>User Added, <strong>" . count($_POST['fields']) . "</strong> website(s) added for this user!</h1>";
    //disconnect mysql connection
    $db->kill();
}
?>
<?php if (!isset($_POST['btnSubmit'])) { ?>
    <h1>New User Signup</h1>
    <form name="test" method="post" action="">
        <label for="name">Username:</label>
        <input type="text" name="name" id="name" />
        <div class="spacer"></div>
        <label for="name">Password:</label>
        <input type="text" name="password" id="password" /> 
        <div class="spacer"></div>
        <div id="container">
            <p id="add_field"><a href="#"><span>&raquo; Add your favourite links.....</span></a></p>
        </div>
        <div class="spacer"></div>
        <input id="go" name="btnSubmit" type="submit" value="Signup" class="btn" />
    </form>
<?php } ?>
</body>
</html>

2) db.class.php

<?php
class mysqldb {
    /*
    FILL IN YOUR DATABASE DETAILS BEFORE RUNNING THE EXAMPLE
    */
    var $hostname = "localhost";
    var $username = "root";
    var $password = "mypassword";
    var $database = "unlimited";

    function db_connect() {
        $result = mysql_connect($this->hostname,$this->username,$this->password); 
        if (!$result) {
            echo 'Connection to database server at: '.$this->hostname.' failed.';
            return false;
        }
        return $result;
    }

    function select_db() {
        $this->db_connect();
        if (!mysql_select_db($this->database)) {
            echo 'Selection of database: '.$this->database.' failed.';
            return false;
        }
    }
    function query($query) {
        $result = mysql_query($query) or die("Query failed: $query<br><br>" . mysql_error());
        return $result;
        mysql_free_result($result);
    }
    function fetch_array($result) {
        return mysql_fetch_array($result);
    }
    function num_rows($result) {
        return mysql_num_rows($result);
    }
    function last_insert_id() {
        return mysql_insert_id();
    }
    function kill() {
        mysql_close();
    }
} 
?>
3) css.css

html, input {font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 0.8em;}
body { width: 500px; margin: 50px auto 0 auto; display: block;}
h1 { font-size: 1.5em; color: #333; }
input { font-size: 0.9em; padding: 5px; border: 1px solid #ccc;  margin: 0; display: block;}
a { text-decoration: none; color: #666; font-weight: bold; }
a:hover { color: #ff0000; }
#divTxt { width:400px; padding: 5px;  }
p a img { border: none; vertical-align: middle; }
.spacer {clear: both; height: 10px; }
.btn { width: 90px; font-weight: bold; }
#container { border: 1px solid #ccc; padding: 2px; }
.clear {overflow: hidden;width: 100%;
}

4) JQUERY.js

有了这段代码,我只允许动态创建一个文本框,当点击链接,我之前说过,所以为了使它为我使用,因为我想有两个文本框的我已经编辑了jquery部分在index.php页面如下…

<script type="text/javascript">
var count = 0;
$(function(){
    $('p#add_field').click(function(){
        count += 1;
        $('#container').append(
                '<strong>Link #' + count + '</strong><br />' 
                + '<label for="fields[]' + '">Colour</label><input id="field_' + count + '" name="fields[]' + '" type="text" /><label for="fields2[]' + '">Quantity</label><input id="field2_' + count + '" name="fields2[]' + '" type="text" /><br />');
    });
});
</script>

直到这里我成功了…但主要的问题是我不能保存这两个文本框的一行在mysql表..

请查看此代码并回复我,如果你得到任何答案.....

我肯定会点击绿色箭头,将工作答案作为接受的答案..

请帮助大家......

试试这个

jQuery

<script type="text/javascript">
var count = 0;
$(function(){
    $('p#add_field').click(function(){
        count += 1;
        $('#container').append(
                '<strong>Link #' + count + '</strong><br />' 
                + '<label for="field_'+count+'_1">Name</label><input id="field_'+count+'_1" name="fields[]['name']" type="text" /><label for="field2_'+count+'_2">URL</label><input id="field2_'+count+'_2" name="fields[]['url']" type="text" /><br />');
    });
});
</script>
PHP

        //Insert into websites table
        $sql_website = sprintf("INSERT INTO websites (Website_Name,Website_URL) VALUES ('%s','%s')",
                               mysql_real_escape_string($value['name']),
                               mysql_real_escape_string($value['url']) );  
        $result_website = $db->query($sql_website);
        $inserted_website_id = $db->last_insert_id();

我假设第一列是Website_Name第二列是Website_URL


注::您已经说过它创建了两个文本框,这意味着应该有两个表字段,您希望在其中添加这两个值。但是在你的MySQL查询中,只有一个列插入。

"INSERT INTO websites (Website_URL) VALUES ('%s')"

为正确回答问题指定第二列名称