PHP函数将随机值存储到数据库中

时间:2015-03-10 02:53:29

标签: javascript php jquery html forms

我一直在寻找解决方案,为什么我添加的字段没有正确存储在数据库中并得出结论jquery没有正确添加html字段,这就是为什么它没有提交给渲染php程序来添加字段数据在数据库中。

如需正确演示,请查看代码

我的HTML表单代码写为

<table id="additional_item_numbers">
<thead>
<tr>
<th>Item</th>
<th>&nbsp;Delete</th>
</tr>
</thead>

<tbody>
<tr><td><input type="text" class="form-control form-inps" size="50" name="additional_item_numbers[]" value="123" /></td><td>
<a class="delete_item_number" href="javascript:void(0);">Delete</a>
</td><tr>
</tbody>
</table>

和jquery函数定义为在 ENTER 键按

中的表单中添加新字段
<script type="text/javascript" language="javascript">
$("#additional_item_numbers").keyup(function(event){
    if(event.keyCode == 13){
        $("#additional_item_numbers tbody").append('<tr><td><input type="text" class="form-control form-inps" size="40" name="additional_item_numbers[]" value="" /></td><td>&nbsp;</td></tr>');
            //document.getElementById("form-inps").focus();
            $("#additional_item_numbers").find("input[type='text']").last().focus();
    }
});
</script>

此函数在html表单中完美地添加了一个新字段,但在提交此表单后,字段将随机添加到数据库中。 有时不会向数据库添加单个值,并且会添加一些时间随机值,并且在提交时会添加所有值。 如果在使用jquery函数添加新字段后检查页面的源代码。它不会在源代码中显示那些新添加的字段。 我认为这是由于客户端功能,但它应该在提交后将所有值添加到数据库中。但事实并非如此。如果我去编辑一个项目并添加一些额外的项目编号,那么调用相同的save() php函数,它不会错过先前项目编号的提交表单的单个值,但附加的项目编号行为与上述相同。

经过大量搜索并深入挖掘PHP代码后,我认为jquery没有正确设置新添加字段的名称,因此那些名称设置正确的字段数据将提交给php函数并存储将数据存入数据库但名称未正确设置的数据不会转到php程序,因此它们不会出现在数据库中。

为了更好地理解,我也包括了php函数代码。

我的PHP函数将数据添加到数据库中。

function save($item_id, $additional_item_numbers)
    {
        $this->db->trans_start();

        $this->db->delete('additional_item_numbers', array('item_id' => $item_id));

        foreach($additional_item_numbers as $item_number)
        {
            if ($item_number!='')
            {
                $this->db->insert('additional_item_numbers', array('item_id' => $item_id, 'item_number' => $item_number));
            }
        }

        $this->db->trans_complete();

        return TRUE;
    }

非常感谢任何帮助。

5 个答案:

答案 0 :(得分:0)

您使用的是谷歌浏览器吗?点击F12以启动开发人员工具。您可以检查JavaScript添加到页面的内容。

Internet Explorer和Firefox也可以通过点击F12来提取开发人员工具。

我建议不要在name属性的值中使用[],因为它有点令人困惑。有些人可能会认为这是一个数组或数组的值而不是字符串。

答案 1 :(得分:0)

我对此很新,但我想你可以使用Debugger和Element Inspection来查看你的javascript和html元素。浏览器之间的概念是相同的。

铬:

https://developer.chrome.com/devtools/docs/dom-and-styles https://developer.chrome.com/devtools/docs/javascript-debugging

火狐:

https://developer.mozilla.org/en-US/docs/Tools/Page_Inspector/How_to/Examine_and_edit_HTML https://developer.mozilla.org/en-US/docs/Tools/Debugger

我希望这会有所帮助。

答案 2 :(得分:0)

让我们从基础知识开始:

我没有看到<form action="script.php">

在提交表单之前在FireFox中。右键单击页面上的任意位置并选择“检查元素”

在FireFox检查器窗口中,转到“网络”选项卡,然后单击“重新加载”按钮

提交表格

在FireFox检查器窗口中,单击文件列中的页面

选择页面时出现的框中选择“参数”。 (通常是右侧)

应列出提交的数据。

它将以key:value格式显示:

additional_item_numbers[]:"value submitted is here" 

蓝色的键(字段名称)和橙色的值

答案 3 :(得分:0)

在哪里定义了additional_item_numbers?如果要像变量一样使用它,则需要将此行更改为:

$("#additional_item_numbers tbody").append('<tr><td><input type="text" class="form-control form-inps" size="40" name="' + additional_item_numbers[0] + '" value="" /></td><td>&nbsp;</td></tr>');

答案 4 :(得分:0)

花了很多时间后我得到了问题的根点,这是一个数据库错误,因为数据库表被定义为不存储重复值,每次,我放置一个重复值,它没有存储在数据库,这是程序随机行为的原因。当我提供唯一值时,它正在正确地更新数据库,并且每当值中出现重复时,则在复制值之后,它不会将更多值存储到数据库中。要使其工作,只需更改数据库的结构或

在我的情况下

我的要求是,没有重复,但除了重复值之外的所有值都应该存储在数据库中,我通过更改

来实现这一点
$this->db->insert('additional_item_numbers', array('item_id' => $item_id, 'item_number' => $item_number));

$this->db->query("INSERT IGNORE INTO additional_item_numbers (item_id, item_number) VALUES ('".$item_id."', '".$item_number."')");

感谢大家的回答。竖起大拇指:)