段落中的PHP Echo不适用于所有记录

时间:2019-05-30 21:37:08

标签: javascript php html css

我有一个简单的表格,像这样;

<div class="formholder">
        <form action="column1.php" method="post">
        <input type="text" placeholder="URL:" name="url" required=""><br>
        <input type="text" placeholder="Job Title:" name="title" required=""><br>
        <input type="text" placeholder="Job Site & Additional Details" name="details"><br>
        <br>
        <input type="submit"><br>
        </form>
        </div>

然后,该表单由包含以下PHP的column1.php处理;

<?php
$url = $_POST["url"];
$title = $_POST["title"];
$details = $_POST ["details"];
$timestamp =date('l jS \of F Y h:i:s A');
$text = "<a href='{$url}'>{$title}</a><br><br> ".($details)." <br> At: {$timestamp} <br><br><hr><br> \n";
$file = fopen("./data/column1.html","a+ \n");
 fwrite($file, $text);
 fclose($file);
?>

然后在页面上,我要显示我使用的提交内容;

 <p class="linktext"><?php echo file_get_contents("./data/column1.html"); ?></p>

我的linktext类的CSS是这个;

.linktext {
    font-family: 'Roboto', serif;
    font-size: 1vw;
    text-align: center;
    margin-top: 0px;
    margin-bottom: 0px;
    color: #FFFFFF;
    padding-left: 2vh;
    padding-right: 2vh;
    padding-bottom: 0.5vh;
    line-height: 1em;
}

@media only screen and (max-width: 500px) {
.linktext {
    font-family: 'Roboto', serif;
    font-size: 4vw;
    text-align: center;
    margin-top: 0px;
    margin-bottom: 0px;
    color: #FFFFFF;
    padding-left: 1vh;
    padding-right: 1vh;
    padding-bottom: 0.5vh;
    line-height: 1em;
}
}

由于某种原因,回显对于第一个结果工作正常,但是一旦发送第二个提交,它将无法正确显示。

两次提交后,包含响应的文件如下所示:

<a href='URL'>Job Title 1</a><br><br> Job Details <br> At: Thursday 30th of May 2019 10:33:47 PM <br><br><hr><br> 
<a href='URL'>Job Title 2</a><br><br> Job Details <br> At: Thursday 30th of May 2019 10:34:00 PM <br><br><hr><br> 

但是显示这个;

A Screenshot of the error.

我不知道为什么在其他地方使用相同类型的表单后,它决定不起作用。

因为我被卡住了,对此我们将不胜感激。

2 个答案:

答案 0 :(得分:0)

此代码部分的一些注释:

$file = fopen("./data/column1.html","a+ \n");
fwrite($file, $text);
fclose($file);

属性"a+ \n"无效。请改用"a+"。在这里,您只能写作。因此"a"是完美的。

您没有像这样的错误管理

$file = fopen("./data/column1.html","a");
if (!$file)
{
    // error handling
}
else
{
    fwrite($file,$text);
    fclose($file);
}

如果使用file_put_contents(),代码将变得更短:

if ( file_put_contents( "./data/column1.html", $text, FILE_APPEND ) === false )
{
    // error handling
}

答案 1 :(得分:0)

我知道了。而不是;

<p class="linktext"><?php echo file_get_contents("./data/column1.html"); ?></p>

我可以使用;

<div class="linktext"><?php echo file_get_contents("./data/column1.html"); ?></div>

它保留所有样式,并且将基于文本类的相同CSS来工作。