seregazolotaryow64
@seregazolotaryow64
IT Специалист и самоучка

Как сделать правильное функциональное слайд-шоу, использующее данные из MySQL?

Здравствуйте!
Сейчас сталкиваюсь вот с такой проблемой:
5c407a1fdb265043694170.png
Говорю про главную страницу моего сайта и здесь имеется контейнер функционального слайд-шоу с переключателями и индикатором.
В этом слайд-шоу 3 слайдера. В каждом слайдере по 3 новости.

Первые и вторые слайдеры справляются хорошо, а когда посмотрите третий, возникает вот такая каша...

Сайт сейчас дорабатываю и основан он на Yii1 и вот коды контроллера и представления для главной страницы:
Контроллер Site
<?php

class SiteController extends CController{	
     public function actionIndex(){		
         $this->pageTitle="Добро пожаловать!";	
	
         $foundname='ДОБРЫЕ-ВЗРОСЛЫЕ';
         $description='Добро пожаловать на официальный сайт Фонда помощи детям-инвалидам и инвалидам детства с ментальными расстройствами "ДОБРЫЕ-ВЗРОСЛЫЕ"!';
         $keywords='';
         Yii::app()->getClientScript()->registerMetaTag($foundname,'og:site_name',null,array());
         Yii::app()->getClientScript()->registerMetaTag("Добро пожаловать!",'og:title',null,array());
         $og_image='http://добрые-взрослые.рф/media/images/site/desktop/homepage/promo.png';
         Yii::app()->getClientScript()->registerMetaTag($og_image,'og:image',null,array());
         Yii::app()->getClientScript()->registerMetaTag($description,'Description');
         Yii::app()->getClientScript()->registerMetaTag($keywords,'Keywords');
         Yii::app()->getClientScript()->registerMetaTag($description,'og:description',null,array());
         
         Yii::app()->getClientScript()->registerMetaTag('Фонд помощи детям-инвалидам и инвалидам детства с ментальными расстройствами "ДОБРЫЕ-ВЗРОСЛЫЕ"','og:title',null,array());
      //Для первого слайдера.
         $newslist=Yii::app()->db->CreateCommand();
         $newslist->select("image,title,date,content,id");
         $newslist->from("news");
         $newslist->order("date DESC");
         $newslist->limit(3);
		 
   //Для второго...
	 $newslistf=Yii::app()->db->CreateCommand();
         $newslistf->select("image,title,date,content,id");
         $newslistf->from("news");
         $newslistf->order("date DESC");
         $newslistf->limit(3,3);
 
  //Для третьего.
		 
	 $newslistt=Yii::app()->db->CreateCommand();
         $newslistt->select("image,title,date,content,id");
         $newslistt->from("news");
         $newslistt->order("date DESC");
         $newslistt->limit(6,3);//Проблемное рассчитывание базы.
		 
         $this->render('index',array("newslist"=>$newslist,"newslistf"=>$newslistf,"newslistt"=>$newslistt));    
     }
}
?>

Представление главной страницы:
<div class="found-news-feed">
     <h2>Новости</h2>
 
       
     
     
