@pizdeshik_gavnovedma

Как добавить запись в БД с option по value (не значение value)?

Есть в БД список стран и городов, вывожу их в select: Россия. Цель такова, пользователь выбирает этот option и отправляет в БД (делает запись) "Россия", а не значение value которое равно 1. Как реализовать, чтобы в БД записывался option, а не value? Вариант: Россия не подходит у меня связной список по value в числовом формате.
<select name="count_reg" class="count_reg" id="count_reg"  >
    <option value="0" >Выбрать</option>
    <option value="1">Россия</option> </select>


<?php 
 
include_once 'db.php';
 
 
 
 
  
$count_reg = filter_var(($_POST['count_reg']), FILTER_SANITIZE_STRING);
 
 
 
 
 
$insert ="INSERT INTO `users` (`count_reg`)
VALUE ('$count_reg')";
 
if (!mysqli_query($link,$insert))
  {
  die('Error: ' . mysqli_error($link));
  }
echo "data successfully added";
mysqli_close($link);
 
 
?>


В базе вместо "Россия" значение 1, как сделать, чтобы было наоборот?
603f4b1fa55ad286816546.png
  • Вопрос задан
  • 40 просмотров
Решения вопроса 2
alexey-m-ukolov
@alexey-m-ukolov Куратор тега PHP
Как реализовать, чтобы в БД записывался option, а не value?
Никак. Но при обработке формы вы пришедшие идентификаторы можете заменить на названия без каких-либо проблем.
Однако же хранить в БД именно идентификатор - это хорошая практика. Дальше уже при использовании данных вы можете опять же подменять его названием.
Ответ написан
rozhnev
@rozhnev
Fullstack programmer, DBA, медленно, дорого
Хранить в базе числовые индексы строных значений является общепринятой практикой. Так что у Вас всё в порядке с сохранением данных. Для отображения данных следует создать таблицы словарей типа индекс значение:
CREATE TABLE `countries` (
  `id` tinyint(1) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(255) NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `name_uq` (`name`)
);

CREATE TABLE `cities` (
  `id` smallint(1) unsigned NOT NULL AUTO_INCREMENT,
  `country_id` tinyint(1) unsigned NOT NULL,
  `name` varchar(255) NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `name_uq` (`name`),
  INDEX `country_id_ix` (`country_id`)
);


При выборке использовать JOIN для отображения строк вместо чисел

MariaDB fiddle
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы