Запретить редактирование input
Друзья, привет. Подкиньте идею пожалуйста, вот не знаю, как сделать, идей нет. В общем есть поле:
<input value="<?= isset($_GET['id']) ? $product['mark_name'] : ''; ?>">
Как видно, я получаю данные из бд. Так вот, как сделать чтобы после получения данных, поле нельзя было редактировать, а пока данные из бд в него не прилетели редактировать можно. Может проверку какую сделать. Собственно, код который всё это выполняет ниже. Спасибо.
Код PHP
if (isset($_GET['id'])) {
$sql = mysqli_query($mysqli, "SELECT * FROM products INNER JOIN mark ON mark.id=products.ID_mark WHERE products.ID={$_GET['id']}");
$product = mysqli_fetch_array($sql);
}
Код HTML
<tr>
<div class="form-group">
<td>Производитель:</td>
<td><input class="form-control item" type="text" name="mark_name" placeholder="Введите производителя" value="<?= isset($_GET['id']) ? $product['mark_name'] : ''; ?>" required></td>
</div>
</tr>
Ответы (2 шт):
Вряд-ли это то, что вам нужно. Весь PHP выполняется на стороне сервера, и только потом клиент (браузер) начинает показывать страницу. Вы бы могли создать отдельный файл loadData.php с кодом, который загружает данные из базы, а в основной странице добавить JavaScript, который будет загружать данные, вставлять их в input и блокировать его:
<input id="data">
<script type="text/javascript">
let xhr = new XMLHttpRequest();
xhr.open("GET", "loadData.php");
xhr.onload = function() {
let input = document.getElementById("data");
input.value = xhr.response;
input.disabled = true;
}
xhr.send();
</script>
Главное, что надо понимать про инпуты - это то, что по-настоящему в них что-то запретить нельзя. Любые запреты снимаются двумя кликами мышкой. И, соответственно, надеяться, что значение с сервера придет неизменным - тоже очень глупо.
Любые пришедшие с клиента данные, полученные из любых инпутов, надо всегда проверять при получении, в том числе и на неизменность.
Но чисто для удобства
<input readonly ...>– редактировать нельзя, значение уйдет на сервер при отправке формы<input disabled ...>- редактировать нельзя, значение не будет отправлено на сервер