Простой и корректный запрос к БД
Страницы: 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:21 СЕОшник за 20000 руб составил мне title, description, keywords. Отлично составил 
00:13 Биржи ссылок и статей 2020 
23:13 Можно ли еще заработать в Sape 
23:09 Ссылочная биржа TrustLink 
20:53 ClickDealer- свои люди на рынке буржа! 
15:42 Груповухи для души 
15:01 Нужен плагин или хак для кэширования запросов базы данных 
23:43 Todex.io - Быстрый и надежный обменник 
19:50 Качественный прогон Хрумером, Zennoposterом всего 10 WMZ, Большой опыт работы. Статьи, комментарии, профиля, гостевые. 
12:12 Легко! Качественно! Доступно! Профессионально пишу и размножаю тексты 
21:26 ISMM.STORE - Оптовый сервис накрутки в социальные сети 
17:43 Мастер шаблона размножения статей + Ручной синонимизатор-рерайтер 
17:41 Размножение статей качественно 
14:19 World-Bases.com - Списки сайтов и доменов на различных CMS: WordPress, Joomla, Magento, Drupal etc. 
00:25 Для чего надо учиться? 
13:06 Instagram и Facebook возможно что-то поняли и, не теряя времени, разблокировали аккаунты Трампа 
10:19 Украинцы не любят использовать банковские карты для оплаты в Интернете 
09:42 Великая Америка! 
22:25 $270 млн выброшено на помойку 
22:20 Обещанный снеговик 
15:50 СМИ: сторонники Трампа готовят вооруженный мятеж с помощью Telegram