@SinSin35

Как подключить два php файла к одной бд?

Есть 3 php файла: первый - основной index.php , второй - содержит функцию, которая создает определенный div и подключается к основному файлу через require_once, третий файл - подключение к бд и подключается к первому через include_once.
Сейчас возникла необходимость подключить бд ко второму файлу , однако $conn там выдает NULL.
Второй файл:
<?php
include_once("db_connection.php");
function component($productimage,$productname,$producttext,$productdiscount,$productprice,$productid){
$element = "
<div class=\"col-md-4 col-sm-6 my-3 my-md-0\">
	<form action=\"index.php\" method=\"post\">
		<div class=\"card shadow\">
			<a href='./index.php?product=$productid'>
			<div id=\"card-top\">
				<img src=\"$productimage\" alt=\"$productname\" class=\"img-fluid card-img-top\">
			</div>
			<div class=\"card-body\">
				<h5 class=\"card-title\">
					$productname
				</h5>
			</a>
				<h6>
					<i class=\"fas fa-star\"></i>
					<i class=\"fas fa-star\"></i>
					<i class=\"fas fa-star\"></i>
					<i class=\"fas fa-star\"></i>
					<i class=\"far fa-star\"></i>
				</h6>
				<p class=\"card-text\" id=\"description\">
					$producttext
				</p>";
				if($productprice==$productdiscount){
					$element.="<h5>
					<span class='price' id='disc'> $productprice P</span>
					</h5>";
				}
				else{
					$element.="<h5>
					<small><s class='text-secondary' id='nondisc'>$productdiscount</s></small>
					<span class='price' id='disc'> $productprice P</span>
					</h5>";
				};
				$sql = "SELECT * FROM zakaz WHERE Prod_id=".$productid.";";
				var_dump($sql);
				$result = mysqli_query($conn,$sql);
				$resultCheck = mysqli_num_rows($result);
				if ($resultCheck > 0){
				$element.="<button type='submit' href='./index.php' class='btn btn-warning my-3' name='add'>Добавить в корзину</button>
							<input type='hidden' name='product_id' value='$productid'>";}
				else{
				$element.="<button type='submit' href='./index.php' class='btn btn-warning my-3' name='add' disabled>Добавлено в корзину</button>
					<input type='hidden' name='product_id' value='$productid'>";					
				};
				$element.="
			</div>
		</div>
	</form>
</div>";
echo $element;
}
?>


Третий файл:
<?php 
$dbServername = "localhost";
$dbUsername="root";
$dbPassword="";
$dbName="kursor";

$conn=mysqli_connect($dbServername,$dbUsername,$dbPassword,$dbName);

if (!$conn){
	die("Connection failed: ".mysqli_connect_error());
}
?>
  • Вопрос задан
  • 146 просмотров
Решения вопроса 1
@AUser0
Чем больше знаю, тем лучше понимаю, как мало знаю.
Вам надо изучать область видимости переменных.

А в случае приведённого кода решения два: кошерное и идиологически правильное - вставить $conn в список аргументов функции, и второе, за которое сильно ругают - внутри функции сделать объявление global $conn;. Конечно возможен и третий способ, include("db_connection.php"); внутрий функции, но это уже махровый быдлокодеризм и тупая растрата свободных подключений к MySQL.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
FanatPHP
@FanatPHP
Чебуратор тега РНР
Надо к файлу подключать не БД, а HTML.

У тебя у самого судороги не начинаются, когда ты смотришь вот на это
<div class=\"col-md-4 col-sm-6 my-3 my-md-0\">
  <form action=\"index.php\" method=\"post\">
    <div class=\"card shadow\">
      <a href='./index.php?product=$productid'>

?
А писать все эти палочки и кавычечки не задолбался?

А теперь подмай, зачем тебе база данных в HTML?

Не проще выполнить свой запрос в основном файле, там же, где делаются остальные запросы, а в этом, во-первых, писать HTML как есть,

<div class="col-md-4 col-sm-6 my-3 my-md-0">
  <form action="index.php" method="post">
    <div class="card shadow">
      <a href="./index.php?product=<?=$productid?>">
      <div id="card-top">


а во-вторых, и функция никакая не будет нужна, и вместо вызова функции надо будет сделать просто include этого файла.
Ответ написан
Ваш ответ на вопрос

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

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