0

さまざまな教会の情報がロードされたデータベースがあります。データベースのすべての情報を3行のPHPテーブルに挿入しようとしています。

各セルの構造は次のようになります。

Church Name
Image
Pastor Name

すべてのデータをテーブルに簡単に挿入できますが、3行として表示することはできません。

echo("<table>");
while($row = mysql_fetch_array($rs))
{
        echo("<tr>");
        echo("<td>");
        echo("<a href='" . $row['website'] . "'>" . $row['churchName'] . "</a><br>");
        echo("<img src=\"" . $row['image'] . "\"><br>");
        echo($row['pastorName'] . "<br><br>");
        echo("</td>");
        echo("<td>");
        echo("<a href='" . $row['website'] . "'>" . $row['churchName'] . "</a><br>");
        echo("<img src=\"" . $row['image'] . "\"><br>");
        echo($row['pastorName'] . "<br><br>");
        echo("</td>");echo("<td>");
        echo("<a href='" . $row['website'] . "'>" . $row['churchName'] . "</a><br>");
        echo("<img src=\"" . $row['image'] . "\"><br>");
        echo($row['pastorName'] . "<br><br>");
        echo("</td>");
        echo("</tr>");

}
echo("</table>");

これを行うと、正しい構造の3つの行がありますが、データが重複しています。IDを変更していないことは理解していますが、どうすればよいかわかりません

4

3 に答える 3

2

行のデータを繰り返しています。行ごとに3つのアイテムを表示する場合は、次のように、テーブルの行の区切りを描画するためのカウンターとステートメントを追加する必要があります。

$int_Col = 1;
echo("<table>");
while($row = mysql_fetch_array($rs))
{
    if ($int_Col == 1) {
       echo("<tr>");
    }

    echo("<td>");
    echo("<a href='" . $row['website'] . "'>" . $row['churchName'] . "</a><br>");
    echo("<img src=\"" . $row['image'] . "\"><br>");
    echo($row['pastorName'] . "<br><br>");
    echo("</td>");

    if ($int_Col == 3) { 
        echo("</tr>");
        $int_Col = 1;
    } else {
      $int_Col++;
    }
}

if ($int_Col > 1) { 
   echo("<td colspan='". (3 - $int_Col) ."'>&nbsp;</td></tr>");
}
echo("</table>");

最後のチェック($ int_Col> 1)は、テーブルが空のセルで適切にレンダリングされていることを確認する必要があります-現在の行に描画されなかったセルの正しい量にまたがる必要があります。

于 2012-06-11T10:13:54.983 に答える
2

明確にするために、ここには「行」の2つの定義があると思います。

  • MySQLテーブルの行
  • HTMLテーブルの行

3つのMySQLテーブル行を1つのHTMLテーブル行にした後だと思います。

以下を使用して、HTML行を3つのMySQL行ごとに分割します。

$i = 0;
while($row = mysql_fetch_array($rs))
{
    // whatever you're already doing(ish)

    $i++;
    if($i % 3 == 0)
    {
         echo('</tr><tr>');
    }
}

MySQL行の総数が正確に3で除算されない場合は、テーブルの最後に1つまたは2つの空のセルを埋めるために、いくつかの追加のチェックを入れる必要があります。

于 2012-06-11T10:15:46.593 に答える
0

私があなたのコードを正しく理解すれば、あなたはデータベースのすべての行に対して3つの行を作成しています。mysq_fetchはすべての行に対してループを実行するため、ループの正しい内容は次のようになります。

    echo("<tr>");
    echo("<td>");
    echo("<a href='" . $row['website'] . "'>" . $row['churchName'] . "</a><br>");
    echo("<img src=\"" . $row['image'] . "\"><br>");
    echo($row['pastorName'] . "<br><br>");
    echo("</td>");
    echo("</tr>");
于 2012-06-11T10:10:12.680 に答える