чередование цветов

Статус
Закрыто для дальнейших ответов.

diablo

Active Member
Регистрация
11.04.2007
Сообщения
31
Искал описание столь широко распространенного метода оформления страниц, но почему-то ни чего толкового не нашел... Может кто поможет хотя бы ссылочками? :blush:
 

deMone

Злой страшный дядька
Регистрация
30.01.2006
Сообщения
937
А сами-то что, не догадываетесь?

У каждого чётного <tr> для каждого <td> пишете background-color: первый цвет.
У каждого нечётного <tr> для каждого <td> пишете background-color: второй цвет.

Что непонятного-то?
 

diablo

Active Member
Регистрация
11.04.2007
Сообщения
31
А сами-то что, не догадываетесь?

У каждого чётного <tr> для каждого <td> пишете background-color: первый цвет.
У каждого нечётного <tr> для каждого <td> пишете background-color: второй цвет.

Что непонятного-то?
Это-то как раз понятно... Просто не точно написал вопрос. Как определять чет/не чет строк? Сделал вариан, через id записи в БД, но если пользователь удалит запись, то пойдет косяк - в двух строках подрят, будет один цвет - а это не есть гуд.
 

deMone

Злой страшный дядька
Регистрация
30.01.2006
Сообщения
937
Вы ведь выводите записи в цикле, так? Ну вот и делайте:
Код:
$color = "gray";
while ( … ) {
	echo '<tr style="background-color: ' . $color . ';"> … </tr>';
	$color = ($color == 'gray') ? 'white' : 'gray';
}
 

diablo

Active Member
Регистрация
11.04.2007
Сообщения
31
Вы ведь выводите записи в цикле, так? Ну вот и делайте:
Код:
$color = "gray";
while ( … ) {
	echo '<tr style="background-color: ' . $color . ';"> … </tr>';
	$color = ($color == 'gray') ? 'white' : 'gray';
}
...был бы там ТОЛЬКО цикл, было бы проще... а там инфа выводиться так:
Код:
запись запись запись запись запись

	   запись запись

	   запись запись

	   запись запись

	   запись запись

	   запись запись

-------------------------------------
запись запись запись запись запись

	   запись запись

	   запись запись

	   запись запись

	   запись запись

	   запись запись
И из-за подобной конструкции, вылезают косяки...
Как временное решени, привязал чередование цветов, к проверке чет/не чет id записей. Но ведь если юзверь удалит запись, чередование цветов нарушиться, и появиться косяк, что 2(или более) раза подрят будут идти два динаковых цвета.
 

DnAp

self::setDebugMode(true);
Регистрация
30.04.2005
Сообщения
490
Поподробней про эту конструкцию вывода расскажи...
Желательно с кусками кода...
 

diablo

Active Member
Регистрация
11.04.2007
Сообщения
31
Поподробней про эту конструкцию вывода расскажи...
Желательно с кусками кода...
...с кусками кода!?...
Ну давай попробуем... Если будут вопросы по поводу используемых классов, спроси, поясню.
Код:
<?php

	$clients=array();
	$db->query("SELECT * FROM имя_таблицы_в_БД");
	while($db->fetch()){$clients[$db->data->id]=$db->data->name;}

	reset($clients);
	while(list($key,$value)=each($clients)){
	  $db->query("SELECT * FROM имя_таблицы_в_БД WHERE id_structure='переменная_со_значением_id_записи_ в_БД'");
	  while($db->fetch()){
		$date=$db->data->date;
		$comment=$db->data->comment;
		$name=ereg_replace("\r","",$name);
		$name=ereg_replace("\n","<br>",$name);
	  }
	  
	  $filter=array();
	  $air=array();
	  $db->query("SELECT * FROM имя_БД WHERE id_structure='переменная_со_значением_id_записи_ в_БД'");
	  while($db->fetch()){
		$filter[]=$db->data->filter;
		$air[]=$db->data->air;
	  }
	  $filter=join('<br><table width="150px" border="0" cellpadding="0" cellspacing="0"><tr style="background: #afafaf; height: 1px;"><td width="150px"></td></tr></table>',$filter);
	  $air=join('<br><table width="150px" border="0" cellpadding="0" cellspacing="0"><tr style="background: #afafaf; height: 1px;"><td width=150px"></td></tr></table>',$air);


/*Чередование цветов таблицы*/
  $result = mysql_query("SELECT 'переменная_со_значением_id_записи_ в_БД' FROM имя_таблицы_в_БД");
  $post = mysql_num_rows($result);
   $i=$key;
	if($i%2==0){ $color="#f0f0f0"; } else { $color="#FFFFFF"; }
/*Конец кода*/


		  print "	   <table class=\"client\" valign=\"top\" align=\"center\" width=\"850px\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\">\n";
		  print "		<tr bgcolor=\"$color\" valign=\"top\" width=\"850px\">\n";
		  print "		 <td width=\"200px\" align=\"center\">$value</td>\n";
		  print "		 <td><table width=\"300px\" class=\"clients\" align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\">\n";
		  print "		   <tr width=\"300px\"><td width=\"150px\"align=\"center\"valign=\"top\">$filter</td>\n";
		  print "			<td width=\"150px\"align=\"center\"valign=\"top\">$air</td></tr>\n";
		  print "		  </table></td>\n";
		  print "		 <td width=\"150px\" align=\"center\">$date</td>\n";
		  print "		 <td width=\"200px\" align=\"justify\">$comment</td>\n";
		  print "		</tr>\n";
		  print "	   </table>\n";
	}

?>
 

Alterbit

Well-Known Member
Регистрация
10.05.2005
Сообщения
78
эх..., вы про разделение кода и представления слышали?

попробуйте так

вне цикла
Код:
$i=1;
в цикле
Код:
	$color = $i % 2 ? "#FFFFFF" : "#f0f0f0";
	$i++;
если нужно в цикле при определенных условиях счетчик можно сбрасывать
 

diablo

Active Member
Регистрация
11.04.2007
Сообщения
31
Этот код я в сети и сам находил...
Не катит...
 
Статус
Закрыто для дальнейших ответов.
Верх Низ