Как вывести многострочный текст из БД?
Всем привет и заранее благодарен за помощь. Записываю в базу текст из поля textarea
Пример:
первая строка
вторая
третья
четвертая
Как его вывести что бы высота строки показывала весь текст а не выводить строкой или в случае вывода в textarea показывает только первые две строки а остальные что бы увидеть нужно расширить поле. Данный текст редактировать нет необходимости, просто нужно что бы верно выводился. Помогитей пожалуйста. Использую бутстрап разметку.
Дополнительно:
И код как бы добавляете в бд и как выводите из неё не покажете?
Вам нужно записывать через подготовленные выражения, и не фильтровать это поле на выходе. Защиту уже сами организуите, это по сути дыра
База - ничего не знает о дизайне.
PHP (приложение) - ничего не знает о типе источника данных (может это БД а может NoSQL система а может
и Rest сервис).
Поэтому твоя задача сводится к написанию одной функии которая выводит строки. На вход
приходит одна строка. И на выходе - строка с дизайном с переносами и так далее.
Вот давай эту функцию и обсуждать.
// Выборка данных о компании $query = "SELECT * FROM company WHERE user_id = $user_id AND id = $company_id"; $result = $conn->query($query); |
// Выборка данных о компании $query = "SELECT * FROM company WHERE user_id = $user_id AND id = $company_id"; $result = $conn->query($query);
так выводится нужное мне поле
<tr> <th>Бренд шин</th> <td><textarea><?= $company['tire_brand'] ?></textarea></td> </tr> |
<tr> <th>Бренд шин</th> <td><textarea><?= $company['tire_brand'] ?></textarea></td> </tr>
И обычным запросом идет запись в БД
// Установка кодировки перед выполнением запроса $conn->set_charset('utf8mb4'); $query = "INSERT INTO company (user_id, tire_brand) VALUES ('$user_id', '$tire_brand')"; |
// Установка кодировки перед выполнением запроса $conn->set_charset('utf8mb4'); $query = "INSERT INTO company (user_id, tire_brand) VALUES ('$user_id', '$tire_brand')";
ну и поле в которое вводятся данные
<div class="col-md-3"> <label class="form-label" for="tire_brand">Бренд шин:</label> <textarea class="form-control" type="text" id="tire_brand" name="tire_brand"></textarea><br> </div> |
<div class="col-md-3"> <label class="form-label" for="tire_brand">Бренд шин:</label> <textarea class="form-control" type="text" id="tire_brand" name="tire_brand"></textarea><br> </div>
Скорее всего в базе сохранены обычные переносы строк (CR/LF), которые игнорируются в html. Нужно преобразовать их в теги br. Для этого есть специальная функция nl2br()
- Благодарю за рекомендацию, но у меня теперь еще одна сложность возникла. Данные записываются с br выводяться как мне нужно, а вот при редактировании они подгружаются с br , как этот момент исправить, подскажите пожалуйста.
- Валерий Витальевич, а зачем их с br записывать?
Если вы их редактируете в textarea, то и записывайте как есть, в виде текста. Формат при выводе.
Если вы их редактируете в html редакторе (типа tinymce), то записывайте в виде html и проблем с редактированием и выводом не будет. - Валерий Витальевич, ну а вообще заменить обратно на переводы строк
str_replace('<br>', "n", $str)
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Для вывода многострочного текста из базы данных в PHP, вам потребуется использовать специальные функции для работы с базой данных, такие как mysqli или PDO.
Вот пример кода на PHP с использованием mysqli для получения и вывода многострочного текста из базы данных:
// Подключение к базе данных $mysqli = new mysqli('хост', 'пользователь', 'пароль', 'база_данных'); // Проверка соединения if ($mysqli->connect_error) { die('Ошибка подключения: ' . $mysqli->connect_error); } // Запрос к базе данных для получения многострочного текста $query = "SELECT многострочное_поле FROM таблица WHERE условие"; $result = $mysqli->query($query); // Проверка наличия данных if ($result->num_rows > 0) { // Вывод каждой строки многострочного текста while ($row = $result->fetch_assoc()) { echo $row['многострочное_поле'] . "<br>"; } } else { echo "Нет данных"; } // Закрытие соединения с базой данных $mysqli->close();
В этом коде мы сначала подключаемся к базе данных, затем делаем запрос для получения многострочного текста из указанной таблицы с заданным условием. Если данные найдены, мы выводим каждую строку многострочного текста, а затем закрываем соединение с базой данных.
Не забудьте заменить 'хост', 'пользователь', 'пароль', 'база_данных', 'таблица', 'многострочное_поле' и 'условие' на соответствующие значения вашей базы данных и запроса.