我试图从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>";
?>