Простой и корректный запрос к БД
Страницы: 1
Простой и корректный запрос к БД
Ломаем голову над проблемой... не можем сообразить.(((

$query = 'SELECT id, title, alias, introtext, created FROM #__content WHERE catid=\''.$categ.'\' AND state=\'1\' AND id>\''.$id_parent.'\'ORDER BY id LIMIT 1';

Тут в зависимости от $id_parent выбираем по id в указанной категории $categ. А надо, чтобы из массива категорий, которых может быть несколько.

И ещё... как можно ставить, например... взять статью с наименьшей датой или статья, с наименьшим id?

Заранее спасиб.
Цитата
Светлана Светачева пишет:
А надо, чтобы из массива категорий, которых может быть несколько.

Код
WHERE catid IN('.$categ1.','.$categ2.') 

Цитата
Светлана Светачева пишет:
И ещё... как можно ставить, например... взять статью с наименьшей датой или статья, с наименьшим id?

 
Код
$articles =  ... ORDER BY id ASC
$articles[0] - статья с наименьшим id
Изменено: Андрей - 4 Ноября 2015 15:26
Цитата
Андрей пишет:
Цитата
Светлана Светачева пишет:
А надо, чтобы из массива категорий, которых может быть несколько.

Код
 WHERE catid IN('.$categ1.','.$categ2.')  

Спасибо за ответ, Андрей, но не пойдёт.))) Дело в том, что мы получаем категории из админки в виде массива, а какие они будут, заранее не знаем.


Код
$categ =  $params->get('parent', array());



Там может быть 2 категории, одна или 20. Работает у нас пока только с любой одной категории.((( Печалька прям. Или мы чего не поймём...(((


За это огромное спасибо! Попробуем...



Код
$articles =  ... ORDER BY id ASC
$articles[0] - статья с наименьшим id
Изменено: Светлана Светачева - 4 Ноября 2015 15:36
Цитата
Светлана Светачева пишет:
Дело в том, что мы получаем категории из админки в виде массива, а какие они будут, заранее не знаем.

Код
$categ = implode(",", $params->get('parent', array()));
... WHERE catid IN('.$categ.')   
Цитата
Андрей пишет:
Цитата
Светлана Светачева пишет:
Дело в том, что мы получаем категории из админки в виде массива, а какие они будут, заранее не знаем.

Код
 $categ = implode(",", $params->get('parent', array()));
... WHERE catid IN('.$categ.')    
Спасиб, Вы оч. грамотный. Мы не допёрли, а всё просто.))) Уже моск прост не работает.(
Попробуем.)))
Крайний вопрос... я вот тут не перемудрила с экранированием??? Так и не пойму толком это экранирование...smile:confused:

Код
$query = 'SELECT id, title, alias, introtext, created FROM #__content WHERE catid IN(\''.$categ.'\') AND state=\'1\' AND id>\''.$id_parent.'\'ORDER BY id LIMIT 1';



Тут корректно всё?smile:help:
Нет конечно) Без слешей попробуйте
Код
$query = 'SELECT id, title, alias, introtext, created FROM #__content WHERE catid IN('.$categ.') AND state="1" AND id>'.$id_parent.' ORDER BY id LIMIT 1'; 
Код
 $query = 'SELECT id, title, alias, introtext, created FROM #__content WHERE catid IN('.$categ.') AND state=\'1\' AND id>\''.$id_parent.'\'ORDER BY id LIMIT 1';
Вот так работает суперски на локалке!)))
В том-то и дело, что я понимаю без слешей... после Вашей помощи с массивом.smile:) Но мне тут наговорили, что все кавычки при запросе к БД надо экранировать слешами, иначе будет уязвимость. Я не понимаю, какая уязвимость... но не хочу уязвимости, вот как-то так.)))smile:confused:
Наверное, я тут перемудрила. Со мной бывает.)))
Изменено: Светлана Светачева - 4 Ноября 2015 17:30
Ммм а можно одним запросом получить

id, title, alias, introtext, created

Сразу нескольких статей в виде массивов или как там... если я хочу вывести сразу несколько новостей?
Цитата
Светлана Светачева пишет:
Сразу нескольких статей в виде массивов или как там... если я хочу вывести сразу несколько новостей?

