从MySQL查询生成一个垂直HTML表


Generate a vertical HTML table from a MySQL query

我试图从MySQL查询生成一个HTML表。以下是我试图从MySQL查询生成的表的格式:

 -------------------------- 
| Image1 | Image2 | Image3 |
|----------------- --------|
| Name1  | Name2  | Name3  |
|----------------- --------|
| Image4 | Image5 | Image6 |
|----------------- --------|
| Name4  | Name5  | Name6  |
 -------------------------- 

我试图用我的php代码创建上面的表。以下是我的代码,但它不能正常工作,你能帮助我吗?

include_once("abc.php");
$query=mysql_query("select * from movix LIMIT 6");
echo'<table>';
$i=0;
while($sam=mysql_fetch_array($query))
{
$image = $sam['image'];
$name = $sam['name'];

if($i==0) 
   {
   echo '<tr>';
   }
echo '<td>'.'  <img src="'.$image.'"/>  '.'</td>';
  echo '</tr>';  echo '<tr>';
echo '<td>'.$name.'</td>';
echo '<tr>';
 if($i==2)
    $i=-1;
    }
  $i++;
}
echo '</table>';

你能帮我理解我做错了什么代码,并指出我在正确的方向吗?或者请根据我上面的表格修改我的代码

表按从左到右的顺序创建行->列。您正在尝试按列->行,从上到下构建表。

最简单的方法是将名称放在同一个单元格中,并通过换行或div

将其与图像分开。

编辑因为你没有在其他地方使用$image/$name变量,你可以直接使用它们,并删除2行代码

echo '<table>';
$i=0;
while($sam=mysql_fetch_array($query)) {
      if($i%3==0){ // using modulus % to determine if 1st cell
         echo '<tr>';
      }
      echo '<td>'.'  <img src="'.$sam['image'].'"/> ';
      echo '<br />'.$sam['name'].'</td>'; // echo image name with a line break inside image cell
      if($i%3==2){  // using modulus % to determine if 3rd cell
         echo '</tr>';
      }
      $i++;
}
echo '</table>';

如果您仍然希望在图像下面的单元格中显示图像名称,一种方法是将名称连接起来,并在第三个单元格之后添加行-

echo '<table>';
$i=0;
while($sam=mysql_fetch_array($query)) {  
      if($i%3==0){ // using modulus % to determine if 1st cell
         echo '<tr>';
         $names = ''; // create image name variable 
      }
      echo '<td>'.'  <img src="'.$sam['image'].'"/> '.'</td>';
      $names .= '<td>'.$sam['name'].'</td>'; // concat each image name, within a cell
      if($i%3==2){  // using modulus % to determine if 3rd cell
         echo '</tr>';
         echo '<tr>'. $names . '</tr>';
      }
      $i++;
}
echo '</table>';

您需要创建2行,3种颜色,然后回显它们。

[不知道php,但我猜下面的代码应该工作或至少给出一个想法,它需要如何实现。)

$row1="<tr>";
$row2="<tr>";
$i=3;
echo'<table>';
while($sam=mysql_fetch_array($query))
{ 
    $image = $sam['image'];
    $name = $sam['name'];
    $row1 = $row1.'<td><img src="'.$image.'"/></td>';
    $row2 = $row2.'<td>'.$name.'</td>';
    $i--;
    if($i==0){
        echo row1.'</tr>';
        echo row2.'</tr>';
        $row1="<tr>";
        $row2="<tr>";
        $i=3;
    }
}
echo '</table>';

快速解决方案

如果你想要"image and name under it"以及这样的东西的集合,你可以这样做:

set I为一行中需要的集合数(I =3)

然后

<table>
     main loop:
     <tr>
          loop start :
          <td>
                <table>
                     <tr><td>Image</td></tr>
                     <tr><td>Name</td></tr>
                </table>
          </td>
          i--;
          loop back if i not 0 and fetch record;
      </tr>
      main loop back if more record; set i=3;
</table>

例如:

echo'<table>';
while($sam=mysql_fetch_array($query))
{
echo '<tr>';
$i=3; 
do{
    echo '<td>';
    echo '<table>';
    $image = $sam['image'];
    $name = $sam['name'];
    echo '<tr><td>'.'  <img src="'.$image.'"/>  '.'</td></tr>';
    echo '<tr><td>'.$name.'</td></tr>';
    echo '</table>';
    echo '</td>';
    $i--;   
}while($i>0 && $sam=mysql_fetch_array($query));
echo '</tr>';
}
echo '</table>';

一个完整的自定义数组的例子,类似于你从mysql中得到的。

如果你复制并粘贴下面的代码,它将工作,你可以调整它…

<?php 
$sams=array();
array_push($sams, array("image"=>"image1","name"=>"name1"));
array_push($sams, array("image"=>"image2","name"=>"name2"));
array_push($sams, array("image"=>"image3","name"=>"name3"));
array_push($sams, array("image"=>"image4","name"=>"name4"));
array_push($sams, array("image"=>"image5","name"=>"name5"));
array_push($sams, array("image"=>"image6","name"=>"name6"));
array_push($sams, array("image"=>"image7","name"=>"name7"));
array_push($sams, array("image"=>"image8","name"=>"name8"));
array_push($sams, array("image"=>"image9","name"=>"name9"));
array_push($sams, array("image"=>"image10","name"=>"name10"));
array_push($sams, array("image"=>"image11","name"=>"name11"));
array_push($sams, array("image"=>"image12","name"=>"name12"));
array_push($sams, array("image"=>"image13","name"=>"name13"));
echo "<html>";
echo "<body>";
echo '<table width="400" border="1" cellspacing="0" cellpadding="0"><tr>';
$i=0;
$limit=3;
foreach($sams as $sam)
{
    $image = $sam['image'];
    $name = $sam['name'];
    if($i==3){
        echo '</tr><tr>';
    }
    echo "<td>";
    echo '<table width="200" border="1" cellspacing="0" cellpadding="0"><tr><td>';
    echo $image;
    echo '</td></tr><tr><td>';
    echo $name;
    echo '</td></tr></table>';
    echo "</td>";

    if($i==3){
        $i=1;
    }else{
        $i++;
    }
}
echo '</tr></table>';
echo "</body>";
echo "</html>";
?>