$sql = "select * from jz_vod_film order by hit desc limit 8";
$result = mysql_query($sql);
echo "<table width=\"120\" border=\"0\" align=\"center\" cellpadding=\"0\" cellspacing=\"0\" style=\"table-layout:fixed\">";
$i = 1;
while ($tmp = mysql_fetch_array($result))
{
echo "<tr><td width=\"23\" style=\"font-size:9pt\"><img src=\"mov3/img_num0". $i .".gif\" width=\"21\" height=\"14\" /></td><td width=\"97\" style=\"padding-top:3px; padding-left:6px;\" align=\"left\" style=\"white-space:nowrap; overflow:hidden; text-overflow:ellipsis;\">". $tmp[mv_name] ."</td></tr><tr><td height=\"1\" colspan=\"2\" background=\"mov3/linebg.gif\"></td></tr>";
$i++;
}
echo "</table>";这是一个简单的表格输出问题,表格中的td如果输出的不是数据库的读取值,比方是个很长的字符串
“AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA”
或者是个被赋字符串值的变量$text="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA”
都可以实现超出TD宽度的字符隐藏掉,但是从数据库中读取出来的字符串却不会自动隐藏,而是自动换行显示了,CSS的作用没有了,请问各位大虾,我这个是什么问题呢?
我要怎么实现把数据库中读取出的值显示在表格里而且不换行,自动隐藏掉超出宽度部分呢?

解决方案 »

  1.   

    好像和php没关系,只是html的问题
    在td里加上no wrap 试一下?
      

  2.   

    冲突?你说的什么啊?这个和php没有一点关系
      

  3.   

    我好像没有说清楚,再重复说明一下我的意思<td>里面在下面4种情况下只有前3种可以不换行和隐藏超出部分,情况4中是我们常碰到的从数据库读取文字,为什么就不能不换行和隐藏超出部分?????我实在不明白,请高手指教,万分感谢!~
    情况一:
    <table width="80" border="1" cellspacing="0" bordercolor="#FF0000" style="table-layout:fixed">
      <tr>
        <td style="white-space:nowrap; overflow:hidden">ABCDEFGHIJKLMNOPQRSTUVWXYZ</td>
      </tr>
    </table>
    情况二:
    <?php $text="ABCDEFGHIJKLMNOPQRSTUVWXYZ"; ?>
    <table width="80" border="1" cellspacing="0" bordercolor="#FF0000" style="table-layout:fixed">
      <tr>
        <td style="white-space:nowrap; overflow:hidden"><?php echo $text;?></td>
      </tr>
    </table>情况三:(下面是个最简单的数据库)
    -- 数据库: `mydb`
    -- --------------------------------------------------------
    -- 表的结构 `table1`CREATE TABLE `table1` (
      `text1` varchar(255) NOT NULL
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8;-- 导出表中的数据 `table1`INSERT INTO `table1` (`text1`) VALUES 
    ('ABCDEFGHIJKLMNOPQRSTUVWXYZ');
    -- --------------------------------------------------------<?php 
    mysql_connect("localhost","root","");
    mysql_select_db("mydb");
    mysql_query("SET NAMES 'utf8'");
    $sql = "select * from table1";
    $result = mysql_query($sql);
    $tmp = mysql_fetch_array($result);
    $text = $tmp[text1];
    ?>
    <table width="80" border="1" cellspacing="0" bordercolor="#FF0000" style="table-layout:fixed">
      <tr>
        <td style="white-space:nowrap; overflow:hidden"><?php echo $text;?></td>
      </tr>
    </table>情况四:(和3的区别只有数据中含几个中文字...)
    -- 数据库: `mydb`
    -- --------------------------------------------------------
    -- 表的结构 `table1`CREATE TABLE `table1` (
      `text1` varchar(255) NOT NULL
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8;-- 导出表中的数据 `table1`INSERT INTO `table1` (`text1`) VALUES 
    ('ABCDEFGHIJKLMNOPQRSTUVWXYZ注意这里注意这里');
    -- --------------------------------------------------------<?php 
    mysql_connect("localhost","root","");
    mysql_select_db("mydb");
    mysql_query("SET NAMES 'utf8'");
    $sql = "select * from table1";
    $result = mysql_query($sql);
    $tmp = mysql_fetch_array($result);
    $text = $tmp[text1];
    ?>
    <table width="80" border="1" cellspacing="0" bordercolor="#FF0000" style="table-layout:fixed">
      <tr>
        <td style="white-space:nowrap; overflow:hidden"><?php echo $text;?></td>
      </tr>
    </table>不光如此,而且如果在数据库存储的字符里有("+"、"-"、"["、"(")这些特殊字符的时候都会出现情况4,请大虾试验下这几种情况~给我个答复,谢谢~
      

  4.   

    IE里用<td style="wor-break:break all;">
    FIREFox到目前没止没有解决方案通常为了不影响美观.都加overflow:hidden
      

  5.   

    楼上应是正解,你可测试一下
    主要是CSS的定义问题,
    1CSS定义了强制换行,显示就会换行,2要想不换行并全部显示,overflow:visible
      

  6.   

    <td style="wor-break:break all;">这个是什么啊?
    wor-break?word-break?break all?
    我在编辑时候没找到这个style,而且加上也不好用,我说各位朋友啊,你试验一下不好么?
    我可是一个一个试验的,确实是有问题的啊
      

  7.   

    再说一遍我的想法
    我的要求是:“数据读取的文本如果超出td的width,不要换行,隐藏掉多余的文字!”
    可是数据库中读出的text变量中如果有 中文字 就不能自动隐藏了,这是为什么?
      

  8.   

    不好意思.肉了一个字word-break:break all