在mysql查询中的前两个后插入不同的行

时间:2012-03-23 19:22:14

标签: php mysql

我有一个简单的MySQL查询while循环。我需要的是在每次第二次更改后<div id="bigdivider"></div>更改为<div id="productdivider"></div> 可能吗?或者我需要一些功能来执行该任务?

query="select * FROM prekes";
mysql_query("SET NAMES 'UTF8'"); 
$rt=mysql_query($query);         
echo mysql_error(); 
while($laukelis=mysql_fetch_array($rt)){
    $id=$laukelis['id'];
    $pavadinimas=$laukelis['preke'];
    $gamintojas=$laukelis['gamintojas'];
    $kaina = $laukelis['kaina'];
    $data = $laukelis['data'];
    $foto = $laukelis['foto'];
    $nuoroda = 'info.php';
        if (isset ($_SESSION['user'])){
echo '<div id="pro"><a href="#"><h1>'.$gamintojas.' "'.$pavadinimas.'"</h1></a><img class="float-left" src="prekiu_foto/'.$foto.'"width="187" height="134" alt="" /><p>Kaina: '.$kaina.'lt</p><a href="#" id="buyit"></a></div><div id="bigdivider"></div>';
}else{
echo '<div id="pro"><a href="#"><h1>'.$gamintojas.' "'.$pavadinimas.'"</h1></a><img class="float-left" src="prekiu_foto/'.$foto.'"width="187" height="134" alt="" /><p>Kaina: '.$kaina.'lt</p></div><div id="bigdivider"></div>';
}
}

2 个答案:

答案 0 :(得分:1)

您的语言有点令人困惑,无论您是想要每隔一行交换div,还是每隔三行使用productdivider。以下是后者使用计数器并在不同div之间交换的示例:

// use a counter
$i = 0;
while (...) {
    // first and second of three is bigdivider
    if ($i % 3 < 2)
        $divcode = '<div id="bigdivider"></div>';
    // after every second one, use productdivider instead
    else
        $divcode = '<div id="productdivider"></div>';

    ...
    // replace div part with $divcode
    // obviously use all your other logic still, this is just a sample
    echo '...<a href="#" id="buyit"></a></div>'. $divcode
    ...

    // increment the counter
    $i++;
}

答案 1 :(得分:0)

添加一个变量,它将跟踪它是第一个还是第二个(如果测试它是第一个还是第二个,那么你可以使用一个布尔变量,否则使用一个整数计数器),然后根据它做一个if / else变量

变量应该在循环之前初始化,然后为循环的每次迭代切换值。

或者您可以通过将while循环替换为“for”循环来采取替代方法,如下面的代码所示:

for($i = 1;$laukelis=mysql_fetch_array($rt);i++)

然后在代码中使用模运算符来测试它是否是第二次迭代。

即使在使用布尔变量时也可以使用此方法,如下面的代码所示:

 for($is_even=false;$laukelis=mysql_fetch_array($rt);$is_even=!$is_even)