Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 为什么html文本输入名称会导致未设置提交输入?_Php_Html_Mysql - Fatal编程技术网

Php 为什么html文本输入名称会导致未设置提交输入?

Php 为什么html文本输入名称会导致未设置提交输入?,php,html,mysql,Php,Html,Mysql,我有一个html表单,有13个字段和大约92个不同的行,使用php从mySQL数据库中提取记录。由于某种原因,当我将一个名称分配给这个字段时,它会导致我的按钮未设置。如果我更改名称,这无关紧要,但是如果我删除名称,它将允许其他字段正常更新 以下是我的表单代码片段($i自动递增): 在上面 <form method="post" action="process_form.php"> <table> <tr> 第31行是我的 `$sql = ("UPDATE e

我有一个
html
表单,有13个
字段和大约92个不同的行,使用
php
mySQL
数据库中提取记录。由于某种原因,当我将一个名称分配给这个字段时,它会导致我的
按钮未设置。如果我更改名称,这无关紧要,但是如果我删除名称,它将允许其他字段正常更新

以下是我的表单代码片段(
$i
自动递增):

在上面

<form method="post" action="process_form.php">
<table>
<tr>
第31行是我的

`$sql = ("UPDATE employee SET Emp_Name = '$name[$i]', Emp_Phone = '$phone[$i]', Emp_Start_Date = '$start[$i]', Paid_Leave = '$leave[$i]', Emp_ACA = '$aca[$i]', Lic_Auth_ID = '$licauth[$i]', Lic_Auth_Exp = '$authexp[$i]', Lic_Comp_ID = '$liccomp[$i]', Lic_Comp_Exp = '$compexp[$i]', MiscP_ID = '$miscp[$i]', Pos_ID = '$position[$i]', Emp_Active = '$active[$i]' WHERE Emp_ID = '$update'");`
我想这意味着我的一个
不是
数组,对吗?如果是这样,我不知道这是怎么回事,
表就在那里,它是从
数据库动态创建的

更新2:我想我已经解决了一些问题,但我不知道如何解决它。我试图离开
name=“Lic\u Auth\u Exp”
name=“Lic\u Comp\u Exp”
,然后从其他
输入
字段中删除两个不同的
name
属性。这样做之后,它似乎运行了代码。所以问题不在于这些特定字段,而在于传递的值超过了11个。我查看了
php.ini
文件,看看这样的东西是否有任何限制,但我没有看到任何东西。有人知道这是什么原因吗

  • 在php中转储
    $\u POST
    ,检查它是否符合您的期望

  • 验证表单结构。是否所有输入都在同一个标签内

  • 延长条件

    if(isset($_POST['update_submit']) && $_POST['update_submit']=="you-given-name-just-null")
    

    我打赌我花了超过14个小时来解决这个问题,而且@angel也很友好地尝试了深入研究。我终于明白了

    问题是
    max\u input\u vars
    在我的
    php.ini
    文件中设置得不够高。更大的问题是,在您添加之前,该设置实际上并不存在,因此当您查看该文件时,您首先不会看到任何设置限制的内容

    所以,概括一下。这个问题不是因为
    name=“
    属性,就像我被引导去相信的那样。当我从两个不同的输入字段中删除另外两个名称时,我发现它突然工作正常,只有当我有这些额外的字段时,它才会工作。下一条线索来自@Jakub Sacha,他建议使用
    var\u dump($\u POST)
    函数。当我开始查看这些数字时,它终于点击了一下,传递的字段总数加起来达到了1000个。在谷歌搜索了
    PHP1000 Limit
    之后,我发现了这个
    max\u input\u vars
    设置


    希望这将帮助其他人解决问题,并避免数小时的故障排除

    我不知道你说的“dump
    $\u POST
    ”是什么意思。表单结构我相信一切都很好,每个
    都在它自己的
    中,它们都在
    中。在php中创建var\u dump($\u POST),并检查值(在php代码中)+1以获得我不知道的
    var\u dump($\u POST)
    想法!结果正如预期的那样,我每个输入得到91个结果(我得到了91行),但它突然在Pos\u ID处停止,只返回90个结果。对于
    $\u POST['activeBox']
    ,没有结果,这是不是有什么问题?我被纠正了,我再次运行了它(我有一些输入被注释掉了),实际上每个输入只返回83行,而应该有91行。我想我们找到了什么!虽然我很欣赏这个建议,但为什么仅仅删除
    name=“Lic\u Comp\u Exp”
    就可以让其他一切正常工作呢?这一特定的输入名称是什么导致了问题?当您提到name属性时,在呈现表或输入元素时是否出现任何错误?@Angel否,我刚刚在firefox中选中了“查看页面源”,没有显示错误。好主意,但我没有想到。你能为firefox添加firebug并检查是否有抛出的错误吗?我确实安装了firebug,没有太多使用它,但在控制台下它不会显示任何错误。当你指定了name属性时,你的按钮不会显示或工作,否则它会显示。我说得对吗?
    if(isset($_POST['update_submit']))
    {
    $id = $_POST['Emp_ID'];
    $name = $_POST['Emp_Name'];
    $phone = $_POST['Emp_Phone'];
    $start = $_POST['Start_Date'];
    $leave = $_POST['Paid_Leave'];
    $aca = $_POST['Emp_ACA'];
    $licauth = $_POST['Lic_Auth_ID'];
    $authexp = $_POST['Lic_Auth_Exp'];
    $liccomp = $_POST['Lic_Comp_ID'];
    $compexp = $_POST['Lic_Comp_Exp'];
    $miscp  = $_POST['MiscP_ID'];
    $position = $_POST['Pos_ID'];
    $active = $_POST['activeBox'];
    $i = 0;
    
    foreach($id as $update) 
            {
            if (!isset($active[$i])) { $active[$i] = 0; }
            $sql = ("UPDATE employee SET Emp_Name = '$name[$i]', Emp_Phone = '$phone[$i]', Emp_Start_Date = '$start[$i]', Paid_Leave = '$leave[$i]', Emp_ACA = '$aca[$i]', Lic_Auth_ID = '$licauth[$i]', Lic_Auth_Exp = '$authexp[$i]', Lic_Comp_ID = '$liccomp[$i]', Lic_Comp_Exp = '$compexp[$i]', MiscP_ID = '$miscp[$i]', Pos_ID = '$position[$i]', Emp_Active = '$active[$i]' WHERE Emp_ID = '$update'");
    
            echo "SQL: " . $sql . "<br>";
    
            if(!$result_employee_update = $mysqli->query($sql))
                {
                $errors[] = "There was an error updating the employee table. MySqli Error Number: " . $mysqli->errno . "";
                goto end;
                }
            $i++;
            }
    goto redirect;
    }
    
    "Notice: Undefined offset: 83 ... on line 31"
    
    `$sql = ("UPDATE employee SET Emp_Name = '$name[$i]', Emp_Phone = '$phone[$i]', Emp_Start_Date = '$start[$i]', Paid_Leave = '$leave[$i]', Emp_ACA = '$aca[$i]', Lic_Auth_ID = '$licauth[$i]', Lic_Auth_Exp = '$authexp[$i]', Lic_Comp_ID = '$liccomp[$i]', Lic_Comp_Exp = '$compexp[$i]', MiscP_ID = '$miscp[$i]', Pos_ID = '$position[$i]', Emp_Active = '$active[$i]' WHERE Emp_ID = '$update'");`
    
    if(isset($_POST['update_submit']) && $_POST['update_submit']=="you-given-name-just-null")