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

Тема в разделе "PHP", создана пользователем zaffasoft, 22 фев 2011.

Модераторы: latteo
  1. zaffasoft

    zaffasoft Создатель

    Регистр.:
    2 янв 2007
    Сообщения:
    42
    Симпатии:
    7
    Имеется кусок кода на 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;
    В итоге не получилось, что я хотел. Поправьте меня.
    За ранее спасибо.
     
  2. a_n_d_y

    a_n_d_y

    Регистр.:
    26 мар 2006
    Сообщения:
    465
    Симпатии:
    61
    Нагородил конечно :)
    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;
    }
    Также не наблюдаю стилей при наведении.
     
    zaffasoft нравится это.
  3. dino

    dino

    Регистр.:
    28 май 2009
    Сообщения:
    550
    Симпатии:
    204
    за реакцию на наведение мыши отвечает псевдокласс :hover если мне не изменяет память...
    Добавить свойство
    tr:hover {
    background-color: #786b59;
    color: #ffe;
    }
    и будут строки подсвечиваться...
     
  4. CnecHa3

    CnecHa3 Постоялец

    Регистр.:
    10 фев 2007
    Сообщения:
    105
    Симпатии:
    20
    можно просто:
    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
     
  5. saen

    saen

    Регистр.:
    6 авг 2006
    Сообщения:
    756
    Симпатии:
    129
    А чем это проще проверки на четность?
     
  6. zaffasoft

    zaffasoft Создатель

    Регистр.:
    2 янв 2007
    Сообщения:
    42
    Симпатии:
    7
    Тему можно закрывать.
    Для активации hover эффекта, достаточно прописать в css
    PHP:
    tr.odd:hover
    {background-color:#ffffdd;
    }
     
    DenisK нравится это.
  7. Julic

    Julic Писатель

    Регистр.:
    1 июл 2009
    Сообщения:
    3
    Симпатии:
    0
    хм... как-то все единогласны, но вот мне вериться что hover на tr вешать далеко не кроссбраузерно, да и фон тоже лучше уже определять фон для вложенных td - это гарантировано для всех браузеров.
     
  8. saen

    saen

    Регистр.:
    6 авг 2006
    Сообщения:
    756
    Симпатии:
    129
    Браузер Internet Explorer 6 не поддерживает псевдокласс hover для любых селекторов кроме A. Если этим говнобраузером пренебречь, то все норм)
     
  9. a_n_d_y

    a_n_d_y

    Регистр.:
    26 мар 2006
    Сообщения:
    465
    Симпатии:
    61
    Так ведь речь шла о строках, а не о ячейках таблицы. Да и ie6 вообще не браузер. Я в последнем проекте вообще забил верстать под него (не свосем конечно) и тактично прошу пользователей поставить че-нидь человеческое.
     
  10. Fubu_By

    Fubu_By Создатель

    Регистр.:
    2 ноя 2010
    Сообщения:
    33
    Симпатии:
    2
    не лучше ли сделать полосатость строк в таблице полностью с css
    PHP:
    tr:nth-child(odd) {
     
    background-color:#fafafa;
     
    colorinherit;
    }

    tr:nth-child(even) {
     
    background-color:#efefef;
     
    colorinherit;
    }