Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Нужен совет по добавлению данных из <select> в БД

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
teddy
Отправлено: 14 Мая, 2013 - 22:38:13
Post Id


Участник


Покинул форум
Сообщений всего: 1462
Дата рег-ции: Апр. 2013  


Помог: 91 раз(а)




Добрый вечер. Написал скрипт регистрации пользователей, но столкнулся в вопросом. Указание даты рождения я сделал так, что бы пользователь мог выбрать ее из option-а. Вышло как вы догадываетесь так, что для "дня", "месяца" и "года" нужно создавать отдельную переменную куда укладывается выбранное из селект-а значение.

Соответственно при добавлении в БД получится так, что день, месяц и год придется хранить в разных полях таблицы. Можно ли сделать это как то грамотно? Чтоб не добавлять все в разные поля а в одно. Хочу удобство, так как в дальнейшем придется делать анкету, где нужно будет выводить из БД дату рождения.

Интересует вариант именно с select-ом... Ну а если это сделать никак при помощи PHP, то прошу мне об этом сообщить )
 
 Top
EuGen Администратор
Отправлено: 14 Мая, 2013 - 22:43:42
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Ничто не мешает получать данные о годе/дне/месяце из раздельных полей а затем "собирать" их в одно в PHP-скрипте. Например,
PHP:
скопировать код в буфер обмена
  1. $sDate=$_POST['year'].'-'.$_POST['month'].'-'.$_POST['day'];// ex.: "1988-11-05"


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
teddy
Отправлено: 14 Мая, 2013 - 22:47:53
Post Id


Участник


Покинул форум
Сообщений всего: 1462
Дата рег-ции: Апр. 2013  


Помог: 91 раз(а)




EuGen
О как, спасибо ) видел как то раз подобную конструкцию, но не запомнил ) Ещё вопрос остался, у меня много полей и проверок на каждое поле минимум по 3. Получается слишком много if-ов. Это нормально вообще? Что то мне подсказывает, что это ВЦкод получается... Думаю написать функцию для чистки данных, но она тоже получится огромной, так как проверять буду внутри функции через свитч, который в свою очередь тоже будет содержать кучу if-ов

(Отредактировано автором: 14 Мая, 2013 - 22:50:51)

 
 Top
EuGen Администратор
Отправлено: 14 Мая, 2013 - 23:00:03
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)






-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
teddy
Отправлено: 14 Мая, 2013 - 23:02:12
Post Id


Участник


Покинул форум
Сообщений всего: 1462
Дата рег-ции: Апр. 2013  


Помог: 91 раз(а)




EuGen
Я про данные )вот кусок из кода:
PHP:
скопировать код в буфер обмена
  1. if(!preg_match("/^[A-Za-z0-9](([_\.\-]?[a-zA-Z0-9]+)*)@([A-Za-z0-9]+)(([\.\-]?[a-zA-Z0-9]+)*)\.([A-Za-z]{2,})$/",$email)){
  2.  
  3. $error_mail = "Неверный формат почтового адреса<br>";
  4.  
  5. }
  6.  
  7. if(empty($email)){$error_mail = "Укажите E-mail адрес<br>";}

(Добавление)
Таких проверок множество, полей много... под каждое поле много проверок. Ещё свитч есть который банит что то вроде "30 Февраля" и т.д

PHP:
скопировать код в буфер обмена
  1. switch($_POST['month']){
  2. case 2:
  3. if($day>29){$error_date = "Введите корректную дату рождения";}
  4. break;
  5. case 4:
  6. if($day>30){$error_date = "Введите корректную дату рождения";}
  7. break;
  8. case 6:
  9. if($day>30){$error_date = "Введите корректную дату рождения";}
  10. break;
  11. case 9:
  12. if($day>30){$error_date = "Введите корректную дату рождения";}
  13. break;
  14. case 11:
  15. if($day>30){$error_date = "Введите корректную дату рождения";}
  16. break;
  17. }

(Добавление)
Это нормально? Или можно как то упростить это дело? Расчистить код так сказать...
 
 Top
Tummy
Отправлено: 15 Мая, 2013 - 06:55:46
Post Id


Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Май 2013  


Помог: 0 раз(а)




PHP:
скопировать код в буфер обмена
  1. if ($_POST['month'] === 2 OR $_POST['month'] === 4 OR $_POST['month'] === 6 OR $_POST['month'] === 9 OR $_POST['month'] === 11) {
  2.     if ($_POST['month'] === 2) {
  3.         if ($day > 29) $error_date = "Введите корректную дату рождения";
  4.         }
  5.     if ($day > 30) $error_date = "Введите корректную дату рождения";
  6.     }
Сократил =)

Проверка адреса почты, можно использовать стандартные средства php
PHP:
скопировать код в буфер обмена
  1. filter_var('bob@example.com', FILTER_VALIDATE_EMAIL)

А можно кастомную функцию, которых полно на интернет.

(Отредактировано автором: 15 Мая, 2013 - 07:01:42)

 
 Top
teddy
Отправлено: 15 Мая, 2013 - 12:22:13
Post Id


Участник


Покинул форум
Сообщений всего: 1462
Дата рег-ции: Апр. 2013  


Помог: 91 раз(а)




Tummy пишет:
if ($_POST['month'] === 2 OR $_POST['month'] === 4 OR $_POST['month'] === 6 OR $_POST['month'] === 9 OR $_POST['month'] === 11) {
if ($_POST['month'] === 2) {
if ($day > 29) $error_date = "Введите корректную дату рождения";
}
if ($day > 30) $error_date = "Введите корректную дату рождения";
}


Опять же if-ы ) Получается много if-ов в некоторых случаях это нормально... В других полях тоже много проверок. Да и свитчем более нагляднее фильтровать дату в данном случае

Tummy пишет:
filter_var('bob@example.com', FILTER_VALIDATE_EMAIL)

Использовал ее раньше, оказалась дырявой... Насколько я помню там принцип такой: V'a's'y'a@p'u'p'k'i'n.com - проходит... Там вроде как считывает так чтоугодно@чтоугодно.com что не есть хорошо... Точно не помню, но была подобная дыра

(Отредактировано автором: 15 Мая, 2013 - 12:23:01)

 
 Top
Мелкий Супермодератор
Отправлено: 15 Мая, 2013 - 23:05:59
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




teddy пишет:
Там вроде как считывает так чтоугодно@чтоугодно.com что не есть хорошо...

Почитайте соответствующую RFC, узнаете много нового. Часть до @ может содержать вообще всё, что угодно. Доменное имя - за некоторыми исключениями - тоже.


-----
PostgreSQL DBA
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB