2013-10-13 1 views
1

내가 쓴 간단한 while 루프 : 다른 모든 행은 흰색이며, 다른 모든 행이 회색이되도록CSS 클래스를 교대로 사용하는 동안/For Loop?

while($fetch = $stm->fetchAll()) { 
    echo '<tr class=""'>; 
    echo '<td>' . $fetch['name'] . '</td>'; 
    echo '</tr>'; 
} 

가 어떻게 클래스 = ""대체 매번 만들 수 있습니까? 나는 이미 CSS 클래스 "greyRow"를 가지고 있지만 논리적으로 그것을 사용하여 PHP에서 대체 할 수있는 방법을 모른다.

for 루프가 필요하다고 가정하고 싶지만 어떻게하려고합니까?

감사합니다.

답변

0

내 방법입니다
2

간단한 방법은

$odd_row = 1; 
while($fetch = $stm->fetchAll()) { 
    if ($odd_row == 0) 
     echo '<tr>'; 
    else 
     echo '<tr class="greyRow">'; 
    echo '<td>' . $fetch['name'] . '</td>'; 
    echo '</tr>'; 
    $odd_row = !$odd_row; 
} 

을 "계산"하는 변수를 구현하는 것입니다 그러나 엄격하게 CSS를 사용하여 더 나은 방법이있다. $counter % 2 == 0 (또는 !($counter % 2))는 짝수 행에 있다면

Using CSS :even and :odd pseudo-classes with list items

2

당신은 카운터 변수를 사용할 수 있습니다. 그렇지 않으면 이상합니다.

$counter = 1; 
while($fetch = $stm->fetchAll()) { 
    echo '<tr class="', (!($counter % 2) ? 'even' : 'odd'), '">'; 
    echo '<td>' . $fetch['name'] . '</td>'; 
    echo '</tr>'; 
    $counter++; 
} 

또한 단지 nth-child CSS 선택기를 시도하고 모든 PHP에서이 일을 피할 수 있습니다. 그러나 크로스 브라우저가 아닙니다. IE < 8을 지원해야하는 경우 위의 작업을 수행해야합니다.

예 :

while($fetch = $stm->fetchAll()) { 

    if(!isset($row_num)) $row_num = 1; // at first $row_num does not exist so create it and make uneven (start with 1) 
    $row_class = (++$row_num % 2) ? 'even' : 'odd'; // then check whether $row_num is odd or even and assign it the corresponding class name 

    echo '<tr class="'.$row_class.'">'; 
    echo '<td>' . $fetch['name'] . '</td>'; 
    echo '</tr>'; 
} 
: 여기
#your-table tr:nth-child(odd) { 
    // style odd rows differently 
} 
관련 문제