Доброго времени суток.
Есть три файла.
Файл с подключением к бд, файл с функциями, индекс (где подключаются два вышеупомянутых файла).
Решил перенести вывод контента в функцию, так как он у меня много где выводится подобным образом.
Запросы у меня идут с индекса, в функцию передаю значение > все работает.
Тут потребовалось выполнить запрос из функции, а он не выполняется, ломал долго голову, установил что почему то в функции отсутствует подключение. Пока подключение в функцию не воткну, ничего не происходит. Почему так и что делать ?
Файл бд
<?
$host = 'localhost';
$db = 'kat';
$user = 'mysql';
$pass = 'mysql';
$charset = 'utf8mb4';
$dsn = "mysql:host=$host;dbname=$db;charset=utf8mb4";
$opt = [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
PDO::ATTR_EMULATE_PREPARES => false,
];
$pdo = new PDO($dsn, $user, $pass, $opt);
?>
Кусок кода из индекса
$pdo->exec("set names utf8mb4");
$top = $pdo->prepare("SELECT * FROM `sait` WHERE `status` = '1' AND `status` = '1' ORDER BY `time_reg` DESC LIMIT ?, ?");
$top -> bindValue(1, $start, PDO::PARAM_INT);
$top -> bindValue(2, $page_top, PDO::PARAM_INT);
$top -> execute();
$topc = $top->rowCount();
if ($topc!= 0){
cont($top);
?>
Функция
function cont($top) {
$top = $top->fetchAll();
foreach ($top as $row) {
/* Этот запрос не выполняется, без него все работает*/
$category = $pdo->prepare("SELECT * FROM `cat` WHERE `id` = ?");
$category->execute(array($row['category']));
$category = $category->fetch();
?>
<div class="col-md-6 col-xs-12"> <a href="/info/<?=$row['id']?>.html"><div class="cal <? if ($row['vip'] > time()) { echo 'calvip';} ?>">
<div class="tabcal">
<div class="ava" style="background-image: url(/images/ava/<?=$row['id']?>.jpg)"></div>
<div class="tabcalcont">
<h3><?=$row['name']?> <? echo ($row['category']==7 ? '<img src="/images/18.png" alt="*">':'') .''; ?> <? if ($row['vip'] > time()) { echo top();} ?></h3>
<p>@<?=$row['url']?></p>
<p><i class="fa fa-tags" aria-hidden="true"></i> <?=$category['name']?></p>
</div></div>
<div class="calcont">
<p><?
if(mb_strlen($row['about']) > 200){
$text = mb_substr($row['about'], 0, 200, 'utf-8');
echo strip_tags($text);
}else{
echo strip_tags($row['about']);
} ?></p>
<div class="chel"><i class="fa fa-user-o" aria-hidden="true"></i>
<?= number_format($row['chel'], 0,'',' '); ?></div>
<div class="clear"></div>
</div>
</div></a></div>
<?
}
}