我在使用表格保存数据库时遇到了一些麻烦。
基本上,我有一个带复选框的表单,每个复选框都连接到mySQL数据库中的一列,选中时,按下submit按钮,它会保存该复选框的值,如果没有,它将保持为空
Everyting工作正常并保存到数据库,但未选中的框会发出以下通知:
Undefined index: WBR in /var/www/vhosts/leadserver.be/httpdocs/LPRamen/insert.php on line 35
这是HTML的一部分:
<table>
<tr>
<td><input id="vlaams-brabant" type="checkbox" name="VBR" value="Vlaams-Brabant"/> Vlaams-Brabant</td>
<td><input id="waals-brabant" type="checkbox" name="WBR" value="Waals-Brabant"/> Waals-Brabant </td>
</tr>
<tr>
<td><input id="oost-vlaanderen" type="checkbox" name="OVL" value="Oost-Vlaanderen"/> Oost-Vlaanderen </td>
<td><input id="west-vlaanderen" type="checkbox" name="WVL" value="West-Vlaanderen"/> West-Vlaanderen </td>
</tr>
依此类推。 这背后的PHP如下:
$adds['nameCom'] = $conn->real_escape_string($_POST['nameCom']);
$adds['name'] = $conn->real_escape_string($_POST['name']);
$adds['number'] = $conn->real_escape_string($_POST['number']);
$adds['email'] = $conn->real_escape_string($_POST['email']);
$adds['VBR'] = $conn->real_escape_string($_POST['VBR']);
$adds['WBR'] = $conn->real_escape_string($_POST['WBR']);
$adds['OVL'] = $conn->real_escape_string($_POST['OVL']);
$adds['WVL'] = $conn->real_escape_string($_POST['WVL']);
$adds['LIM'] = $conn->real_escape_string($_POST['LIM']);
$adds['ANT'] = $conn->real_escape_string($_POST['ANT']);
$adds['LUI'] = $conn->real_escape_string($_POST['LUI']);
$adds['HEN'] = $conn->real_escape_string($_POST['HEN']);
$adds['LUX'] = $conn->real_escape_string($_POST['LUX']);
$adds['NAM'] = $conn->real_escape_string($_POST['NAM']);
$adds['NAT'] = $conn->real_escape_string($_POST['NAT']);
$adds['INT'] = $conn->real_escape_string($_POST['INT']);
$adds['BHG'] = $conn->real_escape_string($_POST['BHG']);
$adds['leads'] = $conn->real_escape_string($_POST['leads']);
$adds['akkoord'] = $conn->real_escape_string($_POST['akkoord']);
//$adds['Regio'] = $conn->real_escape_string($_POST['Regio']);
//Regio is geen string maar een array dus kan ook niet zo gedeclareerd worden
/*$Regio = array();
$adds['Regio'] = "";
if(count($_POST['Regio']) > 0) {
foreach($_POST['Regio'] as $key=>$value)
$Regio[] = $conn->real_escape_string($value);
}
$adds['Regio'] = implode(',', $Regio);
*/
// query voor INSERT INTO
$sql = "INSERT INTO `dataramen`
(`nameCom`, `name`, `number`, `email`, `VBR`, `WBR`, `OVL`, `WVL`, `LIM`, `ANT`, `LUI`, `HEN`, `LUX`, `NAM`, `NAT`, `INT`, `BHG`, `leads`, `akkoord`)
VALUES
('". $adds['nameCom']. "', '". $adds['name']. "', '". $adds['number']. "', '". $adds['email']. "', '". $adds['VBR']. "', '". $adds['WBR']. "', '". $adds['OVL']. "', '". $adds['WVL']. "', '". $adds['LIM']. "', '". $adds['ANT']. "', '". $adds['LUI']. "', '". $adds['HEN']. "', '". $adds['LUX']. "', '". $adds['NAM']. "', '". $adds['NAT']. "', '". $adds['INT']. "', '". $adds['BHG']. "', '". $adds['leads']. "' , '". $adds['akkoord']. "')";
请注意,这些只是我的代码的片段,总数是很长的发布方式
我知道已经有几个主题,但我已经完成了研究,但没有一个解决方案似乎有效。如果有人可以看看这个并找出问题所在,我会非常感激。
如果字段保持为空,我也尝试在数据库中设置标准值,但这不起作用。 我也正确设置了数据库列上的索引,但我仍然得到相同的通知。
答案 0 :(得分:2)
未定义的索引消息表示您正在尝试访问不存在的数组索引 使用复选框时,如果未选中,则不会获得值集。
因此,当您处理表单时,请检查是否已发送复选框。
$checkbox_value = (isset($checkbox_value)) ? $checkbox_value : 'default value';
答案 1 :(得分:1)
Undefined index: WBR in /var/www/vhosts/leadserver.be/httpdocs/LPRamen/insert.php on line 35
您只需在使用数组元素之前检查它是否已设置,以避免该警告。
$adds['WBR'] = $conn->real_escape_string($_POST['WBR']);
可以
if(isset($_POST['WBR']))
{
$adds['WBR'] = $conn->real_escape_string($_POST['WBR']);
}
或
$adds['WBR'] = isset($_POST['WBR']) ? $conn->real_escape_string($_POST['WBR']):0;
答案 2 :(得分:1)
复选框数据只有在选中时才会通过$ _POST发送,否则VBR密钥将不存在于您的阵列中。
你应该使用php函数isset()来检查它。
$adds['VBR'] = (isset($_POST['VBR'])) ? $conn->real_escape_string($_POST['VBR']) : '';