基于js点击

时间:2016-05-11 16:33:10

标签: javascript php jquery mysql

我对js很新。这里我有一个js脚本,在点击时添加一个文本框输入,用于使用基于php的mysql查询数据库。每个新添加的文本框都有一个id名称,其末尾有一个连续的数字,用于从js按钮添加的文本框的数量,如id_0,id_1等。我想知道是否可以单独为每个连续的文本框运行php查询。我遇到的问题是跟踪已添加了多少新文本框以了解我应该运行多少次查询迭代,因为点击数是一个js变量。有没有办法根据js点击次数,特别是js变量迭代php查询? (或者我想以错误的方式做这件事吗?)

添加输入框的脚本:

<input id="btnAdd" type="button" value="Add" />
<br />
<br />
<div id="TextBoxContainer">
</div>
<br />
<input id="btnGet" type="button" value="Get Values" />

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<script type="text/javascript">
$(function () {
    var click_number = 0;
    $("#btnAdd").bind("click", function () {
        var div = $("<div />");
        click_number++;
        console.log(click_number);
        div.html(GetDynamicTextBox("id"+click_number));
        $("#TextBoxContainer").append(div);
    });
    $("body").on("click", ".remove", function () {
        $(this).closest("div").remove();
        click_number--;
        console.log(click_number);
    });
});
function GetDynamicTextBox(value0) {

    return '<label>Input &nbsp;<textarea rows="1" name="id_'+ value0 +'"><?php echo $_POST["id_'+ value0 +'"]; ?></textarea></label>&nbsp;';

}
</script>

对于php部分,我将$ _POST变量转换为php变量并对匹配php变量的数据库运行简单查询到特定列。到目前为止,我只能知道会有多少$ _POST变量。

2 个答案:

答案 0 :(得分:0)

我这样做的方式(可能不是最好的方法)是隐藏的HTML输入,其中包含您创建的文本框的数量。每次在JS中添加新文本框时,都会增加隐藏输入的值。

然后你可以在PHP中创建一个循环来获取每个POST元素。

答案 1 :(得分:0)

如果您动态编写查询,则无需知道有多少$_POST个变量。只需确保所有POST索引都与表中的列名匹配:

例如,如果你有:

$_POST['name']="bob"
$_POST['age'] = "102"

您可以动态地将其转换为查询..

// First, for security, we should create an array 
// with column names to check against to avoid SQL injection
$tableColumns = array("name", "age", "birthday", "favorite_color");

// This will contain the data that we want to insert
$insertables = array();

// Get the data from the post variables that 
// are named after columns in our table
foreach($_POST as $k->$v) 
    if(in_array($k, $insertables)) 
        $insertables[$k] = $v;

// Create a a query dynamically
// I'm assuming you're using PDO since you didn't specify
$sql = $pod->prepare("INSERT INTO `table` (`".implode("`, `", array_keys($insertables))."`) VALUES (:".implode(", :", array_keys($insertables)).")");

// Execute it
$sql->execute($insertables);

现在您可以发送所需的任何POST数据,如果POST键作为表中的列存在,它将被插入。