从MySQL查询生成垂直HTML表

时间:2014-07-19 17:16:37

标签: php html mysql

我正在尝试从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>';

你能帮我理解我的代码错误,并指出我正确的方向吗?或者请根据我的上表纠正我的代码。

3 个答案:

答案 0 :(得分:0)

创建表格行 - &gt;列,从左到右。您正在尝试按列构建表格 - &gt;行,从上到下。

最简单的方法是将名称放在同一个单元格中,并通过换行符或div将其与图像分开

修改,因为您没有在其他地方使用$image / $name个变量,您可以直接使用它们,并删除另外两行代码

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>';

答案 1 :(得分:0)

您需要创建包含3个cols的2行,然后回显它们。

[不知道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>';

答案 2 :(得分:0)

自定义数组的完整示例,类似于从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>";
?>