Простой и корректный запрос к БД
Страницы: 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)
Новые темыОбъявленияСвободное общение
22:20 Накручивают клики на рекламу Adsense 
22:16 Новый фильтр Яндекса борется с серой товаркой, беттингом, МФО и скамерами 
21:49 Кейс: как заработать на TikTok в 2021 без вложений на адалте 
19:31 Marketcall - международная партнерская сеть с оплатой Pay Per Call и LeadGen 
18:47 19 октября Яндекс выдача 
16:47 Edu-Affiliates.com - ПП под буржуйский EDU траф! 50% с заказа - 20% с ребилов! 
16:02 Golden Goose - WAP Click партнерка с inhouse офферами 
20:09 Покупаем/Продаем криптовалюты за наличные 
20:01 A-Parser 1.1 - продвинутый парсер поисковых систем, Suggest, PR, DMOZ, Whois, etc 
17:35 Антидетект Che browser 
17:32 SocksHub.net - proxy, которые подходят всем 
17:19 C1k: обмен Advcash , Perfect Money , skrill , NETELLER, крипта, приват24, тенге 
13:17 Human Emulator. Автоматизация действий пользователя в браузере. 
11:50 Программы для рассылок, накрутки, продвижения и ведения аккаунтов в skype, instagram, vk, ok, avito, lenta.ru 
21:14 Метавселенная от Цукерберга 
18:58 Подскажите оператора номеров 8-800 
18:18 Кстати... 
09:03 Акции Netflix после сериала "Игра в кальмара" 
08:55 Вкладки браузера разрушают ваш мозг 
18:46 С юмором по жизни! 
18:13 Коронавирус - реальная угроза или манипуляции?