Используя директиву ng-include я хочу подключить к index.php дополнительные блоки. В файле index.php установлен файл(так как я использую его и на других станицах) с подключением к базе данных. При подключении новых блоков, запросы, которые там должны выполняться выдают ошибку типа: mysqli_query() expects parameter 1 to be mysqli, null given in ... (то-есть нет подключения к базе данных)
Думаю, это связано с тем, что angular для подключаемых файлов создает собственные scopes. Я пробовал подключить тот же контроллер что использую в index.php в подключаемый файл, но это ничего не изменило.
Часть index.php:
<?php
include("include/db_connect.php");// поключение ДБ
include("functions/functions.php");
session_start();
include("include/auth_cookie.php");
$sorting = $_GET["sort"];
switch ($sorting)
{
case 'price-asc';
$sorting = 'price ASC';
$sort_name = 'Od tanich do drogich';
break;
case 'price-desc';
$sorting = 'price DESC';
$sort_name = 'Od drogich do tanich';
break;
case 'popular';
$sorting = 'count DESC';
$sort_name = 'Popularne';
break;
case 'news';
$sorting = 'datetime DESC';
$sort_name = 'Nowości';
break;
case 'model';
$sorting = 'model';
$sort_name = 'Nowości';
break;
default:
$sorting = 'products_id DESC';
$sort_name = 'Bez sortowania';
break;
}
?>
<!DOCTYPE html>
<html ng-app='myApp'>
<head>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-2" />
<link href="css/reset.css" rel="stylesheet" type="text/css" />
<link href="css/style.css" rel="stylesheet" type="text/css" />
<link href="trackbar/trackbar.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/angularjs/1.3.3/angular.js"></script>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.3/angular-cookies.js"></script>
<script type="text/javascript" src="http://cdnjs.cloudflare.com/ajax/libs/angular.js/1.3.3/angular-route.js"></script>
<script type="text/javascript" src="/js/controllers.js"></script>
<script type="text/javascript" src="/js/jquery-1.8.2.min.js"></script>
<script type="text/javascript" src="/js/jcarousellite_1.0.1.js"></script>
<script type="text/javascript" src="/js/shop-script.js"></script>
<script type="text/javascript" src="/js/jquery.cookie.min.js"></script>
<script type="text/javascript" src="/trackbar/jquery.trackbar.js"></script>
<script type="text/javascript" src="/js/TextChange.js"></script>
<title>Sklep internetowy sprzętu telekomunikacyjnego</title>
</head>
<body ng-controller="productCtrl">
<div id="block-body" >
<!-- <div ng-repeat="products in newParam">{{products}} </div> -->
<!-- Проблемные блоки -->
<ng-include src="'include/block-header.php'"></ng-include>
<div id="block-right">
<ng-include src="'include/block-category.php'"></ng-include>
<ng-include src="'include/block-parameter.php'"></ng-include>
<ng-include src="'include/block-news.php'"></ng-include>
</div>
<div id="block-content">
Один из подключяемых файлов:
<div id="block-news" ng-controller="productCtrl">
<center><img id="news-prev" src="/images/img-prev.png" /></center>
<div id="newsticker">
<ul>
<?php
$result = mysqli_query($link, "SELECT * FROM news ORDER BY id DESC");
If (mysqli_num_rows($result) > 0)
{
$row = mysqli_fetch_array($result);
do
{
echo '
<li>
<span>'.$row["date"].'</span>
<a href="" >'.$row["title"].'</a>
<p>'.$row["text"].'</p>
</li>
';
}
while ($row = mysqli_fetch_array($result));
}
?>
</ul>
</div>
<center><img id="news-next" src="/images/img-next.png" /></center>
</div>
В контроллере пока ничего особенно нет. Подключать базу данных в каждом файле думаю не вариант.
Я так понимаю что так как angular прикрепляет файлы, то возможно он не читает php, что в таком случае можно сделать не используя <?php include "file.php" ?>. Думаю $http.post даже не стоит пробовать как видно с предоставленного файла. Или как? PS. Angular и mysqli запросы на главной странице работают.