Добрый день!
Выдаёт ошибку при записи в базу, полный код файла прикрепил в комментариях
<form class="form-horizontal" action="" method="post">
<label for="" class="col-sm-2 control-label">Название меню <span>*</span></label>
<div class="col-sm-4">
<input type="text" class="form-control" name="menu_name" value="<?php echo $menu_name; ?>">
</div>
</div>
<div class="form-group">
<label for="" class="col-sm-2 control-label">Меню URL <span>*</span></label>
<div class="col-sm-4">
<input type="text" class="form-control" name="menu_url" value="<?php echo $menu_url; ?>">
</div>
</div>
<div class="form-group">
<label for="" class="col-sm-2 control-label">Родительское меню <span>*</span></label>
<div class="col-sm-4">
<select class="form-control select2" name="menu_parent">
<option value="0" <?php if($menu_parent == 0){echo 'selected';} ?>>Нет род. меню</option>
<?php
$q = $pdo->prepare("SELECT *
FROM tbl_menu
ORDER BY menu_order ASC");
$q->execute();
$res = $q->fetchAll();
foreach ($res as $row) {
if($row['menu_id'] == $menu_parent) {
$sel1 = 'selected';
} else {
$sel1 = '';
}
if($row['page_id']==0) {
echo '<option value="'.$row['menu_id'].'" '.$sel1.'>'.$row['menu_name'].'</option>';
} else {
$r = $pdo->prepare("SELECT *
FROM tbl_page
WHERE page_id=?");
$r->execute([$row['page_id']]);
$res1 = $r->fetchAll();
foreach ($res1 as $row1) {
echo '<option value="'.$row['menu_id'].'" '.$sel1.'>'.$row1['page_name'].'</option>';
}
}
}
?>
</select>
</div>
</div>
<div class="form-group">
<label for="" class="col-sm-2 control-label">Позиция <span>*</span></label>
<div class="col-sm-1">
<input type="text" class="form-control" name="menu_order" value="<?php echo $menu_order; ?>">
</div>
</div>
<div class="form-group">
<label for="" class="col-sm-2 control-label"></label>
<div class="col-sm-6">
<button type="submit" class="btn btn-success pull-left" name="form_other">Обновить</button>
</form>
запись в базу
<?php
if(isset($_POST['form_other'])) {
$valid = 1;
if(empty($_POST['menu_order'])) {
$valid = 0;
$error_message .= "Позиция меню не может быть пустой<br>";
} else {
if(!is_numeric($_POST['menu_order'])) {
$valid = 0;
$error_message .= "Позиция меню должена быть числовым значением.<br>";
}
}
if($valid == 1) {
$q = $pdo->prepare("UPDATE tbl_menu SET
menu_type=?,
page_id=?,
menu_name=?,
menu_url=?,
menu_order=?,
menu_parent=?
WHERE menu_id=?
");
$q->execute([
'Остальные',
'',
$_POST['menu_name'],
$_POST['menu_url'],
$_POST['menu_order'],
$_POST['menu_parent'],
$_REQUEST['id']
]);
$success_message = 'Меню успешно обновлено.';
}
}
?>
<?php
$statement = $pdo->prepare("SELECT * FROM tbl_menu WHERE menu_id=?");
$statement->execute(array($_REQUEST['id']));
$result = $statement->fetchAll(PDO::FETCH_ASSOC);
foreach ($result as $row) {
$menu_type = $row['menu_type'];
$page_id = $row['page_id'];
$menu_name = $row['menu_name'];
$menu_url = $row['menu_url'];
$menu_order = $row['menu_order'];
$menu_parent = $row['menu_parent'];
}
?>
В итоге выдаёт ошибку
Fatal error: Uncaught PDOException: SQLSTATE[HY000]: General error: 1366 Incorrect integer value: '' for column 'page_id' at row 1 in D:\Server\OpenServer\domains\admin\menu-edit.php:74 Stack trace: #0 D:\Server\OpenServer\domains\saturn\admin\menu-edit.php(74): PDOStatement->execute(Array) #1 {main} thrown in D:\Server\OpenServer\domains\saturn\admin\menu-edit.php on line 74
Не могу понять почему, может кто подскажет