php pdo每秒都有红色元素

时间:2017-04-04 19:15:10

标签: php mysql select pdo

我有一个数据库,我希望每个第二个元素都以绿色着色。

$sql=$pdo->query("SELECT * FROM blume WHERE 1");
$i = 0;

while($row = $query->fetch(PDO::FETCH_ASSOC)) {
  if ($i % 2 == 0){ echo '<div class="red">'.$row ['title'].'</div>';}
  else {echo '<div class="green">'.$row ['title'].'</div>'; 
  $i++;   
}

这个不起作用。我总是全都是绿色的,而且都是红色的。

2 个答案:

答案 0 :(得分:1)

检查此代码。你需要增加$ i的值,而你却错过了关闭标记&#39;}&#39;

$sql=$pdo->query("SELECT * FROM blume WHERE 1");
$i = 0;

 while($row = $query->fetch(PDO::FETCH_ASSOC)) {
if ($i % 2 == 0){ echo '<div class="red">'.$row ['title'].'</div>';}
 else {echo '<div class="green">'.$row ['title'].'</div>' };
 $i++;    
}

您也可以将此代码用于代码。这是一个简单的条件,因此您的代码将更具可读性

<?php 
$sql=$pdo->query("SELECT * FROM blume WHERE 1");
$i = 0;
while($row = $query->fetch(PDO::FETCH_ASSOC)) {
  $class = ($i % 2 == 0) ? 'red' : 'green';
  echo '<div class="'.$class.'">'.$row ['title'].'</div>';    
  $i++;
 }
?>

答案 1 :(得分:0)

你可以清理一下,使用你在之间切换的颜色数组来获得你想要的效果:

$sql=$pdo->query("SELECT * FROM blume WHERE 1");
$colors = array('red', 'green');
$i = 0;

while($row = $query->fetch(PDO::FETCH_ASSOC)) {
  echo sprintf('<div class="%s">%s</div>', $colors[$i%2], $row['title']);

  $i++;
}

由于$i%2返回0或1,因此将索引数组中两个元素之一。