Я не уверен, что я наткнулся на ошибку или нет в css или, возможно, на входы.
У меня есть форма, которая в css я использую на всех моих входах
text-transform: capitalize;
Это отлично работает на именах, которые я печатаю, например, я набираю имя "peter", которое отображается в текстовом поле как "Peter", которое является удивительным и хорошо работает.
Моя проблема заключается в том, что когда я отправляю его в базу данных mysql, он представляется как "peter".
Я не знаю, если это по дизайну или ошибке, но если по дизайну есть какие-то предложения о том, как отправить мой желаемый результат "Питер".
Заранее спасибо.
Это по дизайну; CSS - это интерфейсный язык и управляет только клиентом (что видит конечный пользователь). CSS является исключительно презентационным и не влияет на DOM, серверную логику и базу данных. Логика на стороне сервера заключается в том, что имя все еще записано в нижнем регистре, и значение все еще сохраняется в базе данных в нижнем регистре.
Если вы хотите обновить значение базы данных в верхнем регистре, вам нужно либо вернуть имя в свою базу данных с помощью капитализации (используя ucfirst()
PHP ucfirst()
):
$string = 'peter';
echo $string; // 'peter' is written to the DOM
$capitalised = ucfirst($string);
echo $capitalised; // 'Peter' is written to the DOM
Или обновите базу данных напрямую с помощью CONCAT
MySQL CONCAT
:
CONCAT(UCASE(LEFT(field, 1)), SUBSTRING(field, 2));
string.charAt(0).toUpperCase() + string.slice(1)
), в дополнение к тому факту, что вам нужно перехватить отправку формы только для этого. Кроме того, если бы было что-то вродеstrtolower()
стороне сервера (ради аргумента), оно все равно неstrtolower()
бы значение ни на сервере, ни в базе данных.