Разбивка строк

Yura

Новичок
Разбивка строк

Есть таблица заданной ширины. В ячейку вывожу данные из MYSQL. Необходимо вывести их в несколько строк. Разделителем между данными нужно сделать знак "+". В каждой строке необходимо выводить 1-3 данных, разделенных знаком "+", в зависимости от количества символов, и окончанием строки (кроме последней) тоже должен быть знак "+".
Я делаю это следующим образом: формирую строку из этих данных, вставляя между данными "+". Затем разбиваю полученную строку на элементы с помощью split, предварительно определив количество символов до 1-го и 2-го "плюсов", чтобы определить какое количество данных записать в соответствующую строку.
В результате получается 2 цикла (первый - формирование одной строки, второй - ее разбивка. Дело в том, что эти циклы - еще в одном цикле.
Можно ли как-то упростить решение задачи? Заранее спасибо!
 

Фанат

oncle terrible
Команда форума
для начала нарисуй то, что хочешь получить в итоге.
словами у тебя не очень хорошо получается.

а вообще, такой подход порочен.
почему нельзя дать таблице самой переносить данные? зачем этим должен заниматься пэхапэ?
 

Yura

Новичок
Можно дать и таблице самой переносить. Только эти данные выводятся еще и на другой странице сайта в другом формате.

Нарисовать сейчас попробую. Думаю, это действительно будет понятнее
 

Фанат

oncle terrible
Команда форума
Только эти данные выводятся еще и на другой странице сайта в другом формате.
что означает слово "только"? вроде бы, дальше должен следовать аргумент за твою разбивку, но совершенно непонятно, какое отношение имеет соседняя страница к выводимой таблице
 

Yura

Новичок
Фанат, видимо, я не понял твою мысль по-поводу "дать таблице самой переносить данные". Подскажи, плз
 

Фанат

oncle terrible
Команда форума
ты подумал про mysql?
я имел в виду HTML таблицу. они умеют переносить строки.
 

Yura

Новичок
Примерно так. Надеюсь, что так понятнее.

| ПРОДУКТЫ ПИТАНИЯ | ФИНАНСЫ, КРЕДИТОВАНИЕ
| |
|Упаковка для продуктов + |Банки + Кредитные организаци+
|Производители + Оптовики+ |Драгоценные металлы +
|Супермаркеты + и т.д. |Страхование + Бизнес-планы
------------------------------------------------------------------------------------
| ПРОМЫШЛЕННОСТЬ | ТРАНСПОРТ
| |
|Пищевая + Легкая + ТЭК + |Ж/д транспорт + Авиакомпании+
|Дерево-обрабатывающая + |Грузоперевозки +
|Химическая инефтехимическа|Услуги по логистике и др.

-~{}~ 01.09.06 13:50:

Да, плохо я нарисовал - все поразъехалось

-~{}~ 01.09.06 13:54:

Автор оригинала: Фанат
ты подумал про mysql?
я имел в виду HTML таблицу. они умеют переносить строки.
Ты имел ввиду просто выводить в ячейку целиком всю сформированную строку, а html автоматом сделает переносы? Если так, то как сделать так, чтобы перенос строки был именно после знака +? У меня получается где-то после плюса, а где-то название подраздела, состоящее из 2-3 слов частично остается на одной строке, оставшиеся слова названия переносятся на другую. Переносы допускаются только в названии которое не умещается если кроме него нет других названий подразделов
 

Фанат

oncle terrible
Команда форума
ну и какая проблма просто выводить это всё вячейку подряд?
тебе надо, чтобы названия, состоящие из нескольких слов, типа "упаковка для продуктов" не разрывались переносом на следующую строку?

-~{}~ 01.09.06 14:00:

Переносы допускаются только в названии которое не умещается если кроме него нет других названий подразделов
не слишком ли много правил?
не пробовал быть проще?
у тебя есть такие категории, которые не помещаются в ячейку? если ету, то зачем париться?Если есть, то какая проблема, если и другие будут переноситься?

-~{}~ 01.09.06 14:02:

Я скажу только одну вещь. Считать буквы на пхп - дурацкая затея. И при любой возможности, от неё следует отказаться. А у тебя таких возможностей - вагон
 

Yura

Новичок
От переноса будем отказываться совсем - будем названия категорий формулировать так, чтобы они умещались в одну строку. Но, в любом случае хотелось бы сделать так, чтобы "недлинные" названия помещались по 2-3 в строку, длинные - по 1 и разделителем был именно по знакам + и окончанием строки тоже был знак +. Насколько это реально?
 

bkonst

.. хочется странного?...
Позаменять все пробелы на   кроме пробелов, окружающих знак +. Установить ширину столбца таблицы так, чтобы в него естественным образом помещалось 2-3 "недлинных" названия.

~

Хе, конечно же " " ;)
 

