2011-01-09 3 views
0

HI,сохранить комментарии пользователей формат базы данных

Я создаю на форме комментариев, где пользователи будут прокомментированы и будут храниться в базе данных MYSQL. Проблема, с которой я столкнулся, заключается в том, что она хранится как единственная строка в базе данных. Он должен храниться в точном формате, как пользователь вводится в форму (например, новые строки и все). Я использую PHP для хранения в MySQL db.

+0

Каков тип поля базы данных? Как вы подталкиваете его в базу данных? Является ли контент богатым текстом, как и в виде разметки, открытого текста? и т. д. –

ответ

4

Сначала сохраните его как текст или длинный текст. Во-вторых, при показе комментария используйте функцию nl2br для преобразования строк в html <br>. Таким образом, разрывы строк сохраняются.

+0

Я полагаю, что следующий вопрос - как только комментарии будут сохранены в базе данных, какой формат он захочет использовать в будущем? Если только HTML, то вставляя
в текст, все в порядке. Другое дело - сказал Кришна (новые строки и все), интересно, что такое «все»? – diagonalbatman

0

Вы можете сохранить комментарии в той же форме в базе данных mysql. одна разница заключалась бы в том, что когда вы извлекаете комментарии, у которых есть новая строка, ваш код должен искать \ r \ n и интерпретировать его .. а также когда вы вставляете данные в mysql, вам придется скрывать 'и \ символы из комментария.

1

Ваш текст сохраняется в базе данных только в том случае, если вы помещаете его в достаточно длинное текстовое поле (например, TEXT), включая символы новой строки в пользовательском вводе.

Ваша проблема заключается в том, как дисплей текст отформатирован так, как пользователь видел его при входе в него. Это более общая проблема, и это связано только с тем, как HTML обрабатывает пробелы.

Один из подходов заключался бы в том, чтобы называть комментарии nl2br, как говорит Икке. Это заменит все новые строки (которые браузер игнорирует) с тегами <br>, которые оказывают заметное влияние на визуализированный вывод.

Другой вариант - разместить текст внутри тега <pre>...</pre>. Это заставит браузер отображать его с сохраненными пробелами.

Это действительно то, что более удобно и подходит для вас.

Update: Просто чтобы быть ясно: сделать не изменения пользовательского ввода перед тем вставив его в базе данных (если это не часть вашей проверки входных данных, как, например, зачистки HTML теги от входа). Храните его в «нетронутом» формате и делайте только некоторую обработку на нем до того, как вы получите данные. Таким образом, у вас всегда есть возможность выполнить правильную обработку, если ваш выходной канал изменится в будущем (например, экспорт комментариев в текстовый файл и отображение их как HTML).

+0

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

+0

@ Кришна: вы уверены, что эти персонажи не лишены какой-либо другой части вашей обработки? Похоже на это ... – Jon

Смежные вопросы