Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Тексты > растяжение таблицы


Автор: Rezzonans 16.9.2006, 23:20
Люди, может знает кто-нибудь, как решить такую проблему:

Делаем запрос к базе данных:

Код

$result = mysql_query(“select name, message from table”);


Приводим результат к удобочитаемому виду:

Код

for($data = array(); $row = @mysql_fetch_assoc($result); $data[] = $row);


Осуществляем вывод:

Код

foreach ($data as $element){
?> <table width = 750>
    <tr>
        <td>
            <?=$element[‘name’]
        </td>
    </tr>
    <tr>
        <td>
            <?=$element[‘message’]?>
        </td>
    </tr>    
</table>
<br><br>
<?php
}


Тут вообщем всё в порядке: работает и выводит. Проблема в том, что если в БД содержится очень длинное слово, то таблица может разростаться до неимоверных размеров, то есть, если занести в базу что-нить типа:

аываываыаываываыаываываыаываываыаываываыаываываыаываываыаываываыаываываыаываываыаываываыаываываыаываываыаываываыаываываыаываываыаываываыаываываыаываываыаываываыаываываыаываываыаываываыаываываыаываываыаываываыаываываываываыв        

то параметр width у таблицы перестаёт выполнять свои функции и она растёт в ширь. Как от этого избавиться?
Спасибо заранее.

Добавлено @ 23:26 
Есть кстати вариант решения проблемы при помощи css:

Код

foreach ($data as $element){
?> div style='width:750;word-wrap:break-word; position:relative; overflow:hidden'>
<table width = 750>
    <tr>
        <td>
            <?=$element[‘name’]
        </td>
    </tr>
    <tr>
        <td>
            <?=$element[‘message’]?>
        </td>
    </tr>    
</table>
</div>
<br><br>
<?php
}


Хотелось бы узнать есть ли программный путь?

Автор: skyboy 17.9.2006, 00:04
во-первых, что понимается под "программным путём"? неужто таблицы стилей - аппаратный метод?
во-вторых: а что предполагается далеть? есть какой алгоритм? ведь можно делать немало вещей:
  • уменьшать размер шрифта, пока не станет помещаться в отведённые размеры:
    плюс: будет выведена вся инфо;
    минус: 570 символов размеров 0 пунктов - такое никто уже не прочитает, не  обращаясь к исходному коду страницы
  •  обрезать при выводе или не давать даже вводить длинные слова(если будет просто много слов - будет автоперенос)
    плюс: читать можно
    минус: видимо, выводиться будет не всё smile обрезка контента == потеря информации
  •  пихать выводимый текст в textarea
    плюс: весь текст на экране нужного размера, можно проскроллить при желании
    минус: может не вписаться в "окружающий стиль"
  • вставлять через каждые N символов строку "-<br />"(вроде переноса), если не было  в течении этих символов перевода строки
    плюс: не будет скроллбаров, которые могут исказить внешний вид страницы; отображается вся информация нужным размером шрифта
    минус: по высоте абзац всё же будет так же расти
Так что делать будем?

Автор: Rezzonans 17.9.2006, 10:53
Цитата(skyboy @ 17.9.2006,  00:04)


  •  обрезать при выводе или не давать даже вводить длинные слова(если будет просто много слов - будет автоперенос)
    плюс: читать можно
    минус: видимо, выводиться будет не всё smile обрезка контента == потеря информации


вот интересный вариант. Почему бы собственно и не обрезать. На вскидку так: есть слова размером в 20 символов, скажем? Может быть, ну в 30 символов уж наверняка нет smile Да и потом, обрезка проводится на этапе вывода, ну а в базе полная информация останется, так что при желании можно восстановить.

ну а под программным путём я подразумевал именно средства пхп. Css - хорошая штука но не надёжная. smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)