2016-12-23 20 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

谢谢。由于您是第一个发表评论的人,因此被接受为答复。我不得不将它存储在一个变量中,然后在while循环中使用它。如果没有,我只会收到一个错误500. – saltcracker

+0

像:(* while while循环*){$ text = $ row ['tittel'];然后*用$ text *}回应thingy。 Eyy,vikings ftw! :) – saltcracker

+0

你应该能够将它连接到字符串中,就像这个答案中所示。只要记住右括号和点来分隔字符串;-) – Tolios

2

您可以使用两种方法,第一种是采用nl2br其转换换行字符做成<br />

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

,或者你可以重复内<pre>标签的文本。

+0

谢谢,如果我把它变成一个变量并使用它,nl2br就可以工作。 1+的贡献。 – saltcracker