0

コンテナという名前の div があり、コンテナ内に 2 つの div 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 を持つユーザーの column1 レコードと column2 id=2 を持ち、column1 id=3 と column2 id=4 などを持ちたいと思います。このループで私を助けてくれますか?

4

2 に答える 2

1

ちなみに、非推奨の拡張機能を使用しています。新しい開発では、新しいMySQLiまたはPDO拡張機能を使用して、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>

もう 1 つのオプションは、カウンターを使用し、各反復でそれを反転し、その後に条件を付けて、ループのこの反復で出力する 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 に答える