Я не могу понять, как решить ошибку PHP.
По приведенному ниже коду я получаю сообщение об ошибке:
Неустранимая ошибка: невозможно повторно объявить getintro () (ранее объявлено … в строке 94)
Я отметил линию 94 ниже. Любая помощь или руководство приветствуется. Моя цель состоит в том, чтобы зациклить каждое сообщение в блоге на основе каждой строки базы данных с отображением только части текста. Когда ссылка нажала, он должен открыть полный блог с комментариями в blog.php
<?php // retreive post
include('php/config.php');
include ('php/function.php');
dbConnect();
$blog_query = mysql_query(
'SELECT *
FROM Blog
ORDER BY DATE DESC');
while($row = mysql_fetch_array($blog_query)):
$date = date_create($row['DATE']);
$str = $row['CONTENT'];
$ID = $row['ID'];
LINE 94 function getIntro($str, $count = 200) {
return preg_replace('/\s+?(\S+)?$/', '', substr(nl2br($str), 0, $count)) . " <a href=\"blog.php?page={$ID}\" class=\"changeColor\">Read more...</a>\n";
}
$new_string = getIntro($str);
?>
<div class="post">
<h2><?php echo $row['TITLE']?></h2>
<h3><?php echo date_format($date, 'l, F j, Y')?></h3>
<p><?php echo $new_string?></p>
</div>
</div>
<?php endwhile?>
Ваша функция объявляется внутри цикла. Переместите объявление функции за пределы цикла.
<?php // retreive post
include('php/config.php');
include ('php/function.php');
dbConnect();
$blog_query = mysql_query(
'SELECT *
FROM Blog
ORDER BY DATE DESC');
function getIntro($str, $count = 200) {
return preg_replace('/\s+?(\S+)?$/', '', substr(nl2br($str), 0, $count)) . " <a href=\"blog.php?page={$ID}\" class=\"changeColor\">Read more...</a>\n";
}
while($row = mysql_fetch_array($blog_query)):
$date = date_create($row['DATE']);
$str = $row['CONTENT'];
$ID = $row['ID'];
$new_string = getIntro($str);
?>
<div class="post">
<h2><?php echo $row['TITLE']?></h2>
<h3><?php echo date_format($date, 'l, F j, Y')?></h3>
<p><?php echo $new_string?></p>
</div>
</div>
<?php endwhile?>
Вы объявляете функцию в цикле, поэтому на каждой итерации она объявляет одну и ту же функцию, которая вызывает проблему. Я бы объявил функцию над циклом и вызвал функцию внутри цикла.
Вынесите объявление вашей функции из цикла while! (Декларация должна быть до того, как вы ее используете!)
function getIntro($str, $count = 200) {
return preg_replace('/\s+?(\S+)?$/', '', substr(nl2br($str), 0, $count)) . " <a href=\"blog.php?page={$ID}\" class=\"changeColor\">Read more...</a>\n";
}
Переместите определение функции из цикла, например, поместите его перед dbConnect:
function getIntro($str, $count = 200) {
return preg_replace('/\s+?(\S+)?$/', '', substr(nl2br($str), 0, $count)) . " <a href=\"blog.php?page={$ID}\" class=\"changeColor\">Read more...</a>\n";
}