dazle
@dazle
Хороший электрик, но в душе программист

Если в бд поле не заполнено как сделать выборку полей на заполненных и незаполненных?

у меня есть форма в которой раскрывающийся список городов вот она
<label>Город</label><br>
 <select name=city>
<option value=https://msk.nuipogoda.ru>Москва</option>
<option value=https://spb.nuipogoda.ru>Санкт-Петербург</option>
<option value=>Нет города в списке</option>
</select>

В таблицу сохраняются данные со стороннего сайта а вот когда нет города в списке я сделал поле пустым. Теперь как мне сделать различие между пустым полем и заполненным как написать инструкцию if к незаполненному?
Ниже приведена инструкция, но она не работает, я закинул $_POST['city'] в сессию:
if($_SESSION['city']==null) //т.е если поле пустое
{
...
}

В структуре таблицы у меня только city / VARCHAR / 40 (там есть поле NULL может и его надо добавить)
  • Вопрос задан
  • 143 просмотра
Решения вопроса 1
@Aricus
По сути вопроса уже ответили в комментариях:
if ($_SESSION['city']=='') {
  // Поле пустое
} else {
  // Поле заполненное
}

Лучше установить в БД city то поле равным пустой строке, а не NULL, чтобы путаницы не было. Тогда будет однозначное соответствие между базой данных и значением в поле.
Далее, советую в PHP использовать функции не mysql, а mysqli, которые в разы быстрее отрабатывают. Работает с той же базой данных mysql и по тем же запросам, только синтаксис функций немного другой. Бесплатно делюсь своей функцией для удобной работы:
$dbHost = 'localhost';
$dbName = '...';
$dbUser = 'root';
$dbPassword = '...';
$mysqli = new mysqli($dbHost, $dbUser, $dbPassword, $dbName);
if ($mysqli->connect_errno) {
	echo "Не удалось подключиться к MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error;
}
$mysqli->set_charset("utf8");
mb_internal_encoding("UTF-8");
/**
 * Выполнение запроса к MySQL
 * @param string $query - запрос
 * @param string $type - вариант выполнения функции
 *   "many" (по умолчанию) - для возврата нескольких строк. Возвращает двухмерный массив
 *   "one" - для возврата одной строки. Возвращает массив
 *   "count" - для возврата подсчёта количества строк. Возвращает число, записанное в строке
 *   "do" - для выполняемой команды. Возвращает true в случае успешного выполнения, в случае ошибки выдаёт текст ошибки.
 *   остальные - для возврата одного значения одной строки
 * @return array|string|bool
 */
function query($query, $type="many") {
	global $mysqli;
	if (!$result = $mysqli->query($query)) {
		return mysqli_error($mysqli);
	}
	if ($type == "do") {
		return true;
	}
	$values = [];
	while ($row = $result->fetch_assoc()) {
		$values[] = $row;
	}
	$result->free();
	if ($type == "count") {
		return $values[0]["COUNT(*)"];
	} elseif ($type == "one") {
		return $values[0];
	} elseif ($type == "many") {
		return $values;
	} else {
		return $values[0][$type];
	}
}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы