0

我正在用 PHP 编写评论脚本。审阅者撰写的审阅文本连同其他值(例如审阅者给审阅的日期和标题)一起插入到数据库中。

我想在单独页面的表格上输出评论。我已经写过了,它工作得很好,除非审阅者写了“测试”之类的东西。因此,如果评论中有引号或语音标记,则表格会扭曲,并且评论会停留在一行并且不跟随宽度<td>

这是代码:

    <?php


        echo "<tr $class>";
        echo "<td width='400' class='style1' style='color: #069; font-size: 15px;'>".$rating." &nbsp;&nbsp;&ldquo;".$row['title']."&rdquo; &nbsp;</td>";
        echo "<td width='200' class='style1'><div align='left'>Reviewed ".date_format($timeCreate, 'j F Y ')."</div></td>";
        echo "</tr>";
        echo "<tr $class>";
        echo "<td width='200'>";

        // Prints pros, cons, and other thoughts fields
        if($row['comment'])
        {

                echo "<p class='style2'>".$row['comment']."</p><div id='usname'>by ".$row['name']."<br><br></div><div class='$g'><font size='2' color='black'>Was this review helpful?</font>&nbsp;<input type='submit' value='Yes' onClick = 'myCall()' style='background-color:#556B2F;color:white;padding:2px; cursor:pointer' name='help' id='$g' class='button' /></div></td><td><img src='Themes/images/glyphicons_072_bookmark.png' width='10' height='15'></div><font size='1' style='padding-bottom:10px;'>&nbsp;&nbsp;".$row['helpful']." found this helpful</font><div id='mybox'>

        </div></td>";
            echo '

    '; 
        }
        echo "</tr><tr><td colspan='2'><hr></td></tr>";


        echo "<tr $class>";

        $id = $row['id'];
        echo "</tr>";

    }

    echo ""; 
    echo "</table>";
}
else
{
    echo "<p class='red'>Error</p>";
    echo "<p>This person does not exist.</p>";
}
?>

该表如下所示:

<table width='600' border='1' cellpadding='0' cellspacing='0'>

上面还有更多代码输出评论标题等数据,但我没有包括在内,因为我认为这并不重要。

不仅仅是审阅脚本有这个问题,所有来自数据库的信息都被放入表中的表。

4

3 回答 3

1

我在下面的代码片段中看到了问题

echo "<td width='200'>";
        // Prints pros, cons, and other thoughts fields
        if($row['comment'])
        {

                echo "<p class='style2'>".$row['comment']."</p><div id='usname'>by ".$row['name']."<br><br></div><div class='$g'><font size='2' color='black'>Was this review helpful?</font>&nbsp;<input type='submit' value='Yes' onClick = 'myCall()' style='background-color:#556B2F;color:white;padding:2px; cursor:pointer' name='help' id='$g' class='button' /></div></td><td><img src='Themes/images/glyphicons_072_bookmark.png' width='10' height='15'></div><font size='1' style='padding-bottom:10px;'>&nbsp;&nbsp;".$row['helpful']." found this helpful</font><div id='mybox'>

        </div></td>";
            echo '

    '; 
        }
        echo "</tr><tr><td colspan='2'><hr></td></tr>";

如果设置了评论,那么您将添加两列,但如果未设置评论,那么它将打开一个 TD,然后关闭 TR。这可能会导致未格式化的 HTML。您能否添加一个其他条件并检查,如下所示

echo "<td width='200'>";

        // Prints pros, cons, and other thoughts fields
        if($row['comment'])
        {

                echo "<p class='style2'>".$row['comment']."</p><div id='usname'>by ".$row['name']."<br><br></div><div class='$g'><font size='2' color='black'>Was this review helpful?</font>&nbsp;<input type='submit' value='Yes' onClick = 'myCall()' style='background-color:#556B2F;color:white;padding:2px; cursor:pointer' name='help' id='$g' class='button' /></div></td><td><img src='Themes/images/glyphicons_072_bookmark.png' width='10' height='15'></div><font size='1' style='padding-bottom:10px;'>&nbsp;&nbsp;".$row['helpful']." found this helpful</font><div id='mybox'>

        </div></td>";
            echo '

    '; 
        }
        else
        {
             echo "</td><td>&nbsp;</td>";
        }
        echo "</tr><tr><td colspan='2'><hr></td></tr>";
于 2013-04-11T13:23:49.927 回答
0

如果要显示文本,则需要将特殊字符转换为 html 实体。http://php.net/manual/en/function.htmlentities.php

这会将 & 转换为&amp;和 " 到&quot;

如果您需要转换单引号,请使用 ENT_QUOTES 选项。

于 2013-04-11T12:57:36.807 回答
-3

也许你应该使用addslashes() http://pl1.php.net/manual/en/function.addslashes.php

稍后在显示它之前 stripcslashes()

于 2013-04-11T12:51:16.743 回答