Простой и корректный запрос к БД
Страницы: 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:35 Кто как борется с ботами ПФ? 
12:35 TacoLoco - рекламная сеть от LosPollos. Большие объёмы качественного трафика! 
15:08 Adtrafico - Правильная партнёрская сеть под бурж трафик 
21:18 Webvork - международная товарная СРА сеть с сертифицированными офферами на Европу. 
16:51 Buymedia.biz - рекламная сеть 
13:36 Партнерская программа OWNR WALLET 
14:10 3snet - гемблинг, беттинг, форекс, бинарные опционы, майнинг 
23:50 Прием платежей для HIGH RISK | Прием платежей без сайта 
23:50 Услуги рассылки Viber|Whatsapp|IMO. 
23:48 Рассылка сообщений в ЛС DISCORD 
23:47 Рассылка в TELEGRAM |Большой опыт работы | Любые тематики | Лучшая конверсия 
10:48 DualCoin - быстрый криптовалютный обменник 
21:39 Coin Click.cc - Быстрый и надежный обмен электронных валют в два клика 
18:50 Европейский эквайринг 
02:44 Точные прогнозы на футбол 
15:43 Заказать телефонный флуд. 
12:05 Ням-ням! - 8 деликатесов, которые когда-то ели только бедные люди 
11:40 Кто сделает прогон для адалт сайта? 
09:25 Добро пожаловать в цифровой мир... 
10:31 Видимо, похороны СУПРа уже прошли как-то по-тихому 
08:08 С юмором по жизни!