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 :: MySQL как сделать ввод нескольких переменных в БД

 PHP.SU

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


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

> Без описания
Webtest
Отправлено: 09 Августа, 2014 - 13:57:17
Post Id


Посетитель


Покинул форум
Сообщений всего: 286
Дата рег-ции: Июнь 2014  


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




Здравствуйте.

Я начал изучать MySQL, подскажите пожалуйста, как можно реализовать следующее:
Есть форма ввода.
Спойлер (Отобразить)

Как в mysql сделать так, что если какой-то пункт при вводе пустой, то БД он попадал как NULL?
Вот код mysql:
PHP:
скопировать код в буфер обмена
  1. $mysqli = mysqli_connect('localhost', 'root', '***') or die(mysqli_error($mysqli));
  2. mysqli_select_db($mysqli, 'dbtest') or die (mysqli_error($mysqli));
  3. if (!empty($_POST['FirstName'])) {
  4. $strSQL = "INSERT INTO tabletest(FirstName) VALUES('" . $_POST['FirstName'] . "')";
  5. }      
  6. mysqli_query($mysqli, $strSQL) or die (mysqli_error($mysqli));
  7. mysqli_close($mysqli);
  8. header("location: MySQL.php");

Я сделал добавление через if 1 переменной, но есть описывать каждую переменную так, и писать в ней mysql_querry, то создается несколько человек с 1 заполненной ячейкой.

В кратце: как сделать так, чтобы если я не заполнил какие-то поля в спойлере, то в БД создавался 1 "пользователь", а незаполненные поля показывались как NULL?
Надеюсь понятно описал.
 
 Top
Viper
Отправлено: 09 Августа, 2014 - 16:27:05
Post Id



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


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


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




примерно так:
PHP:
скопировать код в буфер обмена
  1. $firstname = isset($_POST['FirstName']) && !empty($_POST['FirstName']) ? mysqli_real_escape_string($mysqli, $_POST['FirstName']) : '';
  2. $lastname = isset($_POST['LastName']) && !empty($_POST['LastName']) ? mysqli_real_escape_string($mysqli, $_POST['LastName']) : '';
  3. $tel = isset($_POST['Phone']) && !empty($_POST['Phone']) ? $_POST['Phone'] : '';
  4. $birthday = isset($_POST['BirthDate']) && !empty($_POST['BirthDate']) ? $_POST['BirthDate'] : '';
  5.  
  6. $strSQL = "INSERT INTO `tabletest` (`FirstName`, `LastName`, `Phone`, `BirthDate`) VALUES('".$firstname."', '".$lastname."', '".$tel."', '".$birthday."')";


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
Webtest
Отправлено: 09 Августа, 2014 - 19:54:01
Post Id


Посетитель


Покинул форум
Сообщений всего: 286
Дата рег-ции: Июнь 2014  


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




Viper, что-то я сегодня много сидел и думал. Что забыл про такие простые решения Улыбка спасибо.
 
 Top
OrmaJever Модератор
Отправлено: 09 Августа, 2014 - 20:09:48
Post Id



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


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


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




Viper пишет:
isset($_POST['FirstName']) && !empty($_POST['FirstName'])

хочу добавить что empty так же как и isset не выкидывает нотис, поэтому isset здесь не нужен


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
Webtest
Отправлено: 09 Августа, 2014 - 20:10:15
Post Id


Посетитель


Покинул форум
Сообщений всего: 286
Дата рег-ции: Июнь 2014  


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




Viper, только такой вопрос, у меня в БД установлены значения для телефона - bigint, а для даты - date, поэтому если туда вставляешь пустоту '', то выскакивает ошибка: Incorrect date value: '' for column 'BirthDate' at row 1, как от неё избавится?
Какие есть стандарные значения NULL для date и bigint?!
 
 Top
Viper
Отправлено: 10 Августа, 2014 - 10:37:15
Post Id



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


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


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




Webtest пишет:
только такой вопрос, у меня в БД установлены значения для телефона - bigint, а для даты - date, поэтому если туда вставляешь пустоту '', то выскакивает ошибка: Incorrect date value: '' for column 'BirthDate' at row 1, как от неё избавится?
Какие есть стандарные значения NULL для date и bigint?!

Жирно однако для телефона bigint. А если + понадобится указать?
NOT NULL для чего?
BirthDate 0000-00-00 00:00:00 тяжело наверное поставить?


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
Webtest
Отправлено: 10 Августа, 2014 - 12:07:20
Post Id


Посетитель


Покинул форум
Сообщений всего: 286
Дата рег-ции: Июнь 2014  


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




Viper, какой тогда тип переменных указывать для телефона?
Если ставить int(11), почему-то 11 значное число записывается неверно.
 
 Top
tuareg
Отправлено: 10 Августа, 2014 - 12:58:39
Post Id


Участник


Покинул форум
Сообщений всего: 1234
Дата рег-ции: Июнь 2010  


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




Для № телефона ИМХО вполне хватит varchar
 
 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