mysql — тег заголовка страницы PHP не отображается правильно

Я призываю свою базу данных MySQL опубликовать название категории в теге title в band_cat_list.php.
Это код для добавления его в заголовок:

BAND_CAT_LIST.PHP
<head>
<?php

include ('database.php');

$get_title = "SELECT * FROM `Categories`";

$run_title = mysql_query($get_title);

while ($row_title = mysql_fetch_array($run_title)){

$cat_id   = $row_title['cat_id'];
$cat_title = $row_title['cat_title'];

echo "<title>Offstreams - $cat_title</title>";
}
?>
</head>

Внутри index.php я публикую категории. Категории отображают без проблем, и когда я нажимаю на них, они переходят на соответствующую страницу, которая является «index.php? Band_cat_list»&кот = $ category_id»

INDEX.PHP
<div class="header_links">
<ul class="header_ul">
<?php
include("includes/database.php");

$get_categories = "select * from Categories";

$run_categories = mysql_query($get_categories);

if (!$run_categories) { // add this check.
die('Invalid query: ' . mysql_error());
}

while ($category_row=mysql_fetch_array($run_categories)){

$category_id = $category_row['cat_id'];
$category_title = $category_row['cat_title'];

echo "<li class='header_li' align='center'><a href='index.php?band_cat_list&cat=$category_id'>$category_title</a></li>";
}
?>
</ul>
</div>

Я использую PHP 5.4 на своем сервере, поэтому я знаю, что функция mysql_fetch_array () не устарела. Но я не могу понять это. Когда я нажимаю на любую из категорий, она публикует только первую в списке в теге заголовка. Пожалуйста помоги.

0

Решение

Вы не можете иметь несколько тегов заголовка на странице HTML.

Код, который вы написали, будет выводить несколько тегов заголовков, если у вас есть несколько записей внутри категорий. Если я понимаю, что вы пытаетесь сделать, должно работать следующее:

<head>
<?php

include ('database.php');

$id = isset($_GET['cat']) ? $_GET['cat'] : exit("cat id is missing");

$get_title = "SELECT * FROM `Categories` WHERE `cat_id` = '{$id}'";

$run_title = mysql_query($get_title);

while ($row_title = mysql_fetch_assoc($run_title)){

$cat_id   = $row_title['cat_id'];
$cat_title = $row_title['cat_title'];

echo "<title>Offstreams - $cat_title</title>";
}
?>
</head>

PS: вы не должны использовать расширение mysql, поскольку оно устарело и больше не поддерживается. Попробуйте использовать MySQL вместо

ОБНОВИТЬ:

Вы должны изменить свой файл index.php на

INDEX.PHP
<div class="header_links">
<ul class="header_ul">
<?php
include("includes/database.php");

$get_categories = "select * from Categories";

$run_categories = mysql_query($get_categories);

if (!$run_categories) { // add this check.
die('Invalid query: ' . mysql_error());
}

while ($category_row=mysql_fetch_array($run_categories)){

$category_id = $category_row['cat_id'];
$category_title = $category_row['cat_title'];

echo "<li class='header_li' align='center'><a href='BAND_CAT_LIST.php?band_cat_list&cat=$category_id'>$category_title</a></li>";
}
?>
</ul>
</div>

Ваш BAND_CAT_LIST.php должен отображать заголовок как «Offstreams — $ selected_category»

<head>
<?php

include ('database.php');

$id = isset($_GET['cat']) ? $_GET['cat'] : false;

if($id) {
$get_title = "SELECT * FROM `Categories` WHERE `cat_id` = '{$id}'";

$run_title = mysql_query($get_title);

while ($row_title = mysql_fetch_assoc($run_title)){

$cat_id   = $row_title['cat_id'];
$cat_title = $row_title['cat_title'];

echo "<title>Offstreams - $cat_title</title>";
}
}
?>
</head>
1

Другие решения

Переместить ваш echo за пределами вашего цикла. Кроме того, если $cat_title это массив, вам нужно будет преобразовать его в строку и, вероятно, отформатировать его.

BAND_CAT_LIST.PHP

<head>
<?php

include ('database.php');

$get_title = "SELECT * FROM `Categories`";

$run_title = mysql_query($get_title);
$cat_title = array();
while ($row_title = mysql_fetch_array($run_title)){

$cat_id   = $row_title['cat_id'];
$cat_title = $row_title['cat_title'];

}
if (is_array($cat_title)) {
$cat_title = implode(" - ", $cat_title);
}
echo "<title>Offstreams - $cat_title['cat_title']</title>";
?>
</head>
0

По вопросам рекламы [email protected]