2013-06-06 2 views
0

У меня есть несколько файлов, которые включает в себя следующим образом: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"; 
} 

?> 
+3

Вы работаете с 'namespace's? У вас есть ключевое слово 'use' где-то? Являются ли 'define' заданы или называются внутри класса или функции? –

+0

нет они включены для использования database.php, но не отредактированы или изменены, в любом случае эти четыре константы не используются в database.php, также нет пространства имен или использования нигде в моем коде –

+0

Какая часть сообщения об ошибке конкретно вы не поняли? Я имею в виду, что это довольно ясно, не так ли?Константа с именем 'PRICE1' не определена (вместо этого PHP будет использовать строку' 'PRICE1" '). Что вы хотите спросить о * специально *? И ** нет **, * вы ** не ** определили его [константа] *. См. Сообщение об ошибке, он сообщает вам, что вы ** не определили его **. PHP не лжет вам, слишком глупо лгать. – hakre

ответ

1

Я еще не знаю, почему требование не улавливается, с правильным объемом. Может быть, способ, которым вы вкладываете вещи в свой вопрос, не совсем в том же порядке, что и в вашей ситуации? Пожалуйста, покажите еще код.

Но что вы можете сделать, это:

Изменения require в require_once ...

Теперь поместите копировать/вставить require_once() строки в каждый файл PHP, где вы хотите использовать константы. PHP будет убедиться, что требование выполняется только один раз, поэтому вы не получите никаких ошибок в переопределении констант.

+0

Я отредактировал код выше, так как это вывод кода ajax, где код имеет только один требуемый файл (который я изменил на require_once(), чтобы убедиться, и это - database.php, который имеет Константы.php включены –

0

Включите constants.php в templates.php.

+0

Зачем это помогло? 'constants.php' требуется внутри' database.php' уже –

+0

именно он включен в database.php, почему он не передает константы через? –

Смежные вопросы