html循环,

html循环,

前两天在一家单位里面试碰到的一道题目:
主题是要用php读出这样子的静态效果.
<table width="600" height="438" border="0" cellpadding="0" cellspacing="0">
  <tr>
    <td><img src="1.jpg" /></td>
    <td><img src="2.jpg" /></td>
    <td><img src="3.jpg" /></td>
  </tr>
  <tr align="center">
    <td>军舰</td>
    <td>警察</td>
    <td>货仓</td>
  </tr>
  <tr>
    <td><img src="4.jpg" /></td>
    <td><img src="5.jpg" /></td>
    <td><img src="6.jpg" /></td>
  </tr>
  <tr align="center">
    <td>飞机</td>
    <td>军人</td>
    <td>巨灯</td>
  </tr>
  <tr>
    <td><img src="7.jpg" /></td>
    <td><img src="8.jpg" /></td>
    <td><img src="9.jpg" /></td>
  </tr>
  <tr align="center">
    <td >广告</td>
    <td>运输机</td>
    <td>杂技</td>
  </tr>
</table>

数据库表如下:
CREATE TABLE `pic` (
  `pic_id` int(11) NOT NULL auto_increment,
  `pic_name` varchar(20) NOT NULL COMMENT '图片中文名',
  `pic_full` varchar(20) NOT NULL COMMENT '图片名',
  PRIMARY KEY  (`pic_id`)
) ENGINE=MyISAM  DEFAULT CHARSET=gb2312 AUTO_INCREMENT=10 ;

--
-- 导出表中的数据 `pic`
--

INSERT INTO `pic` VALUES (1, '军舰', '1.jpg');
INSERT INTO `pic` VALUES (2, '警察', '2.jpg');
INSERT INTO `pic` VALUES (3, '货仓', '3.jpg');
INSERT INTO `pic` VALUES (4, '飞机', '4.jpg');
INSERT INTO `pic` VALUES (5, '军人', '5.jpg');
INSERT INTO `pic` VALUES (6, '巨灯', '6.jpg');
INSERT INTO `pic` VALUES (7, '广告', '7.jpg');
INSERT INTO `pic` VALUES (8, '运输机', '8.jpg');
INSERT INTO `pic` VALUES (9, '杂技', '9.jpg');

当用循环读出来时,不知道怎么处理文字介绍那一块,因为图片对应的文字是同一个字段,如果用循环的话就会出现,文字与图片不对应的现象,我想过用两个变量来解决这一问题,但虽然能实现这个效果,但显示的位置有问题:我的处理方式发下吧.


<table width="600" height="438" border="0" cellpadding="0" cellspacing="0">
  
  <?php
  $conn = mysql_connect('localhost','root','63703559');
  mysql_select_db('cna',$conn);
  mysql_query('SET NAMES GBK');
  $sql = "SELECT * FROM pic ORDER BY pic_id DESC";
  $result = mysql_query($sql);
  $i = 0;
  $j = 0;
  while($rs = mysql_fetch_array($result)){
  if($i % 3==0) {echo'<tr>';$j++;};
  ?>
  <td><img src="<?php echo $rs['pic_full'] ?>" /></td>
  <?php
  $i++;
  if($i % 3==0) echo'</tr>';
  
  if($i % 3==0 && $j%2!=0) echo'<tr align = center>';
  ?>
  <td><?php echo $rs[pic_name] ?></td>
  <?php
   if($i % 3==0 && $j%2!=0) echo'</tr>';
  }
  mysql_close();
  ?>
</table>


顺便附件发下吧.希望大家能帮下忙.

附件

img.rar (147.02 KB)

2009-8-22 21:40, 下载次数: 0

好像是有点难搞。不过可以先处理后再输出

[复制到剪切板]
CODE:
<table width="600" height="438" border="0" cellpadding="0" cellspacing="0">
  
<?
php
$conn 
mysql_connect('localhost','root','63703559');
mysql_select_db('cna',$conn);
mysql_query('SET NAMES GBK');
$sql "SELECT * FROM pic ORDER BY pic_id DESC";
$result mysql_query($sql);
$arr $arr_full $arr_name = array();

while(
$rs mysql_fetch_array($result)){
    
$arr_full[] = $rs['pic_full'];
    
$arr_name[] = $rs['pic_name'];
    
    if(
count($arr_full) >= 3){
        
$arr[] = array(
            
'full' => $arr_full,
            
'name' => $arr_name,
        );
        
$arr_full $arr_name = array();
    }
}
if(
count($arr_full)){
    
$arr[] = array(
        
'full' => $arr_full,
        
'name' => $arr_name,
    );
}

foreach (
$arr as $row){
?>
<
tr>
<?
php foreach ($row['full'] as $rs){?>
<
td><img src="<?php echo $rs ?>" /></td>
<?
php }?>
</
tr>
<
tr>
<?
php foreach ($row['name'] as $rs){?>
<
td><?php echo $rs ?></td>
<?
php }?>
</
tr>
<?
php 
}
mysql_close();
?>
</
table> ;

如履薄冰

非常感谢版主了.