2016-12-23 2 views
0

Я программирую простой веб-сайт с тремя страницами. Для каждой страницы у меня есть таблица в БД с колонками, содержащими информацию для отображения на этих страницах. Почти как блог, где каждая строка может быть блога.Текст из DB обрезается

Например, в моей БД (как VARCHAR) я мог бы текст:

Это строка 1
Это строка 2
Это строка 3

Но когда я выбираю данные, получить строки и эхо его, текст как-то обрезаны:

Это строка 1 Это строка 2 Это строка 3

Текст правильно отформатирован, когда я смотрю на поля в БД, но он отображается неправильно на веб-сайте.

require('.connection.php'); 

if(isset($_GET['menyValg'])){ 
    $menyValg = $_GET['menyValg']; 

    switch($menyValg){ 
     case "Hovedside": 
      $sql = "SELECT tittel, tekst FROM hovedside"; 
      break; 
     case "Tjenester": 
      $sql = "SELECT tittel, tekst FROM tjenester"; 
      break; 
     case "Kontakt": 
      $sql = "SELECT tittel, tekst FROM kontakt"; 
      break; 
     default: 
      $sql = "SELECT tittel, tekst FROM hovedside"; 
    } 
}else{ 
    $sql = "SELECT tittel, tekst FROM hovedside"; 
} 

$result = $connection->query($sql); 

if($result->num_rows > 0){ 
    while($row = $result->fetch_assoc()){ 
      echo "<h2 class='contentTittel'>".$row['tittel']."</h2><p class='contentP'>".$row['tekst']."</p><br>"; 
    } 
}else{ 
    //could not find any data 
} 
+4

HTML не распознает символы новой строки, попробуйте оборачивать свой выход в 'nl2br ($ строки [ 'Tekst']);', который преобразует строку в ''
тега. – Tolios

+1

Что вы подразумеваете под правильным форматированием - содержащие символы новой строки? Новые строки на самом деле не отображаются как новые строки на веб-сайтах. –

+0

@Tolios Очень приятно, это сработало. Сделал переменную $ text = nl2br ($ row ['tekst']); и вместо этого повторил эту переменную. Спасибо! – saltcracker

ответ

1

Новая строка в вашей базе данных на самом деле напечатана как новая строка (если вы проверяете источник), но HTML не распознает новые строки при печати данных - для этого вам нужно будет преобразовать все символы новой строки в теги <br /> ,

Простейший способ сделать это с помощью функции nl2br(), например.

echo "<h2 class='contentTittel'>".$row['tittel']."</h2><p class='contentP'>".nl2br($row['tekst'])."</p><br>"; 

См http://php.net/manual/en/function.nl2br.php

+1

Спасибо. Принимается как ответ, так как вы были первым, кто его прокомментировал. Я должен был сохранить его в переменной, хотя, а затем использовать его во время цикла. Если нет, я бы получил только ошибку 500. – saltcracker

+0

Вроде: (* while loop thing *) {$ text = $ row ['tittel']; затем * echo thingy с $ text *}. Eyy, vikings ftw! :) – saltcracker

+0

Вы должны были бы привести его в строку, как показано в этом ответе. Просто запомните закрывающие круглые скобки и точки, чтобы отделить строку ;-) – Tolios

2

Вы можете сделать это с помощью двух методов, первый использует nl2br, который преобразует символы новой строки в <br />

echo nl2br($row['tekst']); 

или вы можете повторить текст внутри тега <pre>.

+0

Спасибо, nl2br работал, если я превратил его в переменную и использовал это. 1+ за вклад. – saltcracker

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