У меня есть несколько файлов, которые включает в себя следующим образом:PHP Error с константами
index.php
require("database.php");
require("header.php");
require("template.php");
require("footer.php");
database.php
require("constants.php");
class connect{
public function connect(){
mysql_connect(LOCALHOST,USER,PASS);
}
}
constants.php
define('LOCALHOST','localhost');
define("USER","username");
define("PASS","password");
define("PRICE1","10.00");
define("PRICE2","11.00");
define("PRICE3","12.00");
define("PRICE4","13.00");
template.php
*html code*
*ajax code*
*ajax output*
** это Аякс нагрузка, которая выдает ошибку load.php (Аякс ГЕТ)
require(database.php);
then html code
, который выдает ошибку:
Notice: Use of undefined constant PRICE1 - assumed 'PRICE1' in web/site/files/template.php on line 34
кто получил какой-либо sugestions, как я застрял относительно того, почему константа не была вызвана, как я ее определил
Позвольте мне уточнить вопрос:
Константы включены в базу данных.php, которые database.php использует константы для подключения, а также отлично работает. Когда в файл template.php требуется database.php, отображается ошибка. Вопрос почему не проходя через константы, когда константы работают на database.php
Если я запускаю load.php сообщение об ошибке там еще , но я снова запустить базу данных в там, который работает, но ни одна из констант не может быть вызвана из load.php
Смотреть полный код load.php:
<?php
ini_set('display_errors', 'On');
error_reporting(E_ALL);
if(isset($_GET['label']) && $_GET['type'] == "yes" && $_GET['dif'] == "label"){
try{
require_once("../classes/database.php");
$db = new MySQL();
$connection = $db->connect();
$sql = "SELECT * FROM `label` WHERE id=?";
$result = $db->prepare($sql,array($_GET['label']),$connection);
if(!$result){
throw new Exception("Error: ");
}
$number = $result['personalisedlines'];
for($i=0;$i<$number;$i++){
echo "<label>Line ".($i+1)."</label>\n\r<br />\n\r";
echo "<input type='hidden' name='label_price' value='".PRICE1."' />";
echo "<input type='text' name='field".$i."' />\n\r<br />\n\r";
}
} catch(Exception $e){
throw $e;
}
}
if($_GET['type'] == "yes" && $_GET['dif'] == "engraving"){
echo "<br />\n\r<label>Engraved Message</label>\n\r<br />\n\r";
echo "<input type='hidden' name='engraving_price' value='".PRICE2."' />";
echo "<textarea cols='30' rows='10' name='personalisedbox' row='10'></textarea>\n\r<br />\n\r";
}
if($_GET['type'] == "yes" && $_GET['dif'] == "printed"){
echo "<br />\n\r<label>Printed Message</label>\n\r<br />\n\r";
echo "<input type='hidden' name='printed_price' value='".PRICE3."' />";
echo "<textarea cols='30' rows='10' name='personalisedbox' row='10'></textarea>\n\r<br />\n\r";
}
if($_GET['type'] == "yes" && $_GET['dif'] == "flutes"){
echo "<br />\n\r<label>Engraved Message</label>\n\r<br />\n\r";
echo "<input type='hidden' name='engraving_price' value='".PRICE4."' />";
echo "<textarea cols='30' rows='10' name='personalisedflutes' row='10'></textarea>\n\r<br />\n\r";
}
?>
Вы работаете с 'namespace's? У вас есть ключевое слово 'use' где-то? Являются ли 'define' заданы или называются внутри класса или функции? –
нет они включены для использования database.php, но не отредактированы или изменены, в любом случае эти четыре константы не используются в database.php, также нет пространства имен или использования нигде в моем коде –
Какая часть сообщения об ошибке конкретно вы не поняли? Я имею в виду, что это довольно ясно, не так ли?Константа с именем 'PRICE1' не определена (вместо этого PHP будет использовать строку' 'PRICE1" '). Что вы хотите спросить о * специально *? И ** нет **, * вы ** не ** определили его [константа] *. См. Сообщение об ошибке, он сообщает вам, что вы ** не определили его **. PHP не лжет вам, слишком глупо лгать. – hakre