2012-03-23 45 views
1

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

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>'; 
} 
} 

回答

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++; 
} 
+0

谢谢你,它的工作完美:

即使在使用布尔变量如下面的代码,你可以使用这种方法。 – 2012-03-23 19:44:56

0

添加一个变量,跟踪无论是第一或第二(如果测试无论是第一还是第二,那么你可以使用布尔变量,否则使用整数计数器),并根据变量执行if/else。

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

或者您也可以通过subsituting的“for”循环while循环采取一种替代方法,如下面的代码:

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

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

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