0

3行と各行に3tdのwhileループでテーブルを表示しようとしています。しかし、私はそれをアーカイブする方法を混乱させています。

これはこれまでの私のコードです:

while($row = mysqli_fetch_array($result)){

    $testimonial    = $row['testimonial'];
  $cityName         = $row['city_name'];
  $name             = $row['name'];
  $imageName        = $row['image_name'];
  $member           = $row['membership_type'];
  $testimonial  = nl2br($testimonial);

    //Create new testimonial output
    $output  = "<table>\n";
    $output .= "  <tr>\n";
    $output .= "     <td>\n";
    $output .= "      <p>\n";
    $output .= "        <img src=\"".UPLOAD_DIR.$imageName."\" />";
    $output .= "         {$testimonial}";
    $output .= "      </p>\n";
    $output .= "     <p class=\"name\">{$name}<br />\n";
    $output .= "      <span>A Teacher - From {$cityName}</span></p>\n";
    $output .= "   </td>\n";
    $output .= "  </tr>\n";
    $output .= "</table>\n";

    echo $output;
}

上記のコードは、複数の行と各行に1tdのテーブルを提供しました。しかし、それは私の期待する結果ではありません。

誰かが私の中にそのようなテーブルを表示する方法を教えてもらえますWhile loopか?

4

3 に答える 3

2

現在のコードは、すべてのエントリに対して新しいテーブルを作成します。<table>必要なのは、ループの外側にピースを移動する</table>ことです。次に、処理したセルの数を追跡するカウンターが必要です。偶数の場合は、新しいを開始し<tr>ます。それ以外の場合は、現在のを終了し</tr>ます。最後に、が終了したかどうかを確認し、必要に応じ</tr>て空を追加してください<td></td>

于 2013-03-19T02:18:47.787 に答える
0

これはそれをするために

<?php

echo "<table>\n";

$cells = $total = 0;
$total_cells = mysqli_num_rows($result);

while($row = mysqli_fetch_array($result))
{
    $testimonial      = nl2br($row['testimonial']);
    $cityName         = $row['city_name'];
    $name             = $row['name'];
    $imageName        = $row['image_name'];
    $member           = $row['membership_type'];

    if ($cells === 0)
        echo "<tr>\n";

    //Create new testimonial output
    $output = "     <td>\n";
    $output .= "      <p>\n";
    $output .= "        <img src=\"".UPLOAD_DIR.$imageName."\" />";
    $output .= "         {$testimonial}";
    $output .= "      </p>\n";
    $output .= "     <p class=\"name\">{$name}<br />\n";
    $output .= "      <span>A Teacher - From {$cityName}</span></p>\n";
    $output .= "   </td>\n";

    echo $output;

    $cells++;
    $total++;       

    if ($cells === 3 || $total === $total_cells)
    {
        echo "</tr>\n";
        $cells = 0;
    }
}

echo "</table>\n";

?>
于 2013-03-19T02:27:26.263 に答える
0

これを試して

$i = 0;
echo "<table>\n<tr>";
while($row = mysqli_fetch_array($result)){
  $testimonial    = $row['testimonial'];
  $cityName         = $row['city_name'];
  $name             = $row['name'];
  $imageName        = $row['image_name'];
  $member           = $row['membership_type'];
  $testimonial  = nl2br($testimonial);
  //Create new testimonial output
  $output .= "     <td>\n";
  $output .= "      <p>\n";
  $output .= "        <img src=\"".UPLOAD_DIR.$imageName."\" />";
  $output .= "         {$testimonial}";
  $output .= "      </p>\n";
  $output .= "     <p class=\"name\">{$name}<br />\n";
  $output .= "      <span>A Teacher - From {$cityName}</span></p>\n";
  $output .= "   </td>\n";
  echo $output;
  if( $i %2 == 1 )
    echo "</tr><tr>\n";
  $i++;
}
echo "</tr>\n</table>\n";

編集

一般に、n行ごとのセルを表示するには、ifステートメントを次のように変更します。

if( $i % n == (n - 1) )
于 2013-03-19T02:19:48.600 に答える