2015-05-19 1 views
0

Извините за мой английский,Как отобразить одно рекламное объявление в каждой третьей строке в php?

Мне нужно отображать баннерное объявление из базы данных каждую третью строку в php. Баннерные объявления и строки с классифицированными выбирают из базы данных. В этот момент я создаю что-то вроде этого:

Ряды с объявления из базы данных:

while(@$row_select_kat = mysql_fetch_assoc($results_select_kat)) 
     { 
      ... //classifieds from database 



      if(($row_select_kat['id_ogloszenia']%3)==0) 
      { 
       $lim = 1; 


       echo"<div id=\"rek_poz_a\">"; 
       modAddsDisplayHelper::wyswietlReklamyPozA(); 
       echo"</div>"; 

      } 
     } 

Выбор рекламных баннеров от databes:

public static function wyswietlReklamyPozA() 
{ 
    $baza_danych = &JFactory::getDbo(); 

    $query_sel_all_banners = "SELECT * FROM juxhv_banners"; 
    $baza_danych->setQuery($query_sel_all_banners); 
    $baza_danych->query(); 

    $banner_ads = $baza_danych->loadObjectList(); 

    echo$query_sel_all_banners; 
    echo"Liczba x= ".$l_ogloszen; 

    foreach($banner_ads as $banner_ad) 
    { 
     if($banner_ad->state==1) 
     { 
      echo"$banner_ad->name<br/><img src=\"images/$banner_ad->username/bannerwerbung/$banner_ad->zdjecie\" width=\"434px\" height=\"94px\" />"; 
     } 
     else 
     { 
      echo"No banner"; 
     } 
    } 

} 

Когда я делаю это в том, что каждый три строки отображают все три рекламные баннеры. Как я могу отображать только одно рекламное объявление каждые три строки?

URL:

Приветствия

+0

вместо $ row_select_kat [ 'id_ogloszenia']% 3 имеет (переменный) вар $ iCount = 0; и check ($ iCount% 3) == 0 также не забывайте увеличивать до конца цикла. он даст более точный результат. –

+0

В функции wyswietlReklamyPozA(), поскольку вы используете для цикла, поэтому его эхо все 3 изображения при вызове этой функции. –

ответ

2

Вы должны использовать внешнюю переменную счетчика, который увеличивается на каждой итерации, и в зависимости от его состояния вы можете проверить состояние по модулю: Пожалуйста, обратитесь к следующей обновленный код. [код]

$recordCount = 0;   
    while(@$row_select_kat = mysql_fetch_assoc($results_select_kat)) 
    { 

     if(($recordCount%3)==0) 
     { 

      echo"<div id=\"rek_poz_a\">"; 
      modAddsDisplayHelper::wyswietlReklamyPozA(); 
      echo"</div>"; 

     } 

    $recordCount++; 

    } 
+0

Это не сработало. Любые другие предложения? – Adrian

0
if($banner_ad->state == 1) { 
    echo"$banner_ad->name<br/><img src=\"images/$banner_ad->username/bannerwerbung/$banner_ad->zdjecie\" width=\"434px\" height=\"94px\" />"; 
    break; 
} 

Таким образом, вы только напечатать один баннер, но всегда будет первым с государственной == 1 в базе данных.

Может лучше улучшить запрос:

$query_sel_all_banners = "SELECT * FROM juxhv_banners WHERE state = 1 LIMIT 1"; 

Это даст вам тот же результат, я думаю.

Я надеюсь, что это помогает

Смежные вопросы