输出具有多个换行符的数据库变量

时间:2017-02-24 22:55:04

标签: php

我已经读过有关nl2br()命令的信息,但是它们会回显变量以使其正常工作,但我的变量位于我回显的列表中。 我应该以某种方式将nl2br()命令放在我设置输出的if语句中,还是应该在其他地方查找我的答案。

我已经输出了2个额外的细节变量,所以我得到了3行文字来描述我的产品,但必须有更好的方法来做到这一点。我认为1个带有所有信息的细节变量将是首选的方式

我试图搜索它,但我担心我不会问正确的问题,所以对正确方向的任何帮助表示赞赏。

<?php require_once './connections/connect_mysqli.php';
$conn = dbConnect('read');
$sql =  "SELECT * FROM products ORDER BY id ASC LIMIT 6 ";
$result = $conn->query($sql) or die($conn->error);
$i = 0;
$flatlist = "";
while($row = $result->fetch_array(MYSQLI_ASSOC)){ 

    $id = $row["id"];
    $product_name = $row["product_name"];
    $details = $row["details"];
    $details2 = $row["details2"];
    $details3 = $row["details3"];
    $price = $row["price"];


    if ($i % 4 == 0) { 
        $flatlist .='<tr><td width="250px" align="center"><img src="images/' . $id . '.jpg"><br/>
        <p style=color:blue font-size=14px;>' . $product_name . '</p><br/>
            <p style=font-size:14px;>' . $details . '</p><br /> 
            ' . $details2 . '<br /> 
            ' . $details3 . '<br /> 
            <p style=font-size:14px;>$' . $price . '</p><br />
            <a href="product.php?id=' . $id . '"><input type="button" value="Order" style=color:blue></a></td>';

    } else {

        $flatlist .= '<td width="250px" align="center"><img src="images/' . $id . '.jpg"><br/>
        <p style=color:blue font-size=14px;>' . $product_name . '</p><br />
            <p style=font-size:14px;>' . $details . '</p><br />
            ' . $details2 . '<br /> 
            ' . $details3 . '<br /> 
             <p style=font-size:14px;>$' . $price . '</p><br />
            <a href="product.php?id=' . $id . '"><input type="button" value="Order" style=color:blue></a></td>';
    }
    $i++;
}
$flatlist .= '</tr></table>';
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Flats</title>
</head>

<body>
<?php require 'includes/skyline.php'; ?>
<?php require 'includes/menu.php'; ?>
<table width="1200" border="0" align="center">
  <tr>
    <?php echo $flatlist ?>
   </tr>    
</table>
<?php require 'includes/footer.php';?>

1 个答案:

答案 0 :(得分:0)

想要指出您在第2行和第3行之前关闭详细信息<p>。你可能想在第三行之后关闭它。

        <p style=font-size:14px;>' . $details . '<!-- remove here: </p> --><br /> 
        ' . $details2 . '<br /> 
        ' . $details3 . '<br /><!-- add here: --></p>

如果保持相同的数据库结构,则可以在检索后将其定义为一个变量,如:

$details = $row["details"] . '<br/>' . $row['details2'] . '<br/>' . $row['details3'];

然后稍后再回过$details

为什么不想使用nl2br()?这样您就可以将多行存储到details列中。然后你只需使用:

$details = nl2br( $row["details"] );`

以下是我对您的代码的修改:

<?php require_once './connections/connect_mysqli.php';
$conn = dbConnect('read');
$sql =  "SELECT * FROM products ORDER BY id ASC LIMIT 6 ";
$result = $conn->query($sql) or die($conn->error);
$i = 0;
$flatlist = "";
while($row = $result->fetch_array(MYSQLI_ASSOC)){ 

    $id = $row["id"];
    $product_name = $row["product_name"];
    $details = $row["details"] . '<br/>' . $row['details2'] . '<br/>' . $row['details3'];
    $price = $row["price"];


    if ($i % 4 == 0) { 
        $flatlist .='<tr><td width="250px" align="center"><img src="images/' . $id . '.jpg"><br/>
        <p style=color:blue font-size=14px;>' . $product_name . '</p><br/>
            <p style=font-size:14px;>' . $details . '</p><br /> 
            <p style=font-size:14px;>$' . $price . '</p><br />
            <a href="product.php?id=' . $id . '"><input type="button" value="Order" style=color:blue></a></td>';

    } else {

        $flatlist .= '<td width="250px" align="center"><img src="images/' . $id . '.jpg"><br/>
        <p style=color:blue font-size=14px;>' . $product_name . '</p><br />
            <p style=font-size:14px;>' . $details . '</p><br />
             <p style=font-size:14px;>$' . $price . '</p><br />
            <a href="product.php?id=' . $id . '"><input type="button" value="Order" style=color:blue></a></td>';
    }
    $i++;
}