0 Пользователей и 1 Гость просматривают эту тему.
  • 9 Ответов
  • 2206 Просмотров
*

pavelrer

  • Давно я тут
  • 611
  • 10 / 2
Доброго!
Господа подмогите с задачкой, не могу понять как сделать следующие:

Данно: $uid

                        $db = JFactory::getDbo();
                        $query = $db->getQuery(true);
                        $query
                            ->select($db->quoteName(array('id', 'images', 'created_by', 'title', 'catid')))
                               ->from($db->quoteName('#__content'))
                            ->where($db->quoteName('created_by'). ' = ' . (int) $uid)          // Выбираем по id создателя
                            ->where($db->quoteName('catid'). ' = ' . (int) 72)                    // Далее выбираем в категории с catid = 72;
                            ->order('id DESC');
 
                        $db->setQuery($query);
                        $result2 = $db->loadObjectList();

Все бы хорошо Но
          ->where($db->quoteName('catid'). ' = ' . (int) 72)                    // Далее выбираем в категории с catid = 72;

А мне нужно выбрать из catid 72 и catid 69 одним запросом хочется.

Как тут применить оператор OR - Не выходит.

Свои изречения не выкладываю, дабы не устраивать цирк.

Спасибо.
*

icom

  • Давно я тут
  • 830
  • 202 / 4
Re: Выборка из базы ->where($db->quoteName + OR
« Ответ #1 : 26.04.2017, 23:13:04 »
 ->where($db->quoteName('catid'). ' IN (72, 69)')
*

pavelrer

  • Давно я тут
  • 611
  • 10 / 2
Re: Выборка из базы ->where($db->quoteName + OR
« Ответ #2 : 26.04.2017, 23:22:37 »
Спасибо огромное! Пошел портянки коротить.

Подскажите пожалуйста еще такой вопрос.
Зная id материала можно из баз тиснуть все.
Но мне нужна ссылка на материал зная id, catid и.т.д

Как я понимаю вот оно:

JHtml::_('link', JRoute::_(ContentHelperRoute::getArticleRoute($article->slug, $article->catid, $article->language)), htmlspecialchars($article->title, ENT_COMPAT, 'UTF-8'));

Где почитать, чтобы разобраться, что-то не нагуглил.

Спасибо!
*

icom

  • Давно я тут
  • 830
  • 202 / 4
Re: Выборка из базы ->where($db->quoteName + OR
« Ответ #3 : 27.04.2017, 18:10:13 »
Цитировать
JHtml::_('link', JRoute::_(ContentHelperRoute::getArticleRoute($article->slug, $article->catid, $article->language)), htmlspecialchars($article->title, ENT_COMPAT, 'UTF-8'));
да, так, но перед этим еще нужно
JLoader::register('ContentHelperRoute', JPATH_SITE . '/components/com_content/helpers/route.php');
*

pavelrer

  • Давно я тут
  • 611
  • 10 / 2
Re: Выборка из базы ->where($db->quoteName + OR
« Ответ #4 : 27.04.2017, 20:00:34 »
Спасибо, разобрался.
*

pavelrer

  • Давно я тут
  • 611
  • 10 / 2
Re: Выборка из базы ->where($db->quoteName + OR
« Ответ #5 : 27.04.2017, 22:13:47 »
Все же еще вопросик родился.

К той же задачи, выбрать только 3 шт.

Поменял на такое.

                                     $db->setQuery($query,1,3);

Но мне нужно выбрать 3 не с начало таблицы т.е с записи 1
А с конца таблицы двигаясь от последнее записи к первой.

Попробовал на шару так
                                     $db->setQuery($query,-1,3);
и так
                                     $db->setQuery($query,0,3);
Не получилось.

Как можно сделать?
Спасибо.
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Re: Выборка из базы ->where($db->quoteName + OR
« Ответ #6 : 27.04.2017, 22:43:57 »
Код: php-brief
$db->setQuery($query, 0, 3);
Должно работать, ведь
                            ->order('id DESC');
уже стоит.
Не будь паразитом, сделай что-нибудь самостоятельно!
*

pavelrer

  • Давно я тут
  • 611
  • 10 / 2
Re: Выборка из базы ->where($db->quoteName + OR
« Ответ #7 : 27.04.2017, 23:08:04 »
Да все стоит.
С единичкой работает но, вот что не смог понять.

Вот что происходит.
Если мы говорим выводить один материал.

               $db->setQuery($query,0,1);
Выбирает с конца

Все отлично

               $db->setQuery($query,1,1);

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

Более того:
Если напишим так
               $db->setQuery($query,0,3);
или так
               $db->setQuery($query,1,3);

Все вроде и ничего, но как я понимаю в первом случаи материалы в массиви должны стоять так,

материал 1, материал 2, материал 3

А вот во втором случаи

материал 3, материал 2, материал 1

Но этого не происходит

В обоих случаях порядок такой

материал 1, материал 2, материал 3

Не понимая что-то я

Вот код

               $db = JFactory::getDbo();
               $query = $db->getQuery(true);
               $query
                   ->select($db->quoteName(array('id', 'images', 'created_by', 'title', 'catid', 'introtext')))
                      ->from($db->quoteName('#__content'))
                   ->where($db->quoteName('created_by'). ' = ' . (int) $uid)

                                            ->where($db->quoteName('catid'). ' IN (70, 72)')

                   ->order('id DESC');
 
               $db->setQuery($query,0,1);
               $result2 = $db->loadObjectList();

Спасибо.
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Re: Выборка из базы ->where($db->quoteName + OR
« Ответ #8 : 27.04.2017, 23:37:22 »
Зачем писать так много и сумбурно?
2-й и 3-й аргументы - это OFFSET И LIMIT.
Код: php-brief
$query->order('id DESC');
$db->setQuery($query, 0, 3);
выводит "материал с ID=10, материал с ID=9, материал с ID=8".
Код: php-brief
$query->order('id DESC');
$db->setQuery($query, 1, 3);
выводит "материал с ID=9, материал с ID=8, материал с ID=7".
« Последнее редактирование: 27.04.2017, 23:44:24 от robert »
Не будь паразитом, сделай что-нибудь самостоятельно!
*

pavelrer

  • Давно я тут
  • 611
  • 10 / 2
Re: Выборка из базы ->where($db->quoteName + OR
« Ответ #9 : 28.04.2017, 00:26:45 »
Спасибо, разобрался.

OFFSET И LIMIT нормально все работают, я просто к тестовой базе подключен а phpMyAdmin нормальной базы открыт.

Вот дурик  ;D
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Вывод из базы в указанном порядке

Автор Mick_20

Ответов: 10
Просмотров: 907
Последний ответ 05.12.2016, 15:48:20
от Mick_20
[Решено] Как заполнить Тег <select> из базы?

Автор кодик

Ответов: 9
Просмотров: 1540
Последний ответ 03.12.2015, 20:42:46
от кодик
Выборка из нескольких таблиц в компоненте Joomla 3.0

Автор dmuradz

Ответов: 2
Просмотров: 1163
Последний ответ 06.02.2015, 11:00:07
от Aleks.Denezh
[Решено] Выборка ($query->where()) из БД по одному из значений [params]=>{}

Автор ninth

Ответов: 13
Просмотров: 1249
Последний ответ 24.08.2014, 11:09:53
от Aleks.Denezh
[Решено] Выборка данных из БД, ORDERING

Автор maxsl_89

Ответов: 1
Просмотров: 1009
Последний ответ 26.03.2014, 13:27:42
от b2z