2011-12-17 1 views
-1

У меня есть таблица со строкой из 3 div, затем другая строка или 3 div, затем другая, а затем другая.php дать класс 3 div, а затем пропустить 3

Но я пытаюсь выделить все остальные строки. И каждая строка содержит 3 div.

Таким образом, первая строка будет .mydiv .even, а затем .even будет серым. Затем следующая строка будет .mydiv .odd, а затем .odd будет белой.

Я использую этот код css-tricks.com ($xyz++%2), чтобы сделать каждый другой div другим классом.

Вся помощь приветствуется.


Это мой код

$get_new_games = mysql_query("SELECT game_title,game_description,id from games ORDER BY added_date LIMIT 10"); 
while ($row = mysql_fetch_array($get_new_games)) { 
$new_game_title = $row['game_title']; 
$new_game_description = $row['game_description']; 
$new_game_id = $row['id']; 
$new_games_display .= '<div class = "game_module class-'.($xyz++%2).'"><img src = "game_thumbnails/'.$new_game_id.'/_thumb_100x100.png" class = "game_img"></div>'; 
} 
+0

разместить свой код плз ... – hungneox

+0

Вы можете разместить некоторый пример кода, например, для цикла, который вы используете для создания строки таблицы? – cmbuckley

+0

В чем вопрос? – FakeRainBrigand

ответ

1

Было бы больше смысла, чтобы добавить класс в строку, чтобы вывести строки таблицы в PHP, используйте примерно следующее:

<?php for ($i = 0; $rows[$i]; $i ++): ?> 
<tr class="<?php echo $i % 2 ? 'odd' : 'even'; ?>"> 
    <td> 
    <div /> 
    </td> 
    <td> 
    <div /> 
    </td> 
    <td> 
    <div /> 
    </td> 
</tr> 
<?php endfor; ?> 

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

Селектор для div бы тогда:

tr.odd td > div 
tr.even td > div 

это будет убедиться, что только верхний div в каждой строке выбран.

UPDATE:

Из кода вы снабдив его на самом деле не появляется вы используете таблицу на всех (возможно, вы имели в виду его в более свободном смысле, чем фактический HTML элемент?). По вашему коду вы уже используете modulo описанным выше способом, но вам нужно изменить следующее.

$xyz = 0; 
$get_new_games = mysql_query("SELECT game_title,game_description,id from games ORDER BY added_date LIMIT 10"); 
while ($row = mysql_fetch_array($get_new_games)) { 
    $new_game_title = $row['game_title']; 
    $new_game_description = $row['game_description']; 
    $new_game_id = $row['id']; 
    $new_games_display .= '<div class = "game_module class-'.($xyz++%2 ? 'odd' : 'even').'"><img src = "game_thumbnails/'.$new_game_id.'/_thumb_100x100.png" class = "game_img"></div>'; 
} 

Я добавил первую строку инициализировать переменную в ноль и изменил $new_games_display -LINE на ($xyz++%2 ? 'odd' : 'even'). Это гарантирует, что каждый другой div имеет класс class-odd, а остальные class-even.

Единственная проблема, с которой я столкнулся, заключается в том, что код, который вы предоставили, действительно не соответствует вашей первоначальной проблеме, с строками из трех div s, может быть, я чего-то не хватает - не стесняйтесь поставлять больше кода, и я Я смогу помочь тебе больше.

+0

, вы можете добавить примечание о селекторе css '.odd div' вместо' .odd'. – FakeRainBrigand

+0

@FakeRainBrigand: хорошая точка, я отредактировал и добавил информацию о селекторах. – zrvan

0

В то время как цикл до конца и распечатки строки, вы будете использовать индекс, чтобы определить, четный или нечетный.

if(!$index%2){ 
    echo "even"; 
} 
else{ 
    echo "odd"; 
} 

% - оператор модуля, который возвращает остаток, когда его операнды делятся.

Edit: Так что в вашем случае, ваша последняя строка будет

$new_games_display .= '<div class = "game_module class-'.(($xyz++%2) ? 'odd' : 'even').'"><img src = "game_thumbnails/'.$new_game_id.'/_thumb_100x100.png" class = "game_img"></div>';

+0

Я не уверен, что это даст 3 класса (в строке), а затем 3 не класс (в строке), как даже даже четный нечетный нечетный – Frank

+0

Ну, используя эту информацию, я уверен, что вы можете понять как это сделать. Ваш код не выводит 3divs за строку, и вы не четко сформулировали свой вопрос. – Vigrond

+0

Извините? Ну, извините за непонятное выражение моего вопроса, вы тоже не идеальны. – Frank

0

попробовать некоторые вещи, как это:

$i = 0; 
while ($row = mysql_fetch_array($get_new_games)) 
{ 
... 
$i++; 
$class = ($i%2)? "even" : "odd"; 
$new_games_display .= '<div class = "game_module class-' . $class .'"><img src = "game_thumbnails/'.$new_game_id.'/_thumb_100x100.png" class = "game_img"></div>'; 
} 

вместо проверки $i%2 ==0 или вы не можете использовать что-то вроде

$class = ($i & 1) ? "odd" : "even"; 

или

if($i & 1){ 
    $class = "odd"; 
}else{ 
    $class = "even"; 
} 
0

Ваш код выделяет только каждую строку, а не группы из трех строк. Вы можете использовать селектор css :nth-child, но использование php обеспечит совместимость с браузером, так как класс жестко закодирован. Во всяком случае ..

$evenodd = false; // false indicates odd 
$count = 0; 

while (...) { 
    ... //display 
    $count++; 
    if ($count == 2) { 
     $evenodd = !$evenodd; 
     $count = 0; 
    } 
} 
Смежные вопросы