如何在javascript和php中正确插入

时间:2014-04-16 17:06:06

标签: javascript php sql input insert

您好。我有一个添加行的功能。我刚刚添加了第二个输入,但我不知道如何正确插入它。

我的JS代码:

<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
var counter = 0;
$(function(){
    $('p#add_field').click(function(){
        counter += 1;
        $('#container').append(
                '<strong> No.        ' + counter + '</strong>' 
                + 
                '<strong>       ........................        Client ' + counter + '</strong><br />' 
                +
                '<input id="field_' + counter + '" name="dynfields[]' + '" type="text" />'
                +
                '<input id="field_' + counter + '" name="dynfieldstest[]' + '" type="text" /><br />'

                );



    });
});

</script> 

我如何插入:

if (isset($_POST['submit_val'])) {
    if ($_POST['dynfields']) {

        // HERE WHERE IT'S DOEST WORK //

        foreach (array_combine( $_POST['dynfields,dynfieldstest'] as $key=>$value, $key=>$value1 )) {

            $values = mysql_real_escape_string($value);
            $values1 = mysql_real_escape_string($value1);
            $query = mysql_query("INSERT INTO recherche (hobbies,client) VALUES ('$values', '$values1')", $connection );  

        }
    }

    echo "<i><h2><strong>" . count($_POST['dynfields']) . "</strong> Info Added</h2></i>";
    mysql_close();
}

感谢您的帮助!

2 个答案:

答案 0 :(得分:0)

我猜你正在寻找一种可随着越来越多的输入添加到表单中而扩展的解决方案。这是一种更简单的方法。它假设每个dynfields会有一个对应的dynfieldstest,我们可以计算dynfields的数量以控制循环。

if (isset($_POST['submit_val'])) {

    if ($_POST['dynfields']) {

    $post_count = count($_POST['dynfields']);

        for ($i=0;$i<$post_count;$i++) {

            $values = mysql_real_escape_string($_POST['dynfields'][$i]);
            $values1 = mysql_real_escape_string($_POST['dynfieldstest'][$i]);
            $query = mysql_query("INSERT INTO recherche (hobbies,client) VALUES ('$values', '$values1')", $connection );  

        }
    }

    echo "<i><h2><strong>" . count($_POST['dynfields']) . "</strong> Info Added</h2></i>";
    mysql_close();
}

此外,是时候停止使用已弃用的mysql函数了。仅切换到mysqli用于MySQL,或者如果切换到PDO,则可以与MySQL以及许多其他数据库类型(MSSQL,Oracle,PostgreSQL,SQLite等)进行交互。

答案 1 :(得分:0)

您应该一次插入所有新行。 并且将来使用mysqli或PDO,而不是旧的mysql_ *函数。

<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
var counter = 0;
$(function(){
    $('p#add_field').click(function(){
        counter += 1;
        $('#container').append(
                '<strong> No.        ' + counter + '</strong>' 
                + 
                '<strong>       ........................        Client ' + counter + '</strong><br />' 
                +
                '<input id="field_' + counter + '" name="dynfields[]' + '" type="text" />'
                +
                '<input id="field_' + counter + '" name="dynfields[]' + '" type="text" /><br />'

                );



    });
});

</script> 

PHP:

if (isset($_POST['submit_val'])) {
    if (is_array($_POST['dynfields'])) {
        foreach($_POST['dynfields'] as $key=>$value) 
        {

            $hobbies = mysql_real_escape_string($value);
            $client = mysql_real_escape_string($key);
            $queryStr[] = "('$hobbies', '$client')";  


        }

        $query = mysql_query("INSERT INTO recherche (hobbies,client) VALUES ".implode(',',$queryStr), $connection );  
    }
    echo "<i><h2><strong>" . count($_POST['dynfields']) . "</strong> Info Added</h2></i>";
    mysql_close();
}

要添加新输入,只需添加

即可
            +
            '<input id="field_' + counter + '" name="dynfields[]' + '" type="text" /><br />'

到js