templates, help

  • Автор темы Botokill
  • Дата начала
Статус
В этой теме нельзя размещать новые ответы.

Botokill

Guest
templates, help

Народ, есть вот функция для вывода данных из базы, и для вставки их в templates
на что следует обратить внимание я выделил комментариями, что я пытался сделать, а пытался я сделать то чтобы
допустим, берем tepmpate tovars_one_tpl_short.htm и на одной строчке выводим 3 tovars_one_tpl_short.htm, после чего
переходим на новую строчку <tr>, для этого я перед циклом создал $count=3 и после цикла написал проверку
if ($count ==3) то выводим template и вставляем <tr>, итог таков он после каждого tovars_one_tpl_short.htm вставляет <tr>
и выводит на одну строчку 1 tovars_one_tpl_short.htm, вернее каждый tovars_one_tpl_short.htm на своей строчки, а должно получится что бы после трех выводов
tovars_one_tpl_short.htm он остальные переводил на новую строчку, возможно я все по ламерски объяснил, но думаю вы поняли о чем я пытался рассказать 0(
подскажите, пожалуйста, что я здесь сделал не так?

PHP:
function tovar_list_tovars($data,$mode)
{
     global $PHP_SELF;
     $db = connect_db();
     if (!$data['auto_limit']) {
	     $data['auto_limit']=3;
	 }
	 if (!$data['page_limit']) {
	     $data['page_limit']=4;
	 }
	 
	 if (!$data['page_offset']) {
	     $data['page_offset']=0;
	 }

 	 if ($data['list_mode']=='all')
	 {
		 $where = " ";
		 $order = " order by tovar_name_rus";
	 }
	 
 	 if ($data['list_mode']=='dig')
	 {
		 $where = " where left(tovar_name_eng,1)>='0' and left(tovar_name_eng,1)<='9' or left(tovar_name_rus,1)>='0' and left(tovar_name_rus,1)<='9' ";
		 $order = " order by tovar_name_rus";
	 }
	 
     if ($data['eng_letter'] && $data['eng_letter']>='A' && $data['eng_letter']<='Z')
	 {
		 $where = " where left(tovar_name_eng,1)='{$data['eng_letter']}' ";
		 $order = " order by tovar_name_eng";
	 }

     if ($data['rus_letter'] && $data['rus_letter']>='А' && $data['rus_letter']<='Я')
	 {
		 $where = " where left(tovar_name_rus,1)='{$data['rus_letter']}' ";
		 $order = " order by tovar_name_rus";
	 }
	 
 	 if ($data['list_mode']=='genre')
	 {
		 $from = " tovar_genre_tovar, ";
		 $where = " where gnr_id='{$data['gnr_id']}' and tovar_genre_tovar.tovar_id=tovars.tovar_id ";
		 $order = " order by tovar_name_rus";
	 }
	 
	 if ($data['list_mode']=='rus_tovars')
	 {
		 $where = " where tovars.sq_id=9 or tovars.sq_id=11 ";
		 $order = " order by tovar_name_rus";
	 }
	 
 	 if ($data['list_mode']=='new' || !$where)
	 {
		 $where = " where tovar_add_date > date_sub(now(),interval 7 day) ";
		 $order = " order by tovar_add_date desc,tovar_name_rus ";
	 }
	 
	 $maintpl_data['tovars_list']='';
	 if ($where)
	 {
		 $query=mysql_query("select count(*) as num from $from tovars $where",$db);
		 $tovars_total=mysql_fetch_assoc($query);
		 $tovars_total=$tovars_total['num'];
		 $query = mysql_query("SELECT tovars.tovar_id,
									  tovars.tovar_name_rus,
									  tovars.tovar_name_eng,
									  tovars.tovar_rating,
									  tovars.tovar_add_date,
									  tovars.tovar_desc,
									  tovars.tovar_crdesc,
									  COUNT(tovar_comments.comment_id) AS cmt_num
									  FROM $from tovars LEFT OUTER JOIN tovar_comments ON tovars.tovar_id = tovar_comments.tovar_id
									  $where
									  GROUP BY tovars.tovar_id,
									  tovars.tovar_name_rus,
									  tovars.tovar_name_eng,
									  tovars.tovar_rating,
									  tovars.tovar_add_date,
									  tovars.tovar_crdesc,
									  tovars.tovar_desc $order 
									  limit {$data['page_offset']},{$data['page_limit']}",$db);
//------------------------ !!!

$count=0;

//------------------------ !!!
        while (is_array( $tpl_data=mysql_fetch_array($query) ) )
	    {
            $tpl_data['tovar_desc']=substr($tpl_data['tovar_desc'],0,400);
			if (strlen($tpl_data['tovar_desc'])==400)
			{
				for ($i=strlen($tpl_data['tovar_desc'])-1;$tpl_data['tovar_desc'][$i]!=' ' && $i>=0;$i--)
				{
					$tpl_data['tovar_desc'][$i]=' ';
				}
				$tpl_data['tovar_desc']=chop($tpl_data['tovar_desc']).'...';
			}
			$tpl_data['tovar_desc']=chop($tpl_data['tovar_desc']);
			
            $tpl_data=html_prepare_array($tpl_data);
			$tpl_data['name']="{$tpl_data['tovar_name_rus']} (".($tpl_data['tovar_name_eng']?$tpl_data['tovar_name_eng']:"---").")";
            $img_query = mysql_query("select img_id,image_height,image_width from tovar_images where tovar_id={$tpl_data['tovar_id']} ORDER BY img_id LIMIT 1",$db);
            while (is_array( $image=mysql_fetch_array($img_query) ) )
		    {
                $tpl_data['images'].="<a href='$PHP_SELF?name=tovars&tovars_mode=full_view&tovar_id={$tpl_data['tovar_id']}'><img height='100' width='140' border='0' alt='{$tpl_data['name']} (Нажмите, чтобы увидеть подробное описание товара)' title='{$tpl_data['name']} (Нажмите, чтобы увидеть подробное описание товара.)' class='tovars_images' src='$PHP_SELF?name=tovars&tovars_mode=get_image&img_id={$image['img_id']}'></a><br>";
			}
			if (!$tpl_data['images']) $tpl_data['images']='Нет картинок';
			$genre_query = mysql_query("select tovar_genre.gnr_id,gnr_text from tovar_genre_tovar inner join tovar_genre on tovar_genre.gnr_id=tovar_genre_tovar.gnr_id
											   where tovar_id={$tpl_data['tovar_id']}
											   ORDER BY gnr_text",$db);
            while (is_array( $genre=mysql_fetch_array($genre_query) ) )
		    {
	        	$tpl_data['gnr_text'].=htmlspecialchars($genre['gnr_text'],ENT_QUOTES).",";
			}
			if (!$tpl_data['gnr_text']) $tpl_data['gnr_text']='Не определен';
 {
            $tpl_data['gnr_text']=substr($tpl_data['gnr_text'],0,strlen($tpl_data['gnr_text'])-1 );}
//------------------------------------- !!!
            
	    if ($count == 3) {
            $maintpl_data['tovars_list'].=to_template("tovars_one_tpl_short.htm",$tpl_data);
            $maintpl_data['tr']="<tr>";
	    $count = 0;
            }

//------------------------------------ !!!

		}
	 }
	 $data['rus_letter']=rawurlencode($data['rus_letter']);
	 $data['eng_letter']=rawurlencode($data['eng_letter']);
	 $data['tovar_string']=rawurlencode($data['tovar_string']);

//-- страницы -- 
	 $page_data['current_page']="Стр <strong>".(intval($data['page_offset']/$data['page_limit'])+1)."</strong> из <strong>".(intval($tovars_total/$data['page_limit']-0.1)+1)."</strong>";
	 $page_data['total']="Всего: <strong>$tovars_total<strong>";
//Пред
 	 if ($data['page_offset']-$data['page_limit']>=0) {
		 	$page_data['pages'].="&nbsp;<a class='pagesLinks' href='$PHP_SELF?page_offset=".($data['page_offset']-$data['page_limit'])."&page_limit={$data['page_limit']}";
			$page_data['pages'].=$data['tovar_string']?"&tovar_string={$data['tovar_string']}":'';
			$page_data['pages'].=$data['eng_letter']?"&eng_letter={$data['eng_letter']}":'';
			$page_data['pages'].=$data['rus_letter']?"&rus_letter={$data['rus_letter']}":'';
			$page_data['pages'].=$data['gnr_id']?"&gnr_id={$data['gnr_id']}":'';
			$page_data['pages'].=$data['list_mode']?"&list_mode={$data['list_mode']}":'';
			$page_data['pages'].=$data['tovars_mode']?"&tovars_mode={$data['tovars_mode']}":'';
			$page_data['pages'].="'><strong>&lt;&lt;</strong></a>&nbsp;\n";   
		}else
		{
			$page_data['pages'].="&nbsp;<strong>&lt;&lt;</strong>&nbsp;\n";
		}
	$cnt=0;
	$offset=0;
	if ($data['page_offset']-($data['page_limit']*3)>=0) {
	    $offset=$data['page_offset']-($data['page_limit']*3);
	}
	 while ($tovars_total>$offset && $cnt<8)
	 {
	 	$pagecounter=$offset/$data['page_limit']+1;
		$cnt++;
		if ($offset!=$data['page_offset']) {
			$page_data['pages'].="<a class='pagesLinks' href='$PHP_SELF?modules=tovars&page_offset=$offset&page_limit={$data['page_limit']}";
			$page_data['pages'].=$data['tovar_string']?"&tovar_string={$data['tovar_string']}":'';
			$page_data['pages'].=$data['eng_letter']?"&eng_letter={$data['eng_letter']}":'';
			$page_data['pages'].=$data['rus_letter']?"&rus_letter={$data['rus_letter']}":'';
			$page_data['pages'].=$data['gnr_id']?"&gnr_id={$data['gnr_id']}":'';
			$page_data['pages'].=$data['list_mode']?"&list_mode={$data['list_mode']}":'';
			$page_data['pages'].=$data['tovars_mode']?"&tovars_mode={$data['tovars_mode']}":'';
			$page_data['pages'].="'> $pagecounter </a>&nbsp;\n";
		}else{
			$page_data['pages'].="| $pagecounter |&nbsp;\n";
		}
		$offset+=$data['page_limit'];
	 } 	 
	 if ($data['page_offset']+$data['page_limit']< $tovars_total) {
		 	$page_data['pages'].="&nbsp;<a class='pagesLinks' href='$PHP_SELF?modules=tovars&page_offset=".($data['page_offset']+$data['page_limit'])."&page_limit={$data['page_limit']}";
			$page_data['pages'].=$data['tovar_string']?"&tovar_string={$data['tovar_string']}":'';
			$page_data['pages'].=$data['eng_letter']?"&eng_letter={$data['eng_letter']}":'';
			$page_data['pages'].=$data['rus_letter']?"&rus_letter={$data['rus_letter']}":'';
			$page_data['pages'].=$data['gnr_id']?"&gnr_id={$data['gnr_id']}":'';
			$page_data['pages'].=$data['list_mode']?"&list_mode={$data['list_mode']}":'';
			$page_data['pages'].=$data['tovars_mode']?"&tovars_mode={$data['tovars_mode']}":'';
			$page_data['pages'].="'><strong>&gt;&gt;</strong></a>&nbsp;\n";   
		}else
		{
			$page_data['pages'].="&nbsp;<strong>&gt;&gt;</strong>&nbsp;\n";
		}

//------------------------------	 
	 $page_data=to_template("tovars_page_list.htm",$page_data);
	 $maintpl_data['tovars_list']=$maintpl_data['tovars_list'].$page_data;
 	 $ret.=to_template("tovars_main_tpl.htm",$maintpl_data);
	 return $ret;
//-----------------------------

}
 

Фанат

oncle terrible
Команда форума
Тема закрыта.

Формулируйте вопрос так, чтобы его могли понять не только Вы.
Не пишите больше 10-15 строк кода.
Никто не будет вникать в Ваш код длиной 100 строк.
Правила форума: http://phpclub.ru/talk/announcement.php?s=&forumid=12

-~{}~ 06.02.05 13:40:

Botokill
мне жаль закрывать твою тему. я стараюсь не делать этого, если человек написал первое сообщение на форум.
И дело здесь даже не в том, что ты не удосужился прочесть правила форума.

А в том, что вообще задавать вопросы вида
подскажите, пожалуйста, что я здесь сделал не так?
- далеко не лучшая идея.
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху