我有一個html
表格,有13 <input>
字段和約。 92個不同的行,使用php
創建,它從mySQL
數據庫中提取記錄。由於某種原因,當我爲此字段分配一個名稱時,會導致我的<input type="submit" name="update_submit">
按鈕無法設置。如果我更改名稱,這並不重要,但是如果我刪除名稱,它將允許其他字段更新得很好。爲什麼html文本輸入名稱會導致提交輸入無法設置?
這裏是我的表單代碼片段($i
是自動遞增):
往上頂......
<form method="post" action="process_form.php">
<table>
<tr>
再往下......
echo "<td align=\"center\" class=\"edit_emp_comp_exp_cell\"><input type=\"text\" maxlength=\"10\" size=\"10\" id=\"Lic_Comp_Exp$i\" name=\"Lic_Comp_Exp[]\" value=\"" . $emp_query['Lic_Comp_Exp'] . "\">";
<input type="submit" name="update_submit" style="width:100px;" value="UPDATE">
進一步下降。 ..
</tr>
</table>
</form>
這裏是我的process_form:
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;
}
我在總損失整個上午一直在解決此,我非常感謝一些幫助。
UPDATE:當我改變if(isset($_POST['update_submit']))
到if(!isset($_POST['update_submit']))
並運行它,我得到一個錯誤:
"Notice: Undefined offset: 83 ... on line 31"
和第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'");`
我想這意味着我的一個<input>
不是array
,對吧?如果是這樣,我不知道這是怎麼回事,table
在那裏,它從database
動態創建。
UPDATE2:我想我已經弄清楚了一些東西,但我不知道如何解決它。我試着離開name="Lic_Auth_Exp"
和name="Lic_Comp_Exp"
,然後從其他input
字段中刪除兩個不同的name
屬性。這樣做後,它似乎運行的代碼。所以問題不是因爲這些特定的領域,而是因爲有超過11個值被傳遞。我查看了php.ini
文件,看看這樣的東西是否有限制,但我什麼也沒看到。有誰知道可能是什麼原因造成的?
當您提到名稱屬性時,在呈現表或輸入元素時是否出現錯誤? – Angel
@Angel不,我剛剛在Firefox中查看「查看頁面源代碼」,並且沒有顯示錯誤。好主意,但我沒有想到。 –
你可以添加Firefox的螢火蟲,並檢查是否有任何錯誤被拋出? – Angel