Yura

Новичок
Автор оригинала: Yura
От переноса будем отказываться совсем - будем названия категорий формулировать так, чтобы они умещались максимум в одну строку. Но, в любом случае хотелось бы сделать так, чтобы "недлинные" названия помещались по 2-3 в строку, длинные - по 1 и разделителем был именно по знакам + и окончанием строки тоже был знак +. Насколько это реально?
 

Фанат

oncle terrible
Команда форума
Насколько это реально?
это вопрос из первого класса ио html
вот, товарищ bkonst хотел этот волшебный символ написать, но неудачно =)
  он называется
 

Yura

Новичок
Автор оригинала: bkonst
Позаменять все пробелы на   кроме пробелов, окружающих знак +. Установить ширину столбца таблицы так, чтобы в него естественным образом помещалось 2-3 "недлинных" названия.
Но, ведь у нас, например, первое значение может быть длинным, второе - коротким, третье и чевертое, например, - короткие. И всегда должно быть максимально возможное заполнение строк без переносов в самих названиях подкатегорий.

-~{}~ 01.09.06 14:17:

Про   знаю, конечно. Я понял мысль bkonst, надеюсь, что правильно. Но, все-равно, не вижу в этом решение проблемы. Может я, действитель, чего-то недопонял в идее
 

Фанат

oncle terrible
Команда форума
а я вижу. в том виде, как она сформулирована - она как раз этой мыслью и решается.

а уж про максимально возможное заполнение - это совсем другая песня.
и я сильно сомневаюсь, что у тебя из неё выйдет что-то путное.
 

bkonst

.. хочется странного?...
Не совсем понимаю проблему... Если порядок категорий не изменяется, то решение с   даёт решение, так как переносы будут только между категориями, а браузер всегда заполняет строки оптимально.

~

Понятно, что можно попытаться получить метрики шрифта, посчитать ширину каждой строки и попытаться выбрать такую перестановку название категорий, чтобы минимизировать количество требуемых строк. Но это: а) вычислительно сложная задача: б) никто не гарантирует, что браузер пользователя использует шрифт с теми же метриками.
 

Yura

Новичок
bkonst, я понял твою мысль. Она не полностью решает проблему. Дело в том. что длина названия одной категории может быть, например, 25 симолов, другой - 4, и они обе будут считаться короткими. Как сделать, чтобы, например: выводится первая подкатегория, елси она короткая, то в случае, если вторая тоже короткая, то она выводится в этой же строке, но только в случае, если они обе по длине будут иметь количество символов не более определенного числа, которое укладывается в эту строку; а если вторая подкатегория длинная, то она сразу размещается во второй строке?
Извиняюсь за такой стиль написания. У меня есть такая проблема - сложно излагать мысли. В дальнейшем буду стараться излагать мылси понятнее.
 

Фанат

oncle terrible
Команда форума
Юрочка.
у тебя не только с изложением проблемы.
но и с пониманием того, что тебе пишут. ДВА человека.
какая разница, чем там твои категории меряются?
Как сделать, чтобы, например: выводится первая подкатегория, елси она короткая, то в случае, если вторая тоже короткая, то она выводится в этой же строке,
ТЕБЕ УЖЕ СКАЗАЛИ, КАК
осталось ПОЙТИ и СДЕЛАТЬ. а не из пустого в порожнее переливать
 

Yura

Новичок
Да, теперь я понял мысль уже нормально. Сделал, все работает. Спасибо огромное!
 
Сверху