Вопрос или проблема
Я пишу внутри файла functions.php и пытаюсь отобразить HTML-код вместе с PHP-кодом на сервере. Моя проблема заключается в использовании оператора echo. Довольно сложно использовать функцию echo, так как использование ‘ ‘ лишает цветовой кодировки. Это также усложняет работу с базами данных. Я могу отобразить свой код, но ни один из PHP-кодов, похоже, не работает. Если я нажимаю на кнопку отправки, ничего не происходит, никаких ошибок. Это похоже на обычный HTML. Есть ли альтернатива echo? Если нет, как работать с PHP-кодом на сервере, используя echo?
ИЗМЕНЕНИЕ: Все, что показано ниже до закрывающего тега, заключено в ‘ ‘ из-за echo
Мои первые строки:
function add_content2() {
echo '
<!-- PHP CODE -->
<?php
$error = "";
// СОЕДИНЕНИЕ С БАЗОЙ ДАННЫХ
$dbtype = mysqli_connect("localhost", "JohnLyons", "2012Zombies123!", "b1s243006078611");
if(!$dbtype) {
die(mysqli_error($dbtype));
}
// ЧТО ПРОИСХОДИТ ПРИ ОТПРАВКЕ
if(isset($_POST["submit"])) {
$name = $_POST["name"];
if(empty($name)) {
wc_add_notice(("Заполните все поле"), "error");
} else {
// Запросы к базе данных. Как сохранить заголовок на странице
mysqli_query($dbtype, "INSERT INTO todo(name) VALUES ("$name")");
$referer = $_SERVER["HTTP_REFERER"];
header("location: $referer");
}
}
$name_loop = mysqli_query($db, "SELECT * FROM todo");
?>
Самa таблица:
<tbody>
<!-- ЦИКЛ ПО МАССИВУ -->
<?php while ($row = mysqli_fetch_array($name_loop)) { ?>
<tr>
<td> <?php echo $row["name"]; ?> </td>
</tr>
<?php } ?>
</tbody>
Наконец, кнопка отправки:
<form style="padding-top: 30px" method= "<?php echo $_SERVER["PHP_SELF"]; ?>" >
<?php if (isset($error)) { ?>
<p><?php echo $error; ?></p>
<?php } ?>
<input type="text" placeholder="Введите информацию о студенте" name="task">
<button type="submit" name="submit" style="margin-top: 10px">Зарегистрировать студента</button>
</form>
Я не могу сказать, как вышеуказанный код на самом деле реализован, но самая первая часть является неправильным использованием “echo”. Все под “” должно быть за его пределами.
Как именно вы обрабатываете остальную часть кода (и имеет ли это смысл) невозможно сказать, но вы можете увидеть что-то подобное (вероятно, я бы не написал это таким образом, но не важно…):
function add_content2() {
// СОЕДИНЕНИЕ С БАЗОЙ ДАННЫХ
$dbtype = mysqli_connect("localhost", "JohnLyons", "2012Zombies123!", "b1s243006078611");
if( ! $dbtype ) {
die(mysqli_error($dbtype));
}
// ЧТО ПРОИСХОДИТ ПРИ ОТПРАВКЕ
if(isset($_POST["submit"])) {
$name = $_POST["name"];
if(empty($name)) {
wc_add_notice(("Заполните все поле"), "error");
} else {
// Запросы к базе данных. Как сохранить заголовок на странице
mysqli_query($dbtype, "INSERT INTO todo(name) VALUES ("$name")");
$referer = $_SERVER["HTTP_REFERER"];
header("location: $referer");
}
}
$name_loop = mysqli_query($db, "SELECT * FROM todo");
//КОНЕЦ ПЕРВЫХ СТРОК - может быть здесь будет что-то еще или даже это в отдельной функции или файле?
echo '<tbody>' ;
while ($row = mysqli_fetch_array($name_loop)) {
echo '<tr>
<td>' . $row["name"] . '</td>
</tr>' ;
}
echo '</tbody> ' ;
echo '<form style="padding-top: 30px" method= "' . $_SERVER["PHP_SELF"]; . ' >' ;
if (isset($error)) {
echo '<p>' . $error . '</p>' ;
}
echo '<input type="text" placeholder="Введите информацию о студенте" name="task">' ;
echo '<button type="submit" name="submit" style="margin-top: 10px">Зарегистрировать студента</button>' ;
echo '</form>' ;
}
Ответ или решение
Во многих проектах на PHP использование функции echo
для вывода HTML-кода может стать затруднительным, особенно когда необходимо вставить обратно PHP-код. В данной статье мы рассмотрим альтернативные подходы к использованию echo
, которые минимизируют трудности редактирования и повышают читаемость кода.
Проблема использования echo
Как указано в вашем вопросе, использование функции echo
в сочетании с HTML-кодом может усложнить код. Основная проблема заключается в сложностях с синтаксическим выделением (color coding) в редакторах и затруднениях с интерполяцией переменных.
Альтернативы использованию echo
1. heredoc
и nowdoc
PHP предоставляет наработки, которые можно использовать вместо echo
, такие как heredoc
и nowdoc
. Эти конструкции позволяют вставлять многострочный текст, включая HTML-код, без необходимости экранирования кавычек.
Пример использования heredoc
:
function add_content2() {
// Подключение к базе данных
$dbtype = mysqli_connect("localhost", "JohnLyons", "2012Zombies123!", "b1s243006078611");
if (!$dbtype) {
die(mysqli_error($dbtype));
}
// Проверка отправки формы
if (isset($_POST["submit"])) {
$name = $_POST["name"];
if (empty($name)) {
wc_add_notice("Заполните все поля", "error");
} else {
mysqli_query($dbtype, "INSERT INTO todo(name) VALUES ('$name')");
$referer = $_SERVER["HTTP_REFERER"];
header("Location: $referer");
}
}
$name_loop = mysqli_query($dbtype, "SELECT * FROM todo");
// Использование heredoc для формирования HTML
$output = <<<HTML
<tbody>
HTML;
while ($row = mysqli_fetch_array($name_loop)) {
$output .= "<tr><td>{$row['name']}</td></tr>";
}
$output .= "</tbody>";
$output .= <<<HTML
<form style="padding-top: 30px" method="{$_SERVER['PHP_SELF']}">
HTML;
if (isset($error)) {
$output .= "<p>{$error}</p>";
}
$output .= <<<HTML
<input type="text" placeholder="Введите информацию о студенте" name="task">
<button type="submit" name="submit" style="margin-top: 10px">Зарегистрировать студента</button>
</form>
HTML;
echo $output;
}
2. Запись в шаблонные файлы
Другим подходом может быть использование шаблонов. Вы можете хранить HTML в отдельных файлах и подключать их из вашего кода. Это поможет сохранить логику и представление раздельно.
Пример использования шаблонов:
Создайте файл template.php
с вашим HTML-кодом:
<tbody>
<?php while ($row = mysqli_fetch_array($name_loop)) { ?>
<tr>
<td><?php echo $row['name']; ?></td>
</tr>
<?php } ?>
</tbody>
<form style="padding-top: 30px" method="<?php echo $_SERVER['PHP_SELF']; ?>">
<?php if (isset($error)) { ?>
<p><?php echo $error; ?></p>
<?php } ?>
<input type="text" placeholder="Введите информацию о студенте" name="task">
<button type="submit" name="submit" style="margin-top: 10px">Зарегистрировать студента</button>
</form>
В вашем functions.php
просто вызывайте этот шаблон:
function add_content2() {
// Ваш код для работы с БД
include 'template.php';
}
Заключение
Использование heredoc
, nowdoc
и шаблонов значительно упрощает работу с HTML и PHP, улучшая читаемость и сопровождение кода. Эти методы уменьшают количество ошибок и помогают избежать проблем с экранированием символов, что делает разработку более удобной.
Выберите подход, который соответствует вашей структуре проекта, и сделайте свой код более понятным и легким для сопровождения.