PDA

View Full Version : مشکل در استفاده از تابع include_once



عقاب سیاه
پنج شنبه 14 اردیبهشت 1391, 17:52 عصر
درود من در کد زیر:


<?php
if(!defined($security)){
header($_SERVER["SERVER_PROTOCOL"]." 404 Not Found");
die();
}

class connection{
//Set The All Value
public static $resource;
public $affacted;
public $fetch;
public $whiles;
public $count;
public $numeric;

public function __construct(){
include_once("../server.php");
self::$resource = @mysql_connect($pay_server,$pay_username,$pay_dbpa ss);
@mysql_select_db($pay_dbname,self::$resource);
if(!self::$resource){
header($_SERVER["SERVER_PROTOCOL"]." 404 Not Found");
die();
}
@mysql_query("SET character_set_results = 'utf8', character_set_client = 'utf8', character_set_connection = 'utf8', character_set_database = 'utf8', character_set_server = 'utf8'",self::$resource);
}

//Fetch data
public function fetch_data($column,$table,$condition = '1 = 1'){
@mysql_query("LOCK TABLES $table READ",self::$resource);
$query = "SELECT $column FROM $table WHERE $condition";
$this->fetch = @mysql_fetch_array(@mysql_query($query,self::$reso urce));
@mysql_query("UNLOCK TABLES",self::$resource);
}

//While resource
public function while_resource($column,$table,$lock_tables,$condit ion = '1 = 1'){
mysql_query("LOCK TABLES $lock_tables READ",self::$resource);
$query = "SELECT $column FROM $table WHERE $condition";
$this->whiles = mysql_query($query,self::$resource);
@mysql_query("UNLOCK TABLES",self::$resource);
}

//Affacted
public function update_delete_insert($table,$col_val,$type,$condit ion = '1 = 1',$col_insert = ''){
@mysql_query("LOCK TABLES $table WRITE",self::$resource);
switch($type){
case 'update':
$query = "UPDATE $table SET $col_val WHERE $condition";
@mysql_query($query,self::$resource);
$this->affacted = @mysql_affected_rows(self::$resource);
break;
case 'delete':
$query = "DELETE FROM $table WHERE $condition";
@mysql_query($query,self::$resource);
$this->affacted = @mysql_affected_rows(self::$resource);
break;
case 'insert':
$query = "INSERT INTO $table $col_insert VALUES($col_val)";
@mysql_query($query,self::$resource);
$this->numeric = @mysql_insert_id(self::$resource);
$this->affacted = @mysql_affected_rows(self::$resource);
break;
}
@mysql_query("UNLOCK TABLES",self::$resource);
}

//Count row
public function num_rows($column,$table,$condition = '1 = 1'){
@mysql_query("LOCK TABLES $table READ",self::$resource);
$query = "SELECT $column FROM $table WHERE $condition";
$this->count = @mysql_num_rows(@mysql_query($query,self::$resourc e));
@mysql_query("UNLOCK TABLES",self::$resource);
}
}
?>

در این قسمتش:

public function __construct(){
include_once("../server.php");
self::$resource = @mysql_connect($pay_server,$pay_username,$pay_dbpa ss);
@mysql_select_db($pay_dbname,self::$resource);
if(!self::$resource){
header($_SERVER["SERVER_PROTOCOL"]." 404 Not Found");
die();
}
@mysql_query("SET character_set_results = 'utf8', character_set_client = 'utf8', character_set_connection = 'utf8', character_set_database = 'utf8', character_set_server = 'utf8'",self::$resource);
}

وقتی بجای متغییر های $pay_server و ... که در فایل server.php قرار دارند استفاده می کنم کد کار نمی کنه یعنی مقادیر جایگزین نمیشن ولی اگه بجای متغییر ها مقدار ها را مستقیم پر کنم درست میشه

حالا دوستان علتش چیه؟

MMSHFE
پنج شنبه 14 اردیبهشت 1391, 18:04 عصر
دوست عزیز، اگه اون متغیرها رو توی فایل server.php بصورت سراسری (خارج از توابع) تعریف کردین، داخل سازنده کلاس، بعد از include_once این دستور رو بنویسید:

global $pay_server, $pay_username, $pay_dbpass, $pay_dbname;
تا بتونید به متغیرهای سراسری دسترسی پیدا کنید.
موفق باشید.