0

データベースに対してクエリを実行し、3 列 x 4 行のテーブルのデータを取得したいと考えています。12の要素を与えるもの. しかし、データベースに 13 の要素があると仮定して、別のテーブルを作成します。

私のコード:

$result = mysql_query("SELECT * FROM gallery");

if(mysql_num_rows($result) > 0)
{
     while($row = mysql_fetch_array($result))
     {
          echo $row['name_file']; //print what is inside the array
     }
}

私は2サイクルをしなければならないことを知っていますが、問題があります. データを印刷する最良の方法はありますか? ありがとう

4

5 に答える 5

2

はい、どうぞ:

$i = 0;

if (mysql_num_rows($result) > 0) {
  while ($row = mysql_fetch_array($result)) {
    if ($i % 12 == 0) {
      // Table ID dont need to be rounded, because $i % 12 == 0, so $i / 12 is integer, not float...
      echo '<table id="Table'.($i / 12 + 1).'">'."\n";
    }

    if ($i % 3 == 0) {
      echo '<tr>'."\n";
    }

    echo '<td>'.$row['name_file'].'</td>'."\n";

    if ($i % 3 == 2) {
      echo '</tr>'."\n";
    }

    if ($i % 12 == 11) {
      echo '</table>'."\n";
    }

    $i++;
  }

  if ($i % 3 > 0) {
    echo '</tr>'."\n";
  }

  if ($i % 12 > 0) {
    echo '</table>'."\n";
  }
}

Fe は、name_file = 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19 があるとしましょう。次に、これを出力します:

<table id="Table1">
  <tr>
    <td>1</td>
    <td>2</td>
    <td>3</td>
  </tr>
  <tr>
    <td>4</td>
    <td>5</td>
    <td>6</td>
  </tr>
  <tr>
    <td>7</td>
    <td>8</td>
    <td>9</td>
  </tr>
  <tr>
    <td>10</td>
    <td>11</td>
    <td>12</td>
  </tr>
</table>
<table id="Table2">
  <tr>
    <td>13</td>
    <td>14</td>
    <td>15</td>
  </tr>
  <tr>
    <td>16</td>
    <td>17</td>
    <td>18</td>
  </tr>
  <tr>
    <td>19</td>
  </tr>
</table>
于 2013-10-24T08:44:12.230 に答える
1
$rows = 4; $cells = 3;
$result = mysql_query("SELECT * FROM gallery limit ".($rows * $cells));
$i = 0;
if (mysql_num_rows($result) > 0) {
    while($row = mysql_fetch_array($result)) {
        $i++;
        echo $row['name_file'];
        if ($i % $cells == 0) {
            echo "<br/>";
        } else {
            echo " ";
        }
    }
}

それはあなたがしたいですか?

于 2013-10-24T08:45:51.553 に答える
1

これにより、3 つの結果が連続して出力され、必要に応じて処理が続行されます。

if(mysql_num_rows($result) > 0)
{
 $vertical_rows = 1;
 echo "<table>";
 while($row = mysql_fetch_array($result))
 {
      if($vertical_rows == 1)echo "<tr>";
      echo "<td>".$row['name_file']."</td>";

      if($vertical_rows == 3){
         echo "</tr>";
         $vertical_rows = 1;
        }
 }
 echo "</table>";
}
于 2013-10-24T08:50:41.833 に答える
1

データベースを処理するための推奨される方法は、PDOを使用することです

15項目を数える配列にデータを取得すると仮定します

$data = array_chunk($items, 12, true); 
// $data contains array(12 items), array(3 items), preserving array keys

foreach($data as $table)
{
    echo '<table>';
    foreach($table as $row)
    {
        printf('<tr><td>%s</td><td>%s</td></tr>', $row['field_name1'], $row['field_name2']);    
    }
    echo '</table>';
}
于 2013-10-24T09:04:26.940 に答える