Редактирование данных в бд через форму

есть таблица и есть форма. Текст


код формы

<form action="update.php" method="POST" class="updform">
    <p>
        <label for="id">Выберите № участка:</label>
        <input type="number" id="id" name="pre_id" required>
    </p>
    <p>
        <label for="name">Место нахождения:</label>
        <input type="text" id="name" name="pre_name">
    </p>
    <p>
        <label for="town">Город:</label>
        <input type="text" id="town" name="pre_town">
    </p>
    <p>
        <label for="street">Улица:</label>
        <input type="text" id="street" name="pre_street">
    </p>
    <p
        <label for="house">Дом:</label>
        <input type="text" id="house" name="pre_house">
    </p>
        <input type="submit" value="Обновить запись">
</form>

это листинг кода update.php


<?php
$db_server = "localhost";
$db_user = "root";
$db_password = "123";
$db_name = "precinct"; 
try {
    // Открываем соединение, указываем адрес сервера, имя бд, имя пользователя и пароль,
    // также сообщаем серверу в какой кодировке должны вводится данные в таблицу бд.
    $db = new PDO("mysql:host=$db_server;dbname=$db_name", $db_user, $db_password,array(PDO::MYSQL_ATTR_INIT_COMMAND=>"SET NAMES utf8"));
    // Устанавливаем атрибут сообщений об ошибках (выбрасывать исключения).
    $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    // Переносим данные из полей формы в переменные.
    $pre_id =       $_POST['pre_id'];
    $pre_name =    $_POST['pre_name'];
    $pre_town =   $_POST['pre_town'];
    $pre_street =    $_POST['pre_street'];
    $pre_house = $_POST['pre_house'];


    // Если пользователь не указал (номер Id) какую запись будем редактировать,
    // то прерываем выполнение кода.
    if(empty($pre_id)){
        echo "Вы не задали номер участка!";
        return;
    }

    // Составвлям массив колонок для запроса обновления.
    // Если поле формы не пустое, то его значение будет добавлено в запрос.
    $update_columns = array();
    if(trim($pre_name) !== "")   { $update_columns[] = "name = :name"; }
    if(trim($pre_town) !== "")  { $update_columns[] = "town = :town"; }
    if(trim($pre_street) !== "")   { $update_columns[] = "street = :street"; }
    if(trim($pre_house) !== ""){ $update_columns[] = "house = :house"; }

    // Если есть хоть одно заполненное поле формы,
    // то составляем запрос.   


    if(sizeof($update_columns) > 0) {

        echo sizeof($update_columns);        
        // Запрос на создание записи в таблице

        $sql = "UPDATE precinct SET " . implode(",", $update_columns) . " WHERE id=:id";


        // Подготовка запроса.
        $statement = $db->prepare($sql);

        // Привязываем к псевдо переменным реальные данные,
        // если они существуют (пользователь заполнил поле в форме).        
        $statement->bindParam(":id", $pre_id);
        if(trim($pre_name) !== ""){
            $statement->bindParam(":name", $pre_name);
        }
        if(trim($pre_town) !== ""){
            $statement->bindParam(":town", $pre_town);
        }
        if(trim($pre_street) !== ""){
            $statement->bindParam(":street", $pre_street);
        }
        if(trim($pre_house) !== ""){
            $statement->bindParam(":house", $pre_house);
        }


        // Выполняем запрос.
        $statement->execute();


    }
}

catch(PDOException $e) {
    echo "Ошибка при обновлении записи в базе данных: " . $e->getMessage();
}

// Закрываем соединение.
$db = null;
?>

но после нажатия на кнопку появляется только пустая страница, а в адресной строке путь до update.php.


после возврата на страницу с таблицей данные не обновляются и в бд тоже. если что, таблица выгружается из бд(с выгрузкой никаких проблем)


Ответы (0 шт):