Какой метод я должен использовать для последующей установки переменной, а затем повторить заголовок страницы
Я пытаюсь избежать запроса моей базы данных дважды: для набора <title>
атрибут, а также для отображения заголовка страницы. Я хочу сделать запрос только один раз:
Пример:
<html>
<head>
<?php
// how should I use here ob_start() ? Is there any other possible way to achieve this?
$title = "";
echo '<title>', $title, '</title>'; // this should be in the end <title>value of $row['page_title']</title>
?>
</head>
<body>
<?php
$sql = $mysqli->query("MY QUERY");
$row = $sql->fetch_assoc();
$title = $row['page_title']; // I want that this assignment to set the variable in the top
// I know that for this job I can use ob_start() but I didn't used it until now
// and I will really appreciate any help from you.
?>
<h1><?php echo $title; ?></h1>
</body>
</html>
Я знаю, что могу сделать запрос, прежде чем эхо title
атрибут, но я не хочу делать это так. Есть ли у вас предложения? или вы можете показать мне, как использовать это ob_start()
/ ob_clean()
функции?
Спасибо!
2 ответа
Переместите запрос в начало кода и используйте переменные повторно!
<?php
$sql = $mysqli->query("MY QUERY");
$row = $sql->fetch_assoc();
$title = $row['page_title'];
?>
<html>
<head>
<?php echo '<title>', $title, '</title>'; ?>
</head>
<body>
<h1><?php echo $title; ?></h1>
</body>
</html>
ob_start();
в обычном смысле не поможет вам. Тем не менее, вы можете использовать некрасивое решение, как это:
ob_start();
echo '
<html>
<head>
<title>{title}</title>
</head>
<body>
';
$header = ob_get_clean();
// and then, when you know your title
echo str_replace('{title}', $known_title, $header);
Но я настоятельно рекомендую использовать другой подход. Вам нужно выбрать и заполнить шаблон после того, как все данные были собраны, и вы знаете все детали о том, какой шаблон вы хотите. Если вы начнете эхом отдавать разные части, у вас будет все больше проблем. Теперь вам нужно изменить заголовок для некоторых страниц. Затем вам нужно будет добавить файл CSS для конкретной страницы, и вам придется снова заняться этим уродливым делом. Почему бы не сделать это правильно?