Помогите с выводом данных

karen12

Постоялец
Регистрация
26 Фев 2012
Сообщения
108
Реакции
4
Есть у меня бд и таблицы
PHP:
CREATE TABLE IF NOT EXISTS `subdepart` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `id_depart` int(11) NOT NULL,
  `subdepart_name` text NOT NULL,
  `depart_name` int(11) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=20 ;
и
PHP:
CREATE TABLE IF NOT EXISTS `send` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `patient_id` int(11) NOT NULL,
  `subdepart_in` int(11) NOT NULL,
  `doctor_in` int(11) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=202 ;
Соотвественно в таблице send, в поле subdepart_in вставляется значение из таблицы subdepart (id),
Делаю поиск по таблице send
PHP:
$subdepartn='9';
SELECT (*)FROM   `send` WHERE   `send`.subdepart_in LIKE '%$subdepart%'
все работает нормально, но есть одна проблема, если в таблице subdepart есть данные с id от 1-ого до 20, выводится данные и у которого id=9 и id=19. То есть и 9 и 19 скрипт считает как 9, как исправить???
 
Есть у меня бд и таблицы
PHP:
CREATE TABLE IF NOT EXISTS `subdepart` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `id_depart` int(11) NOT NULL,
  `subdepart_name` text NOT NULL,
  `depart_name` int(11) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=20 ;
и
PHP:
CREATE TABLE IF NOT EXISTS `send` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `patient_id` int(11) NOT NULL,
  `subdepart_in` int(11) NOT NULL,
  `doctor_in` int(11) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=202 ;
Соотвественно в таблице send, в поле subdepart_in вставляется значение из таблицы subdepart (id),
Делаю поиск по таблице send
PHP:
$subdepartn='9';
SELECT (*)FROM   `send` WHERE   `send`.subdepart_in LIKE '%$subdepart%'
все работает нормально, но есть одна проблема, если в таблице subdepart есть данные с id от 1-ого до 20, выводится данные и у которого id=9 и id=19. То есть и 9 и 19 скрипт считает как 9, как исправить???
У вас LIKE тоесть вы получаете все $subdepartn='9'; не 9 а всё где есть 9. так и должно быть. если вы этого не хотите используйте =
 
У вас LIKE тоесть вы получаете все $subdepartn='9'; не 9 а всё где есть 9. так и должно быть. если вы этого не хотите используйте =
Дело в том что это отрывок кода, там есть еще несколько условий, я вставил LIKE , чтобы сделать выбор этого пункта необязательным, своего рода фильтр. если я поставлю = то выбор этого поля будет обязательным, чего мне не нужно, есть альтернативные пути решения этой задачи???
 
Дело в том что это отрывок кода, там есть еще несколько условий, я вставил LIKE , чтобы сделать выбор этого пункта необязательным, своего рода фильтр. если я поставлю = то выбор этого поля будет обязательным, чего мне не нужно, есть альтернативные пути решения этой задачи???
Вы не поставили задачи))
 
Вы не поставили задачи))
:) задача такова- нужно вывести все данные у которых $subdepartn='9'. У меня вместе с $subdepart есть и выборка по промежутку времени, если я не отмечу значение subdepart, то выборка должна все равно произойти по промежутку времени. Надеюсь смог поставить задачу.:)
 
а если
$subdepartn='9';
SELECT (*)FROM `send` WHERE `date_add` > '2015-12-12' ($subdepart ? AND `send`.subdepart_in LIKE '%$subdepart%' : '')
Если я верно понял...
 
а если
$subdepartn='9';
SELECT (*)FROM `send` WHERE `date_add` > '2015-12-12' ($subdepart ? AND `send`.subdepart_in LIKE '%$subdepart%' : '')
Если я верно понял...

PHP:
$date1 = trim($_REQUEST['date1']);
$date2 = trim($_REQUEST['date2']);
$adress_reg = trim($_REQUEST['adress_reg']);
$lgota = trim($_REQUEST["lgota"]);
$depart=$_REQUEST['depart'];
$subdepart_in=$_REQUEST['subdepart_in'];
$doctor_in=$_REQUEST['doctor_in'];



"SELECT COUNT(*) FROM   `send` WHERE  (`reception`.id = `send`.patient_id  ) AND (`reception`.date_inccome BETWEEN '$date1' AND '$date2')  AND  `send`.adress_reg LIKE '%$adress_reg%' AND `reception`.lgota LIKE '%$lgota%' AND `send`.depart_in LIKE '%$depart%'  AND `send`.subdepart_in LIKE '%$subdepart_in%'  AND `send`.doctor_in LIKE '%$doctor_in%'  "
вот мой код, в такой конструкции если я не отмечу например, $subdepart_in, то выборка произойдет по остальным критериям, но если я в $subdepart_in поставлю значение 9, то выводятся данные у которых subdepart_in =9 и 19, я понял, что это от того, что я использую оператор like, но мне нужно сделать так , чтобы я смог сделать выборку и в том случае если поле subdepart_in оставить пустым. Если сделать = то в таком случае выборка не произойдет.
 
PHP:
$date1 = trim($_REQUEST['date1']);
$date2 = trim($_REQUEST['date2']);
$adress_reg = trim($_REQUEST['adress_reg']);
$lgota = trim($_REQUEST["lgota"]);
$depart=$_REQUEST['depart'];
$subdepart_in=$_REQUEST['subdepart_in'];
$doctor_in=$_REQUEST['doctor_in'];



"SELECT COUNT(*) FROM   `send` WHERE  (`reception`.id = `send`.patient_id  ) AND (`reception`.date_inccome BETWEEN '$date1' AND '$date2')  AND  `send`.adress_reg LIKE '%$adress_reg%' AND `reception`.lgota LIKE '%$lgota%' AND `send`.depart_in LIKE '%$depart%'  AND `send`.subdepart_in LIKE '%$subdepart_in%'  AND `send`.doctor_in LIKE '%$doctor_in%'  "
вот мой код, в такой конструкции если я не отмечу например, $subdepart_in, то выборка произойдет по остальным критериям, но если я в $subdepart_in поставлю значение 9, то выводятся данные у которых subdepart_in =9 и 19, я понял, что это от того, что я использую оператор like, но мне нужно сделать так , чтобы я смог сделать выборку и в том случае если поле subdepart_in оставить пустым. Если сделать = то в таком случае выборка не произойдет.
так ($subdepart ? AND `send`.subdepart_in LIKE '%$subdepart%' : '')
это и поможет вам... тоесть если $subdepart есть то будет если нет то нет...
 
Назад
Сверху