0

我有一个名为 container 的 div,在容器内部我有两个 div column1 和 column2。在 column1 和 column2 内部我必须从数据库中获取记录并且必须在此处显示它。我的代码如下所示

  <div id="container" style="height:600px; width:600px; border:1px solid #990000">
 <?php $str=mysql_query("SELECT * FROM users") or die(mysql_error());
  while($rec=mysql_fetch_array($str){
 ?>
<div id="column1" style="height:200px; width:295px; border:1px solid #0000FF;float:left;">

  /*Here this record should be of id=1 */
 <img src="<?php echo $rec['pic'];?>" alt="No image" />
 <?php echo $rec['detail'];
</div>
<div id="column2" style="height:200px; width:295px; border:1px solid #0000FF;float:left;">

 /*Here this record should be of id=2 */
<img src="<?php echo $rec['pic'];?>" alt="No image" />
 <?php echo $rec['detail'];
</div>
 <?php } ?>

我想在 id=1 和 column2 id=2 的用户的 column1 记录中,在 column1 id=3 和 column2 id=4 中再次记录,依此类推。在这个循环中有什么帮助我吗?

4

2 回答 2

1

顺便说一句,您正在使用已弃用的扩展程序。我强烈建议您使用较新的MySQLiPDO扩展来与 PHP 中的 MySQL 数据库交互以进行新的开发,因为这将使您的工作变得更加轻松。

您想要做的事情的答案是简单地以 2 的倍数遍历结果集,这可以通过 PDO 扩展实现,如下所示。

<div id="container">
<?php
$pdo = new PDO('mysql:dbname=testdb;host=127.0.0.1', 'mysqlusername', 'mysqlpassword');
$stmt = $pdo->query('SELECT * FROM users');
$result = $stmt->setFetchMode(PDO::FETCH_ASSOC);

/* And now do your loop in pairs of two */

foreach (array_chunk($result, 2) as $pair) {
    ?>
    <div id="1">
        <?php echo $pair[0]['detail']; ?>
    </div>
    <div id="2">
        <?php echo $pair[1]['detail']; ?>
    </div>
    <?php
}
?>
</div>

另一种选择是使用计数器并在每次迭代时翻转它,然后根据条件确定要为循环的这次迭代输出哪个 div。

<div id="container">
<?php
$pdo = new PDO('mysql:dbname=testdb;host=127.0.0.1', 'mysqlusername', 'mysqlpassword');
$stmt = $pdo->query('SELECT * FROM users');
$result = $stmt->setFetchMode(PDO::FETCH_ASSOC);

/* And now do your loop in pairs of two */

$div = 0;
foreach ($result as $row) {
    $div ^= 1; // bitwise XOR
    if ($div) { // If it's odd show the first div
        ?>
        <div id="1">
            <?php echo $row['detail']; ?>
        </div>
        <?php
    } else {  // If it's even show the second div
        ?>
        <div id="2">
            <?php echo $row['detail']; ?>
        </div>
        <?php
    }
}
?>
</div>
于 2012-12-07T14:35:39.393 回答
0

这就是循环的全部内容。应该看起来像这样:

<div id="container" style="height:600px; width:600px; border:1px solid #990000">
<?php
$count = 0;
$result = mysql_query("SELECT * FROM users") or die(mysql_error());
if (mysql_num_rows($result) > 0) {
    while ($row = mysql_fetch_array($result)) {
        $count++;
?>
    <div id="column<?php if($count&1) { echo "1"; } else { echo "2"; } ?>" style="height:200px; width:295px; border:1px solid #0000FF;float:left;">
        <img src="<?php echo $row['pic']; ?>" alt="No image" />
        <?php echo $row['detail']; ?>
    </div>
<?php
    }
}
?>
</div>
于 2012-12-07T14:43:37.477 回答