0

私は2つのテーブルを持っています。1つは左に浮き、もう1つは右に浮きました。各テーブルには8行が含まれており、そのうちのクエリの結果を表示します。左側のテーブルに最初の8レコードを表示し、右側のテーブルに次の8レコードを表示したいのですが、現在、右側のテーブルにレコード番号8〜16を表示する方法を見つけようとして立ち往生しています。 。

左側のテーブルのループは次のとおりです。

<?php do { ?>
      <tr>
        <td></td>
        <td><?php echo $row_rsSystems['systemName']; ?></td>
      </tr>
      <?php } while ($row_rsSystems = mysql_fetch_assoc($rsSystems)); ?>
4

5 に答える 5

1

これを試して:

    <table>

        <?php

        $i = 0;
        while ( $row = mysql_fetch_array($result) ){
            if ($i % 2 == 0){
                echo '<tr>';
            }
            echo '<td>'.$row['systemName'].'</td>';
            if ($i % 2 == 8){
                echo '</tr>';
            }
            $i++; 
        }

        //here is a check in case you don't have multiple of 3 rows
        if ($i % 8 != 0){
            echo '</tr>';
        }

        ?>

        </table>
于 2013-01-14T19:15:06.570 に答える
1

テーブルがどのように見えるかはわかりませんが、2つのクエリを実行して、LIMIT両方にを追加することができます。

最初の1つ:LIMIT 0, 8

二つ目:LIMIT 8, 8

それを行うための最良の方法ではないかもしれませんが、それは機能します。

于 2013-01-14T18:37:13.120 に答える
0

mysqlの結果を処理するDo/Whileメソッドはおそらく必要ありません。代わりに以下を使用してください。

$results = mysql_query($query, $connection);
while ($result = mysql_fetch_assoc($results)) { 
    echo $result['systemName'];
}

特定のレコードにスキップする限り、イテレータを使用してこれを行うことができます。

$results = mysql_query($query, $connection);

$i = 0;
$skipahead = 8; //skip to the 8th record:


while ($result = mysql_fetch_assoc($results)) { 
    if($i<$skipahead) continue; //this performs the skip
    echo $result['systemName'];
    $i++; //increment
}
于 2013-01-14T18:38:14.053 に答える
0

以下が機能するはずです。

<?php $i = 0; ?>

および各テーブルについて:

 <?php while ($row_rsSystems = mysql_fetch_assoc($rsSystems) && (++$i % 8)) {?>
      <tr>
        <td></td>
        <td><?php echo $row_rsSystems['systemName']; ?></td>
      </tr>
 <?php } ?>

c&pを回避するために、上記の関数を作成します。

16のみを表示する必要がある場合(キーワードを使用)、クエリは16エントリのみをフェッチする必要がLIMITあり、次のバッチ(たとえば、16-32)を表示する必要がある場合は、そのパラメーターもクエリ(keyword OFFSET)に含めます。

言及されたキーワードのmysqlSELECTドキュメント

于 2013-01-14T18:42:14.940 に答える
0

while(){}まず、ではなく使用したい場合がありますdo{...}while();
データを2つのテーブルに分割するには、データを格納するために2つの一時配列を使用し、それらを使用して目的のテーブルを作成することをお勧めします。このようなもの:

$i = 0;
while($row_rsSystems = mysql_fetch_assoc($rsSystems)){
    if($i < 8){
       //stuff for the left table
       $right_table = array(...);
    }else{
       //stuff for the right table
       $left_table = array(...);
    }
    $i++;
}

このようにして、最適化のためにすべてのデータを一度に取得できます。

于 2013-01-14T18:42:51.430 に答える