Как разместить вывод из внешнего php файла в определенном месте страницы
Я посмотрел на другие сообщения здесь, касающиеся подобных вопросов, но не могу найти ответа.
Edit я играл с этим и хочу несколько изменить свой вопрос.
У меня возникла проблема с размещением вывода, который повторяется из внешнего файла php.
Вот пример кода для демонстрации моей проблемы-это мой основной файл writephp.php:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Test Php </title>
<link rel="stylesheet" href="writephp.css">
</head>
<body>
<div class="allContent">
<?php for($i=0; $i<3; $i++): ?>
<div class="commentBox">
<p> Just a box</p>
</div>
<?php endfor; ?>
<a href="write.php?outputHtml">Php output</a>
</div>
</body>
</html>
Теперь я могу центрировать это с помощью css:
.allContent {
width: 400px;
margin-left: auto;
margin-right: auto;
font-family: Arial;
}
.commentBox {
border: 1px solid black;
width: 400px;
padding: 0px 5px 5px 5px;
margin-top: 5px;
}
Итак, в html-файле php записывает поля которые сосредоточены на странице, так как цикл php находится в пределах" allConent " div.
Якорь вызывает внешний php-файл, который будет эхом повторять еще несколько коробок.
Этот файл выглядит так и называется write.php (writephp.php это главный файл, который вызывается из):
<?php
if (isset($_GET['outputHtml']))
{
echo "<p class='allContent commentBox'>" . "This is from external PHP" . "</p>";
echo "<p class='allContent commentBox'>" . "This is also from external PHP" . "</p>";
include 'writephp.php';
}

Но эхо-вывод из внешнего php выше вывода из основного файла -фактически он помещен перед тегом <!doctype html>, очевидно, не очень хорошо.
Источник страницы выглядит следующим образом это:
<p class='commentBox allContent'>This is from external PHP</p
><p class='allContent commentBox'>This is also from external PHP</p>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Test Php </title>
<link rel="stylesheet" href="writephp.css">
</head>
<body>
<div class="allContent">
<div class="commentBox">
<p> Just a box</p>
</div>
<div class="commentBox">
<p> Just a box</p>
</div>
<div class="commentBox">
<p> Just a box</p>
</div>
<a href="write.php?outputHtml">Php output</a>
</div>
</body>
В общем случае мой вопрос будет звучать так: " как мне разместить html, исходящий из внешнего файла php, в любом месте страницы? "
3 ответов:
<?php if (isset($_GET['outputHtml'])) { echo "<p class='commentBox'>" . "This is from external PHP" . "</p>"; echo "<p class='commentBox'>" . "This is also from external PHP" . "</p>"; include 'writephp.php'; }Это в вашем письме.php не корректен, смотрите
writephp.php- это полная HTML страница с<html><head>и<body>теги, и вы включаете его после повторения некоторых тегов<p>, которые не заставят ваши новые поля волшебным образом появляться внутри тела страницы, вы создадите некоторую недопустимую разметку с двумя<p>в начале файла, за которыми следует<!DOCTYPE><html>и т. д...EDIT
Относительно обновления к вашему вопросу, который теперь читается "Как разместить вывод из внешний php файл в определенное место на странице "
Как правильно отметил в своем ответе @Robert Seddon-Smith, использование
includeприведет к тому, что содержимое появится именно в тот момент, когда будет сделан вызов, поэтому, если вы хотите включить свои новые поля в основной файл, то вызовincludeдолжен быть обратным, то есть вы должны включить содержимое внутри основного файла, вы можете использовать этот пример для проверки:Измените
write.php, чтобы просто эхо-блоки, когда переменная $_GET настоящее время<?php if (isset($_GET['outputHtml'])) { echo "<div class='commentBox'>" . "This is from external PHP" . "</div>"; echo "<div class='commentBox'>" . "This is also from external PHP" . "</div>"; } ?>И сделайте вызов include в главном файле
writephp.php<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title>Test Php </title> <link rel="stylesheet" href="writephp.css"> </head> <body> <div id="allContent"> <?php for($i=0; $i<3; $i++): ?> <div class="commentBox"> <p> Just a box</p> </div> <?php endfor; ?> <?php include 'write.php'?> <a href="writephp.php?outputHtml">Php output</a> </div> </body> </html>Это будет включать в себя два новых ящика внутри контейнера, когда вы нажмете на ссылку.
Также Вы заметите, что нет ничего особенного в стилизации содержимого из включенного файла, то есть потому, что в конце концов вся разметка отображается как одна HTML-страница, не имеет значения, повторяется ли содержимое с главной страницы или включенного файла, оно будет подчиняться любым правилам в вашем CSS
Проблема заключается в том, что вы не производите правильный контент с помощью write.php, вероятно, из-за непонимания того, что включает в себя на самом деле делать.
Все, что делает функция include (), это берет содержимое включенного файла и анализирует его как PHP в точке в файле, который вы включаете. Это имеет почти такой же эффект, как вырезание и вставка содержимого файла в одном и том же месте. Только поместите в свой включенный файл то, что вы могли бы ввести, где это должно быть помещено.
Я бы переписал всю партию. правильно так то пишут.php содержит только функцию, которая генерирует строку html для ваших полей коммментов:
<?PHP function commentbox() { $output=""; for($i=0; $i<3; $i++) $output.="<div class='commentBox' id='cb_$i'><p> Just a box</p></div>"; return $output; } ?>Вы включаете () это в верхней части вашего php-файла, а затем вызываете его вывод везде, где требуется:
echo commentbox();Или, лучше:
Создайте нижний колонтитул.php файл:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title>Test Php </title> <link rel="stylesheet" href="writephp.css"> </head> <body> <div id="allContent"> <?PHP echo $content;?> </div> </body> </html>Который вы можете использовать со всеми вашими проектами очень легко.
Это используется следующим образом:
<?PHP include("write.php"); $content="whatever"; $content.=commentbox(); $content.="whateverelse"; include("footer.php"); ?>Несмотря на то, что я намеренно не потрудился отформатировать приведенный выше код, он очень легко найти, где создается контент,и отладить его. Смешанный PHP и HTML код-это кошмар для отладки даже с Код-контекст-окраской. Кроме того, очень трудно найти бит, который вы хотите одолжить и положить куда-то еще позже.
Во-первых, вы не должны использовать идентификатор "allContent" на двух отдельных элементах. Идентификаторы должны быть уникальными. Классы могут использоваться для стилизации нескольких элементов.
Почему бы не изменить его на код ниже? Есть ли причина, по которой вы хотите, чтобы они были другими?
echo '<div class="commentBox"><p>' . 'This is from external PHP' . '</p></div>'; echo '<div class="commentBox"><p>' . 'This is also from external PHP' . '</p></div>';
Comments