Как конвертировать форматы телефона, факса, почтового индекса для ввода в базу данных
Я замаскировал входы для телефона, факса и почтового индекса. Телефон и факс имеют формат (999) 999-9999, а почтовый индекс - 99999-9999. Когда я отправляю страницу, база данных ожидает другой формат. Когда я обновляю базу данных, мне нужно только передать числовые значения. Мне нужно преобразовать форматы перед передачей их в SQL INSERT. Как мне преобразовать отображаемый на странице формат в формат, требуемый базой данных?
База данных ожидает форматы телефона и факса, такие как: 1234567890
и формат почтового индекса, такой как: 123456789 (хотя это не требует, чтобы это были все 9 цифр, поскольку большинство людей вводят почтовые индексы только с первыми 5 числами)
Хотя он не преобразует числа правильно, вот jsFiddle http://jsfiddle.net/HMG28/
Я добавил кнопку на jsFiddle, которая просто добавляет результаты в div. На моей реальной странице это кнопка "Отправить", которая публикует значения, чтобы они могли быть доступны и переданы в моем операторе INSERT. Я не уверен, должен ли я поймать это и конвертировать, используя jQuery или в моем разделе PHP. (PHP - это то, что я считаю правильным, просто не знаю, как)
Вот фрагмент кода в jsFiddle:
<label>Phone: </label><input type="text" id="phone" placeholder="(555) 555-5555" />
<label>Fax: </label><input type="text" id="fax" placeholder="(555) 555-5555" />
<label>Zip Code: </label><input type="text" id="zipcode" placeholder="Zip Code" />
$('#phone').mask('(999) 999-9999');
$('#fax').mask('(999) 999-9999');
$('#zipcode').mask('99999-9999');
Кстати, у меня есть имена на входах, поэтому я могу POST значения, я просто не добавил их в этом примере.
Пожалуйста, дайте мне знать, если есть какая-либо дополнительная информация.
1 ответ
Маскированные входы делают его удобным для проверки и пользовательского интерфейса. но "мета" символы в строке могут быть легко удалены (именно так ваша база данных выглядит так, как нужно). с учетом сказанного, два варианта:
PHP (предпочтительный метод, наименьшее количество возможностей для взаимодействия с пользователем):
// perform the cleanse server-side
$param = preg_replace('/([^d])/', '', $param);
JavaScript:
// perform the cleanse client-side
param = param.replace(/([^\d])/g,'');
В любом случае вы останетесь с 1234567890
для (123) 456-7890
номер телефона и 123456789
для 12345-6789
застежка-молния. Вы также можете захотеть (после удаления других символов) запустить тест, чтобы убедиться, что длина равна 10 и 9/5 для телефона и почтового индекса соответственно. например
// NOTE: i'm not checking `$_POST` but you should...
$phone = preg_replace('/([^\d])/', '', $_POST['phone']);
$fax = preg_replace('/([^\d])/', '', $_POST['fax']);
$zip = preg_replace('/([^\d])/', '', $_POST['zip']);
if (strlen($phone) == 10
&& strlen($fax) == 10
&& (strlen($fax) == 5 || strlen($fax) == 9)){
// proceed with inserting the three values in to the databasse;
// they are now clean and are of the proper lengths.
}