私は13のフィールドと約を持つhtml
フォームを持っています。データベースからレコードを取得する<input>
を使用して作成された 92 の異なる行。何らかの理由で、この 1 つのフィールドに名前を割り当てると、ボタンが設定されなくなります。名前を変更しても問題ありませんが、名前を削除すると、他のフィールドが正常に更新されるようになります。php
mySQL
<input type="submit" name="update_submit">
これが私のフォームコードのスニペットです($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;
}
私は完全に途方に暮れており、午前中ずっとトラブルシューティングを行っていました。助けていただければ幸いです。
更新:変更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'");`
これは、私の 1 つが で<input>
はないことを意味していると思いますarray
よね? もしそうなら、私はそれがどのようになるのかわかりません.table
がそこにあり、database
.
更新 2:何かわかったと思いますが、それを修正する方法がわかりません。name="Lic_Auth_Exp"
andを残してから、他のフィールドから 2 つの異なる属性をname="Lic_Comp_Exp"
削除しようとしました。それをした後、コードを実行したようです。したがって、問題はこれらの特定のフィールドが原因ではなく、11 を超える値が渡されていることが原因のようです。ファイルを調べて、そのようなことに制限があるかどうかを確認しましたが、何も見当たりませんでした。誰がこれを引き起こしているのか知っていますか??name
input
$_POST
php.ini