У меня есть простая форма, вот так;
<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>
Затем эта форма обрабатывается column1.php
, который содержит следующий 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>
CSS для моего класса linktext
таков;
.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>
Но показывает это;
Я не знаю, почему это решило не работать в других местах, с тем же типом формы, стиль работал просто отлично.
Любая помощь будет оценена по этому поводу, потому что я застрял.
Попробуйте обернуть весь фрагмент <div>
или <p>
или чем-то еще на уровне блока.
Эй, я добавил содержимое public_html
для загрузки [здесь] (темный режим.16mb.com/public_html.zip), у меня это работало раньше, но вы, вероятно, правы. Вот рабочий пример [здесь] (darkmode.16mb.com/run)
Спасибо за предложение @prieber, но оно не сработало. Весь код доступен здесь или вы можете использовать демоверсию здесь
Я добавил стиля в веб-версию, чтобы она была более очевидной @j08691
HTML в вашем примере недействителен
Некоторые примечания к этой части кода:
$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
}
Это вся полезная информация, но, похоже, она не связана с проблемой в вопросе.
Согласованный. Хорошие комментарии, но они не просили проверить код.
Ценю ответ, PHP работает, поэтому я хотел бы оставить его, просто нужно соблюдать CSS.
Я понял. Скорее, чем;
<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 для текстового класса.
Скорее всего, ваш код выводит искаженный HTML. Можете ли вы опубликовать актуальный список ссылок?