php полосатые таблицы по четным строкам

zaffasoft

Постоялец
Регистрация
2 Янв 2007
Сообщения
51
Реакции
9
Имеется кусок кода на php. Задача: вести динамические полосатые таблицы по четным строкам.А так же, когда наводишь мышкой, появляется "Highlight" эффект. Сделал я таким образом.
PHP:
<style type="text/css">
tr.style td.even
{
   background-color:#FFF;
   color:#efefef;
}
tr.style td.odd
{
   background:#efefef;
   color:#FFF;
}
</style>

<?php

define("HOST","localhost");
define("USER","root");
define("PASS","");
define("DB","db");

$link=mysql_connect(HOST,USER,PASS) or die (mysql_error());

mysql_select_db(DB, $link);

mysql_query ("SET NAMES utf8");
mysql_query ("set character_set_client='utf8'");
mysql_query ("set character_set_result='utf8'");
mysql_query ("set collation_connection='utf8_general_ci'");

$sql="SELECT sys_users.`name`, sys_users.`id`, COUNT(sys_article_votes.`userid`) AS userid 
			FROM sys_article_votes
			INNER JOIN sys_users 
			ON sys_article_votes.`userid`=sys_users.`id` 
			GROUP BY sys_article_votes.`userid`	
			ORDER BY COUNT(sys_article_votes.`userid`) DESC
			LIMIT 0 , 10";

$result=mysql_query($sql) or die (mysql_error() ."<br/>" . $sql);

$i = 0;
$table = "<table class=echo ($i % 2 ? 'even' : 'odd')  border=0 width=100% aligh=center>\n";

while($row=mysql_fetch_assoc($result))
{
	$table .="<tr>\n";
	$table .='<td><a href="index.php?id='.$row['id'].'">'.$row['name']."</a></td>\n";
	$table .="<td>".$row['userid']."</td>\n";
	$table .="</tr>\n";
}
	
	$table .="</table>\n";
echo $table;

В итоге не получилось, что я хотел. Поправьте меня.
За ранее спасибо.
 
Нагородил конечно :)
PHP:
$i=0;
$table = "<table border=0 width=100% aligh=center>\n";

while($row=mysql_fetch_assoc($result))
{
    $i++;
    $table .="<tr class='".(($i % 2) ? 'even' : 'odd')."'>\n";
    $table .='<td><a href="index.php?id='.$row['id'].'">'.$row['name']."</a></td>\n";
    $table .="<td>".$row['userid']."</td>\n";
    $table .="</tr>\n";
}
    
    $table .="</table>\n";
echo $table;

Добавлено через 7 минут
Со стилями тоже прикольно :)
Код:
tr.even
{
   background-color:#FFF;
   color:#efefef;
}
tr.odd
{
   background:#efefef;
   color:#FFF;
}
Также не наблюдаю стилей при наведении.
 
за реакцию на наведение мыши отвечает псевдокласс :hover если мне не изменяет память...
Добавить свойство
tr:hover {
background-color: #786b59;
color: #ffe;
}
и будут строки подсвечиваться...
 
можно просто:
PHP:
$h = 1;
$table = "<table border=0 width=100% aligh=center>\n";
while($row=mysql_fetch_assoc($result))
{
    $h *= -1;// т.е. умножаем на -1 (1 * (-1) = -1) ((-1) * (-1)) = 1
    $table .="<tr class='".(($h < 0) ? 'even' : 'odd')."'>\n";
    $table .='<td><a href="index.php?id='.$row['id'].'">'.$row['name']."</a></td>\n";
    $table .="<td>".$row['userid']."</td>\n";
    $table .="</tr>\n";
}
    $table .="</table>\n";
echo $table;
 
можно просто:
PHP:
$h = 1;
$table = "<table border=0 width=100% aligh=center>\n";
while($row=mysql_fetch_assoc($result))
{
    $h *= -1;// т.е. умножаем на -1 (1 * (-1) = -1) ((-1) * (-1)) = 1
    $table .="<tr class='".(($h < 0) ? 'even' : 'odd')."'>\n";
    $table .='<td><a href="index.php?id='.$row['id'].'">'.$row['name']."</a></td>\n";
    $table .="<td>".$row['userid']."</td>\n";
    $table .="</tr>\n";
}
    $table .="</table>\n";
echo $table;
А чем это проще проверки на четность?
 
Тему можно закрывать.
Для активации hover эффекта, достаточно прописать в css
PHP:
tr.odd:hover
{background-color:#ffffdd;
}
 
хм... как-то все единогласны, но вот мне вериться что hover на tr вешать далеко не кроссбраузерно, да и фон тоже лучше уже определять фон для вложенных td - это гарантировано для всех браузеров.
 
хм... как-то все единогласны, но вот мне вериться что hover на tr вешать далеко не кроссбраузерно, да и фон тоже лучше уже определять фон для вложенных td - это гарантировано для всех браузеров.
Браузер Internet Explorer 6 не поддерживает псевдокласс hover для любых селекторов кроме A. Если этим говнобраузером пренебречь, то все норм)
 
хм... как-то все единогласны, но вот мне вериться что hover на tr вешать далеко не кроссбраузерно, да и фон тоже лучше уже определять фон для вложенных td - это гарантировано для всех браузеров.
Так ведь речь шла о строках, а не о ячейках таблицы. Да и ie6 вообще не браузер. Я в последнем проекте вообще забил верстать под него (не свосем конечно) и тактично прошу пользователей поставить че-нидь человеческое.
 
не лучше ли сделать полосатость строк в таблице полностью с css
PHP:
tr:nth-child(odd) {
 background-color:#fafafa;
 color: inherit;
}

tr:nth-child(even) {
 background-color:#efefef;
 color: inherit;
}
 
Назад
Сверху