首先计算图片要分几行显示
然后添加相应行数的表格,在在每行里面添加一个2行4列的表格,在每列分别显示图片和图片的名称,这个我在ASP里试过可以的

解决方案 »

  1.   

    我写一个吧,比如说是一行三列的显示方法:没有测试,请自行调试一下思路也就是下面的这样了。
    <?
    /*author:fibona 熊祥众****************/
    //连接数据库从数据库中取数据(根据情况自行修改)
        mysql_connect("localhost", "mysql_user", "mysql_password") or
            die("Could not connect: " . mysql_error());
        mysql_select_db("mydb");

    $sql="select * from table";//从数据库选择图片的语句.
        $result = mysql_query($sql);

    echo "<table width=760 border=0 BORDER=0 CELLPADDING=0 CELLSPACING=0 bgcolor="#99CCFF">
    $i=0;//初始化计数,以便按格式进行排列。
    $imagpath="显示图片的图径";//显示图片的图径,数据库中只存入图片的名称
    echo "<TR>"
        while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
            //这里对图片按格式进行显示:每行三列,如果最后一行没有三个数据则补上空格显示
            $i++;
            echo "<TD width=\"33%\" ><img src=\"".$imagepath.$row['img']."\" border=0></TD>";
            if($i%3==0&i>0)
            {
             echo "</TR><TR>";
            }        
        }
    if($i>0&&$i%3!=0)//有数据,并且最后一行,不足每行的条数,就输出每行条数减去最后一行已有的数的个数的空格符列。                                              
    {
    for($j=0;$j<($i%3);$j++)
     echo "<TD width=\"33%\" >&nbsp;&nbsp;</TD>";
    }

    echo "</TR> ";
    echo "</TABLE>";
        mysql_free_result($result);
    ?>
      

  2.   

    刚才忘记了图片下成显示图片名称了,加个"<br>"就可以了。如下<?
    //连接数据库从数据库中取数据(根据情况自行修改)
        mysql_connect("localhost", "mysql_user", "mysql_password") or
            die("Could not connect: " . mysql_error());
        mysql_select_db("mydb");

    $sql="select * from table";//从数据库选择图片的语句.
        $result = mysql_query($sql);

    echo "<table width=760 border=0 BORDER=0 CELLPADDING=0 CELLSPACING=0 bgcolor="#99CCFF">
    $i=0;//初始化计数,以便按格式进行排列。
    $imagpath="显示图片的图径";//显示图片的图径,数据库中只存入图片的名称
    echo "<TR>"
        while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
            //这里对图片按格式进行显示:每行三列,如果最后一行没有三个数据则补上空格显示
            $i++;
            echo "<TD width=\"33%\" ><img src=\"".$imagepath.$row['img']."\" border=0><br>".$row['img']."</TD>";
            if($i%3==0&i>0)
            {
             echo "</TR><TR>";
            }        
        }
    if($i>0&&$i%3!=0)//有数据,并且最后一行,不足每行的条数,就输出每行条数减去最后一行已有的数的个数的空格符列。                                              
    {
    for($j=0;$j<($i%3);$j++)
     echo "<TD width=\"33%\" >&nbsp;&nbsp;</TD>";
    }

    echo "</TR> ";
    echo "</TABLE>";
        mysql_free_result($result);
    ?>
      

  3.   

    <?
    /* author:fibona *** *********/
    /* date: 2004:07-28 PM *******/
    /*对开始的那个程序的改进,以便能够对图片与图片名的高度的可控制性与直观性*/
    //连接数据库从数据库中取数据(根据情况自行修改)
        mysql_connect("localhost", "mysql_user", "mysql_password") or
            die("Could not connect: " . mysql_error());
        mysql_select_db("mydb");

    $sql="select * from table";//从数据库选择图片的语句.
        $result = mysql_query($sql);

    echo "<table width=760 border=0 BORDER=0 CELLPADDING=0 CELLSPACING=0 bgcolor="#99CCFF">
    $i=0;//初始化计数,以便按格式进行排列。
    $imagpath="显示图片的图径";//显示图片的图径,数据库中只存入图片的名称
    echo "<TR>"
        while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
            //这里对图片按格式进行显示:每行三列,如果最后一行没有三个数据则补上空格显示
            $i++;
            //通过在每一个td里面输出一个表格来实现不同的两行,并可以对每行的高度进行控制。
            echo "<TD width=\"33%\" ><table border=0 cellpadding=0 cellspacing=0 bgcolor=\"#99CCFF\"><TR><TD height=60><img src=\"".$imagepath.$row['img']."\" border=0 width=50 height=50 ></TD></TR><TR><TD height=30>".$row['img']."</TD></TR></table></TD>";
            if($i%3==0&i>0)
            {
             echo "</TR><TR>";
            }        
        }
    if($i>0&&$i%3!=0)//有数据,并且最后一行,不足每行的条数,就输出每行条数减去最后一行已有的数的个数的空格符列。                                              
    {
    for($j=0;$j<($i%3);$j++)
     echo "<TD width=\"33%\" >&nbsp;&nbsp;</TD>";
    }

    echo "</TR> ";
    echo "</TABLE>";
        mysql_free_result($result);
    ?>
      

  4.   

    DX,上面的代码是把图片放在数组里,循环显示出来,我看得明白,非常感谢!还有一个问题:请问哪段代码是把可以图片的名称在图片的下面那个<td></td>显示呢?请多多指教!!!非常感谢!!
      

  5.   

    TO: 52juanjuan(Fibona),请多多指教!!
      

  6.   

    http://www.sichuantour.com/scene/picture.asp中的图片和说明文字是分做两行写的
    这就要缓存输出行了
    基本算法如下$cell = n; //每行的列数
    $row1 = ""; //缓存图片行
    $row2 = ""; //缓存文字行
    $i = 0; //列计数器
    while(...) { //循环读取查询结果
      if($i == 0) {
        $row1 = "<tr>";
        $row2 = "<tr>";
      }
      $row1 .= "<td>".图片连接."</td>";
      $row2 .= "<td>".说明文字."</td>";
      $i++; //计数器加1
      if($i == $cell) {
        echo $row1."</tr>".$row2."</tr>"; //输出缓存内容
        $i = 0;
      }
    }
    $i = $cell-$i; //计算缺少的单元格数,因为输出的内容不一定能被列数整除。当不能整除时,缓存的内容不会在循环中输出
    if($i > 0) {
      echo $row1."<td colspan=$i></td></tr>";
      echo $row2."<td colspan=$i></td></tr>";  
    }
      

  7.   

    xuzuning(唠叨) 说得很好,楼主可以考穿!但楼主你所说的哪个网站图片显示还有问题是,他们还有一个大类(如九寨沟、黄龙)只有点进去以后才是你所说的图片显示方式!
     
      

  8.   

    总之我开始开窍了,我只需要思路就OK了谢谢大家!!PS:我想问一下,你们通常实现这样的效果或者用途是把图片存到数据库,还是直接存图片的文件名,然后再通过路径把它读出来呢?我现在存在数据库里还要用一个文件把它从数据库里读出来再显示。请大家发表发表意见,指点一下小弟!!非常感谢!!!
      

  9.   

    只存id和图片名,图片另外放硬盘上
    到时候只需要配置一下图片路径就可以了
    显示的时候就是<img src='图片路径/图片名称'>
    给你一段程序看:
    <? //图片列数、行数(可以赋值,也可以从其他地方获取配置)
    $photorows = 4;
    $photolines = 5; $list_table .= "<table><tr>";

    //执行数据库查询
    //过程省略
    if(有数据)
    {
    $i = 0;
    //循环
    //获得查询的数据集(一般应该是一个数组)
    while(数据集/数组)
    {
    $i++;
    //找图片地址
    $Path_photo = "<img src='图片地址' border='0' width='85' height='115'>";
    $list_table .= "<td>";
    //嵌套一个表格来专门布局图片(可以对这个表格进行扩展以显示标题及子类个数等等信息)
    $list_table .= "<table><tr><td>".$Path_photo."</td></tr></table></td>";
    $list_table .= "</td>"; //这里就是按列数来控制
    if ($i%$photorows==0)
    {
    $list_table .= "</tr><tr>";
    } //如果打到显示的总数则跳出循环
    if ( $i==intval(($photorows*$photolines)) )
    {
    break;
    }
    }//end while
    }
    $list_table .= "</tr></table>"; //输出html
    echo $list_table;?>