Добрый день, реализован метод для вывода материалов из базы данных с помощью цикла foreаch в таком ввиде PHP: <?php foreach ( $results['articles'] as $article ) { ?> <div class="post-item wow" data-animation="fadeInUp" data-animation-delay="300"> <h2 class="wow fadeInUp"><a href="news.php.?action=viewArticle&articleId=<?php echo $article->id?>"> <?php echo htmlspecialchars( $article->title )?></a></h2> <div class="post wow fadeInUp"> <?php if ( $imagePath = $article->getImagePath( IMG_TYPE_FULLSIZE ) ) { ?> <a href=".?action=viewArticle&articleId=<?php echo $article->id?>"> <img src="<?php echo $imagePath?>" alt="" class="img-responsive news_blog"/></a> <?php } ?> <div class="post-content"> <?php echo htmlspecialchars( $article->summary )?> <div class="posted-date"> <?php echo date('j F Y', $article->publicationDate)?> </div> </div> </div> </div> <?php } ?> При попытке добавления цикла вывода материалов только из одной категории, цикл foreach перестает работать, данные не выводятся PHP: <?php if ( $article->categoryId = '1') { ?> Подскажите как добавить вывод материалов только из одной категории?
В запросе фильтрацию делайте, т.е. добавляйте условие в запрос. --- Добавлено --- А вместо присоединения таблицы категорий к статьям, если им нужны соотв. метаданные, сделайте предварительную выборку запрошенной категории и повтыкайте фактические данные в основной запрос, например: Код (Text): SELECT `articles`.*, "{$category->name}" `cat_name` ... Это чтобы результат был полностью эквивалентен выборке без фильтрации. P.S. Если кавычки в именах категорий не кодировались, проэкранируйте имя, прежде чем втыкать его в запрос. --- Добавлено --- P.P.S. Вот тут я делал вывод примерных текстов запросов, чтобы было понятнее. Только там двухуровневая фильтрация. У вас проще. --- Добавлено --- В полях `id` там слаги, поэтому с ними проделывается такая же работа, как и с именами. Не обращайте на это внимания.
наверное делаю не так как вы пишите, написал так PHP: <?php $articles = array("SELECT articles from cms where categoryId = 1"); <?php foreach ( $results['articles'] as $article ) { ?> <?php if ( $article->categoryId == '1') { ?> <div class="post-item wow" data-animation="fadeInUp" data-animation-delay="300"> <h2 class="wow fadeInUp"><a href="news.php.?action=viewArticle&articleId=<?php echo $article->id?>"> <?php echo htmlspecialchars( $article->title )?></a></h2> <div class="post wow fadeInUp"> <?php if ( $imagePath = $article->getImagePath( IMG_TYPE_FULLSIZE ) ) { ?> <a href="news.php.?action=viewArticle&articleId=<?php echo $article->id?>"> <img src="<?php echo $imagePath?>" alt="" class="img-responsive news_blog"/></a> <?php } ?> <div class="post-content"> <?php echo htmlspecialchars( $article->summary )?> <div class="posted-date"> <?php echo date('j F Y', $article->publicationDate)?> </div> </div> </div> </div> <?php } ?> <?php } ?> ?> но выходит ошибка
в том синтаксисе что используете - нельзя создавать вложенные <?php не в одной строке кароче я бы сделал лучше как-то так PHP: <?php $articles = array("SELECT articles from cms where categoryId = 1"); foreach ( $results['articles'] as $article ) { echo ' <div class="post-item wow" data-animation="fadeInUp" data-animation-delay="300"> <h2 class="wow fadeInUp"><a href="news.php.?action=viewArticle&articleId='.$article->id.'">'.htmlspecialchars( $article->title ).'</a>/h2> <div class="post wow fadeInUp">'; if ( $imagePath = $article->getImagePath( IMG_TYPE_FULLSIZE ) ) { echo '<a href="news.php.?action=viewArticle&articleId='.$article->id.'"> <img src="'.$imagePath.'" alt="" class="img-responsive news_blog"/></a>'; } echo '<div class="post-content">'.htmlspecialchars( $article->summary ).' <div class="posted-date"> '.date('j F Y', $article->publicationDate).' </div> </div> </div> </div>'; } ?>
подправил и исправил ошибки, но все равно не работает PHP: <?php $articles = array("SELECT * from articles where categoryId = 1"); foreach ( $results['articles'] as $article ) { echo ' <div class="post-item wow" data-animation="fadeInUp" data-animation-delay="300"> <h2 class="wow fadeInUp"> <a href="news.php.?action=viewArticle&articleId='.$article->id.'">'.htmlspecialchars( $article->title ).'</a></h2> <div class="post wow fadeInUp">'; if ( $imagePath = $article->getImagePath( IMG_TYPE_FULLSIZE ) ) { echo '<a href="news.php.?action=viewArticle&articleId='.$article->id.'"> <img src="'.$imagePath.'" alt="" class="img-responsive news_blog"/></a>'; } echo '<div class="post-content">'.htmlspecialchars( $article->summary ).' <div class="posted-date"> '.date('j F Y', $article->publicationDate).' </div> </div> </div> </div>'; } ?>
И что делает эта команда? Присваивает какой-то переменной массив из одной строки? Вы вообще РНР знаете? Ошибка вызвана тем, что не закрыли php-вставку с этой командой, но суть от этого не меняется. Где ваш основной запрос для выборки без фильтрации? Весь смысл был в том, чтобы сделать модифицируемый запрос, используемый как для выборки без фильтрации, так и с фильтрацией, и чтобы в обоих случаях можно было использовать одну и ту же вьюшку. --- Добавлено --- P.S. У функции выборки списка добавьте параметр $categoryId (0 – без фильтрации, иначе с фильтрацией). Можете добавить этот параметр и к имеющемуся экшину, указав 0 в качестве дефолтного значения.