В БД есть поле blocked. Если в админке сайта нажать кнопку "Заблокировать пользователя", в этом поле устанавливается значение 1.Если разблокирован - 0. Предполагаю, что было бы логично делать как-то так: Код (Text): if (isset($_POST['submit'])) { $user_id = $_POST['user_id']; $sql = mysql_query("UPDATE User SET ***INVERSE*** blocked WHERE user_id = '$user_id'"); } ***INVERSE*** - выдуманная мною команда, которая демонстрирует подход. Было бы удобно при нажатии на кнопку, просто менять значение поле в БД на противоположное (с true на false и обратно), а не разбираться, какое оно там, и в php менять в явном виде 0 на 1, а 1 на 0. Возможно ли что-то подобное? Спасибо
… SET fld = NOT fld Добавлено спустя 1 минуту 55 секунд: для более сложных случаев есть IF() или CASE http://dev.mysql.com/doc/refman/5.0/en/control-flow-functions.html
http://stackoverflow.com/questions/289727/which-mysql-datat ... ean-values В качестве "булева" типа ты можешь использовать любой целочисленный тип. В большинстве ЯП целые значения используются как логические по принципу "любое ненулевое значение считается истиной". SQL и PHP не исключение. В SQL есть еще нюанс со значением NULL. Он делает логику троичной: «да», «нет» и «не известно» ))) Поэтому, чтобы крышу не сорвало, старайся использовать уточнение NOT NULL при описании полей.
Так мы же с вами ровно это и делаем, разве нет? У меня в БД тип данных указан, как Boolean. В phpMyAdmin тип данных для этой колонки выводится, как TINYINT(1). Пишу я туда 0 и 1. Т.е. все ровно так. Соответственно, ваш первый комментарий про "делай SET fld = NOT fld" на мой непросвещенный взгляд, как раз и есть "использование логических типов". Которые с помощью логического оператора NOT инвертируются. Т.е. все так и есть. Но увидев комментарий VaneS, я подумал, что возможно есть еще какой-то прием и он имеет в виду что-то еще. Итого: а) либо комментарий VaneS при всем к нему уважении нужно не брать в голову, т.к. мы это и так делаем б) либо есть что-то еще. И мне, конечно, интересно.