Код
$query = 'SELECT id, title, alias, introtext, created FROM #__content WHERE catid IN('.$categ.') AND state=\'1\' AND id>\''.$id_parent.'\'ORDER BY id LIMIT 2';
$query[0] - первая статья
$query[1] - вторая статья
эээ... туплю.(((

$query - это ж заготовка запроса... ну,

Код
function intro_text ($text)
{
   // Уберём теги и оставим не более 175 символов
   $text = strip_tags($text);
   $text = trim ($text); // Удаляет из начала и конца оставшийся мусор
   $text = mb_substr($text, 0, 175).'...';
   return $text;
}

$db->setQuery($query);
$list = $db->loadObjectList();

foreach($list as $comp)
   {
      $order = $comp->ordering;
      $categ = $comp->catid;
      $id = $comp->id;
      $date_aj = $comp->created;
      $title = $comp->title;
      $alias = $comp->alias;
      $introtext = intro_text ($comp->introtext);
      preg_match_all('/<img[^>]*?src=\"(.*)\"/iU', $comp->introtext, $images); // Картинка
   }



Или потом можно тут брать


Код
$order[0]; $order[1];

???
Изменено: Светлана Светачева - 6 Ноября 2015 18:51
Код
$comps = array();

foreach($list as $i=>$comp)
   {
   $comps[$i]['order'] = $comp->ordering;
   $comps[$i]['categ'] = $comp->catid;
   $comps[$i]['id'] = $comp->id;
   $comps[$i]['date_aj'] = $comp->created;
      ...

   }
 $comps[0], $comps[1]
Цитата
Андрей пишет:
Код
 $comps = array();

foreach($list as $i=>$comp)
   {
   $comps[$i]['order'] = $comp->ordering;
   $comps[$i]['categ'] = $comp->catid;
   $comps[$i]['id'] = $comp->id;
   $comps[$i]['date_aj'] = $comp->created;
      ...

   }
 $comps[0], $comps[1] 


Спасиб.))) Вывод потом
Код
$order = $comps[0] ['order']; // Это для первой и т.д.???
$id = $comps[0] ['id']; // ИД первой?
Да? Думаю... да.))) Спасибо Вам.) Уже завтра сделаю.)))
Изменено: Светлана Светачева - 6 Ноября 2015 19:17
Так и выводите
Код
$comps[0] ['order']; // Это для первой и т.д.???
$comps[0] ['id']; // ИД первой?

<div>Статья <?=$comps[0] ['id'];?></div>
Андрей, спасибо. Я поняла.)))
Страницы: 1
Читают тему (гостей: 1, пользователей: 0, из них скрытых: 0)
Новые темыОбъявленияСвободное общение
02:04 Переезд с www на домен без www 
20:57 Webvork - международная товарная СРА сеть с сертифицированными офферами на Европу. 
19:22 АП Яндекс ИКС 06.03.2023 
16:37 Что это за IP адрес 2a0c21051c5ad912280a50b7c3ecf717 
16:07 Adtrafico - Правильная партнёрская сеть под бурж трафик 
10:13 Telegram стал вторым по популярности в мире 
15:42 Profit Pixels - In-House Форекс, Крипто, Трейдинг CPA Офферы | Еженедельные Выплаты | CPA до $950 
21:43 [Telegram +] Рассылка в ЛС/По чатам, Инвайтинг! В Телеграм 
21:42 [Вконтакте +] Массовые рассылки в ЛС/В сообщения группам. Сбор аудитории без доплат 
21:41 [Email, Phone, Data...] Парсинг, сбор данных с любых сайтов 
21:41 Провожу обучение по работе с Телеграм  
21:40 Рассылка в Директ. Инстаграм от 10 копеек! Вайбер от 30 коп! 
20:15 Купить дедики Абузоустойчивые сервера Аренда сервера Купить dedic Дедик Дешево vps vds сервера дедики на SSD! 
19:24 LucPey - Первоклассный обменник криптовалют 
04:36 Стряхнуть обыденность - об Агасфере 
20:45 Зарабатываем 2000 рублей на АБУЗЕ бонусов 
16:15 Как получить рефералов и посетителей на сайт бесплатно. 
13:14 Добро пожаловать в цифровой мир... 
03:57 Китай выступил против продажи TikTok вопреки требованию США 
03:49 Как заставить себя? 
01:47 У кого Яндекс задерживает выплату в этом месяце?