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


Автор: Spectre 21.7.2006, 09:52
Проблема вот в чем.. Я создал БД там создал таблицу в ней поля. Id, title, body - таблица для хранения статей..
Когда я пробую забить в базу что нибудь через интерфейс phpMySQL то он пропускает ентеры. То есть приходится писать вручную в нужном месте <br>... Так вот вопрос. Если я сделаю на страничке php форму ввода новой статьи, то и в textarea придется вписывать <br> и другие форматирования?
И второй вопрос. При выводе на экран статьи все хорошо, но когда я в титле хочу отобразить например первых 50 символов статьи, при наведении на ссылку, то там я увижу и html-теги. В общем мне надо сделать так что бы я нормально вводил текст без <br> и он потом нормально отображался.

Помогите. 

Автор: skyboy 21.7.2006, 10:02
Spectre, я НЕ знаю, как происходит ввод в базу через указанный интерфейс, но HTML - броузерами перевод строки игнорируется. Потому у тебя текст из базы вполне может идти с переводами строк(ентерами), но т.к. браузер ожидает для перевода строки специального тега(<br>), то переход на новую строку не происходит. 

Автор: Ignat 21.7.2006, 10:03
Данный вопрос к БД  имеет очень косвенное отношение.
Скажите, на каком языке пишите и я перемещу в нужный раздел. 

Автор: skyboy 21.7.2006, 10:05
варианты:
 - выводить текст статьи между тегами <PRE> и </PRE>, или(что лучше) использовать соответствующие стили
 - забыть о принудительном переходе. 
Касательно первых 50 символов - что тебе мешает экранировать теги? 

Автор: Spectre 21.7.2006, 10:09
Пишу на php...

skyboy, видел как то эти теги, но не знаю что они значать. Можете пояснить?
И экранировать тэги, как это? 

Автор: skyboy 21.7.2006, 10:14
под экранированием я имел в виду:
- либо выдирать всё, что похоже на тег. Тут тебе регулярные выражения в помощь. 
- либо выводить как HTML. Тогда браузер сам на даст увидеть теги.
<PRE> выводит текст моноширинным(кажется) шрифтом с тем форматированием(переносы строк, спецсимволы), которое имеет текст. Но лучше поискать соотвествующий стиль, если есть.
А ещё лучше - справочник открыть. Например, http://wdh.suncloud.ru/contents.htm 
-------------
Ссылку исправил. 

Автор: ZlojEzh 21.7.2006, 10:22
1. варианты:
  - str_replace("\n","<br>",$str) - при выводе
  - REPLACE(`field_name`,"\n",'<br>') - при выборке из БД (в строке запроса в PHP надо писать '\\n')
  - <pre></pre> (как и советовал skyboy)
  - 
2. substr(strip_tags($str),0,50)
если надо, чтоб слова не обрывались на середине - можно использовать:
Код

$str = strip_tags($str);
$short_str = substr($str,0,strpos($str,' ',50)-1);


а тему, имхо, стоит перенести в PHP для начинающих 

Автор: Spectre 21.7.2006, 10:22
Вот... создал статейку. в Базу забил без <br> вручную... теперь в alt ссылки все нормально отображается, а если просто на экран вывести, то без энтера. Пробовал вывести как <pre>{$row["body"]}</pre> он мне испортил вид странички, и при этом кажется так и не сделал перевода...
Он растянул первый абзац в одну строчку. вот что он сделал.

А по ссылке сейчас посмотрю.  

Автор: igorold 21.7.2006, 11:19
вставляй <br> - там где надо переход на новую строку ... тебе уже советовали ...  

Автор: Ignat 21.7.2006, 11:41
Цитата(ZlojEzh @  21.7.2006,  11:22 Найти цитируемый пост)
а тему, имхо, стоит перенести в PHP для начинающих  

Хотелось бы услышать ответ автора.
Подразумевать, что MySQL используется только ПХП нельзя. 

Автор: Spectre 21.7.2006, 15:23
Тут больше связано с MySQL помоему. Вывод на экран. Кстати без тегов все хорошо отображается если выводить в <textarea> но мне не в ней надо... Ведь должно же что то быть. Справочник попробовал открыть, нужный раздел в разработке.

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

Автор: Ignat 21.7.2006, 15:26

M
Ignat
Spectre, если не укажете язык, тема будет закрыта.

 

Автор: Spectre 21.7.2006, 15:29
Я его указал уже выше - PHP 

Автор: Ignat 21.7.2006, 15:59
Цитата(Spectre @  21.7.2006,  11:09 Найти цитируемый пост)
Пишу на php...

Прошу прощения, не заметил.  

Автор: Spectre 21.7.2006, 16:38
Проблема решена всего с помощью двух строчек добавленных в нужном месте

Код

$public = $row["ячейка"];
$str_public = str_replace("\n", "<br>", "$public");
 

Автор: Ignat 21.7.2006, 16:42
Spectre, достаточно одной второй, тем более в ней лишние кавычки. 

Автор: Spectre 21.7.2006, 16:54
нет.. я пробовал сразу вставить в источник $row["ячейка"] и он сообщал об ошибке... пришлось сделать так.

Спасибо всем. 

P.S. Действительно. Убрал кавычки и подставил запрос из Базы. Все сработало. 

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