@WELES333
Студент, специальность "Информатика".

Как подключить файл php с помощью детективы ng-include AngularJS с тем же scope что и parent?

Используя директиву 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 запросы на главной странице работают.
  • Вопрос задан
  • 326 просмотров
Пригласить эксперта
Ответы на вопрос 1
eudj1n
@eudj1n
Никак. Используйте языковые конструкции того языка, на котором пишете - в данном случае include.

Если же нужно последующее получение данных в загруженную страницу - используйте AJAX.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы