如何使用 PHP 在 HTML 中创建表格

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/16878839/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-25 11:50:23  来源:igfitidea点击:

How to create a table in HTML using PHP

phphtmlmysql

提问by Eli Skywalker

I have 5 pictures stored in a folder and their links stored on the database. I want to put them in a table of three columns on each row.

我有 5 张图片存储在一个文件夹中,它们的链接存储在数据库中。我想将它们放在每行三列的表格中。

<body>
<center>
<table border='1'>
<?php
$host="";
$username="";
$password="";
$db_name="fruits_db";
$tbl_name="fruits_tbl";
$connection=mysqli_connect("$host","$username","$password","$db_name");
if (mysqli_connect_errno())
{
    echo "The application has failed to connect to the mysql database server: " .mysqli_connect_error();
}
$result = mysqli_query($connection, "SELECT * FROM fruits_tbl")or die("Error: " . mysqli_error($connection));
$num_rows=mysqli_num_rows($result);
$rows =  $num_rows/3;

for($i=1; $i<=$rows ; $i++)
{
    echo "<tr>";
    for($j=1; $j<=3; $j++)
    {
        while($row = mysqli_fetch_array($result))
        {
            echo
            ("<td width='180px' height='200px'>"
             ."<div class = 'fruit_image'>"
             ."<img src='"
             .$row['fruit_image']
             ."'/>"
             ."</div>"
             ."<div class = 'fruit_title'>"
             .$row['fruit_name']
             ."</div>"
             ."</td>"
            );
        }
    }
    echo "</tr>";
}

mysqli_close($connection);
?>
</table>
</center>
</body>
</html>

The above code I created, contains two FOR loops. The script should count the number of rows in the table, and then divide by 3(the number of columns on each row in the HTML table). I wonder where I'm going wrong wit this code.

我创建的上述代码包含两个 FOR 循环。该脚本应计算表格中的行数,然后除以 3(HTML 表格中每行的列数)。我想知道这段代码哪里出错了。

回答by Sean

With your while($row = mysqli_fetch_array($result)){}inside your 1st for loop it will run through all your rows, before the outside loop runs 2nd/3rd time.

在您while($row = mysqli_fetch_array($result)){}的第一个 for 循环内部,它将在外部循环第二次/第三次运行之前遍历您的所有行。

Here is another way to do it -

这是另一种方法 -

$counter = 1;
// start 1st row
echo "<tr>";
while($row = mysqli_fetch_array($result)){
// if the 4th cell, end last row, and start new row
    if ($counter%3==1){
        echo "</tr><tr>";
    }
    echo
        "<td width='180px' height='200px'>"
        ."<div class = 'fruit_image'>"
        ."<img src='"
        .$row['fruit_image']
        ."'/>"
        ."</div>"
        ."<div class = 'fruit_title'>"
        .$row['fruit_name']
        ."</div>"
        ."</td>";
    // increase the counter
    $counter++;
}
// close the last row
echo "</tr>";

回答by jcsanyi

You're looping through all the results in the first table cell. Try something like this instead:

您正在遍历第一个表格单元格中的所有结果。试试这样的:

for($i=1; $i<=$rows ; $i++) {
    echo "<tr>";
    for($j=1; $j<=3; $j++) {
        $row = mysqli_fetch_array($result);
        if ($row) {
            echo(
                "<td width='180px' height='200px'>"
                ."<div class = 'fruit_image'>"
                ."<img src='"
                .$row['fruit_image']
                ."'/>"
                ."</div>"
                ."<div class = 'fruit_title'>"
                .$row['fruit_name']
                ."</div>"
                ."</td>"
            );
        }
    }
    echo "</tr>";
}

回答by Revent

If you just want to format the display with a new row after every 3 records, you could use the modulus operator:

如果您只想在每 3 条记录后用新行格式化显示,您可以使用模数运算符:

$cntr = 0;
echo '<tr>';
while($row = mysqli_fetch_array($result)) {
   $cntr++;
   echo '
      <td width="180px" height="200px">
         <div class="fruit_image">
            <img src="'.$row['fruit_image'].'" />
         </div>
         <div class="fruit_title">'.$row['fruit_name'].'</div>
      </td>';
   if ($cntr % 3 == 0 && $cntr != $num_rows)
      echo '</tr><tr>';
}
echo '</tr>';

Keep in mind however that all the solutions presented so far may leave you with a last row with one or two td elements. You can fill this if you desire with empty <td>&nbsp;</td>columns.

但是请记住,到目前为止提供的所有解决方案可能会在最后一行留下一个或两个 td 元素。如果您需要空<td>&nbsp;</td>列,您可以填充它。

回答by rajratna maitry

    print "<center><table border=1>
        <tr>
        <td>id</td>
        <td>name</td>
        <td>company</td>
        <td>branch</td>
        <td>job title</td>
        <td>contact</td>
        <td>email</td>
        <td>mgs</td>
        </tr>";

    while($row=mysql_fetch_array($query))
    {
        print "<tr>";
       for ($i=0;$i<=(count($row)/2);$i++)
              {
               print "<td>$row[$i]</td>";
               } print"</tr>";
   }

    }
    else{echo " <p>No Records Found</p>";}

回答by Mishari

<?php
function studentTable($name,$grade){
echo "<tr> <td>$name</td><td>$grade</td></tr>";
}
?>
    <table style="width:100%" border="solid">
<tr>
<th>Name</th>
<th>Grade</th> 
 </tr>
 <?php studentTable("Sarah", 90) ?>