<!--Вся лента новостей--> 
  
   <div class="news-slide">
  <!--Контейнер с переключателями-->
     <div class="news-sliders">
	     <div>
		   <img src="/media/images/site/desktop/homepage/foundnewsfeed/navigate/slider/slide-back.png" />
		 </div>
		 <div>
		   <img src="/media/images/site/desktop/homepage/foundnewsfeed/navigate/slider/slide-go.png" />
		 </div>
	 </div>
     <div class="news-feed-slider-cont">
         <div class="slide">
       
           
          <?php
          $newslistcont=$newslist->queryAll();
          foreach ($newslistcont as $list){ 
          ?>
	
		     <div class="news">
			     <?php if($list['image']!=""){ ?>
                  <div class="image" style="background-image:url('<?php echo $list['image']; ?>');">
                      &nbsp;
                  </div>
                <?php } else { ?>
                  <div class="image">
                      &nbsp;
                  </div>
                <?php } ?>
			     <h2><?php echo $list['title']; ?></h2>
			     <span>
			         <p><?php echo $list['content']; ?></p>
			     </span>
			     <span style="margin-top:11px;">Добавлено <?php echo $list['date']; ?></span>
			     <?php echo CHtml::link("Читать далее","/news/?view_id=". $list['id'],array()); ?>
			 </div>

		  <?php } ?>
	  
         </div>
	 
		 <div class="slide desktopel">
             <?php
          $newslistcont=$newslistf->queryAll();
          foreach ($newslistcont as $list){ 
          ?>
	
		     <div class="news">
			     <?php if($list['image']!=""){ ?>
                  <div class="image" style="background-image:url('<?php echo $list['image']; ?>');">
                      &nbsp;
                  </div>
                <?php } else { ?>
                  <div class="image">
                      &nbsp;
                  </div>
                <?php } ?>
			     <h2><?php echo $list['title']; ?></h2>
			     <span>
			         <p><?php echo $list['content']; ?></p>
			     </span>
			     <span style="margin-top:11px;">Добавлено <?php echo $list['date']; ?></span>
			     <?php echo CHtml::link("Читать далее","/news/?view_id=". $list['id'],array()); ?>
			 </div>

		  <?php } ?>
         </div>
         <div class="slide desktopel" style="">
<!--Проблемный слайдер-->
             <?php
          $newslistcont=$newslistt->queryAll();
          foreach ($newslistcont as $list){ 
          ?>
	
		     <div class="news">
			     <?php if($list['image']!=""){ ?>
                  <div class="image" style="background-image:url('<?php echo $list['image']; ?>');">
                      &nbsp;
                  </div>
                <?php } else { ?>
                  <div class="image">
                      &nbsp;
                  </div>
                <?php } ?>
			     <h2><?php echo $list['title']; ?></h2>
			     <span>
			         <p><?php echo $list['content']; ?></p>
			     </span>
			     <span style="margin-top:11px;">Добавлено <?php echo $list['date']; ?></span>
			     <?php echo CHtml::link("Читать далее","/news/?view_id=". $list['id'],array()); ?>
			 </div>

		  <?php } ?>
         </div>
         
      
       
    </div>   
    
	<div class="news-slider-tabs">
<!--Вкладка-индикатор просмотра слайда-->
	    <center>
		   <div class="tab">
		      <img src="/media/images/site/desktop/homepage/foundnewsfeed/navigate/pagination/paginate1.png" />
		   </div>
		   <div class="tab desktopel">
		      <img src="/media/images/site/desktop/homepage/foundnewsfeed/navigate/pagination/paginate2.png" />
		   </div>
		   <div class="tab desktopel">
		      <img src="/media/images/site/desktop/homepage/foundnewsfeed/navigate/pagination/paginate3.png" />
		   </div>
		</center>
	</div>


Где везде newslist-Yii-параметры для отдельных настраиваемых слайдеров.
newslist и newslistf-справляются хорошо. А newslistt справляется плохо.
Для третьего слайдера в запросе MySQL сделал LIMIT так чтобы первые шесть записей не были показаны, и плюс 3 последних чтобы отображались и не получилось решить эту проблему.
Загляните сюда и поможете мне, пожалуйста решить эту проблему!
Как правильное слайд-шоу, где извлекаются данные из MySQL сделать?
  • Вопрос задан
  • 84 просмотра
Решения вопроса 1
webinar
@webinar Куратор тега Yii
Учим yii: https://youtu.be/-WRMlGHLgRg
limit(6,3) - это 6 записей начиная с третей, а не 3 записи начиная с 6-й.
https://www.yiiframework.com/doc/api/1.1/CDbComman...
аналогичная запись
->limit(6)->offset(3)

Плюс не понятно зачем Вам 3 отдельных запроса? Не проще выбрать сразу 9 записей? В чем сакральный смысл этого разделения?

$newslist=Yii::app()->db->CreateCommand();
         $newslistf->select("image,title,date,content,id");
         $newslistf->from("news");
         $newslistf->order("date DESC");
         $newslistf->limit(9);

и соответственно вывод где-то первых трех из них
for($i=0;$i<3;$i++){
    echo $newslist[$i]['some'];
}

а теперь со 2-й по 5-ю
for($k=1;$k<6;$k++){
    echo $newslist[$i]['some'];
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы