[ nnn @ 03.12.2009. 11:47 ] @
Imam fajl config.php
Code:

<?php
$MyServerAdr = "localhost";
$MyPath= "C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\Evident";

$MySqlHost = "localhost";
$MySqlUser = "root";
$MySqlPass = "****";
$MySqlDb = "evident_post";
?>


u fajlu dbclass.php imam sledece:

Code:


class MyDb
{
    
    var $MyHost; //host za bazu
    var $MyUser; //Korisnicko ime
    var $MyPass; //Lozinka
    var $MyDbName; //Ime baze sa kojom radimo
    var $con; //nasa konekcija
    
    function __construct() //konstruktor klase
        {
            include '/config.php';
            $this->MyHost= $MySqlHost;
            $this->MyUser= $MySqlUser;
            $this->MyPass= $MySqlPass;
            $this->MyDbName= $MySqlDb;    
            
        }
.....
.....



Klasa dalje ima funkcije connect, query itd..
Ono sto mi pravi problem je sto nece da cita vrednosti promenjivih iz config.php. Kada stavim na pocetku fajla include cita ih, samo do klase ali ne unutar nje.. Sad ono sto me buni je sto na primer u drugom fajlu test:

Code:

<?php
include '/config.php';
echo $MyServerAdr;
?>


Radi sasvim lepo.. Pokusavao sam razne kombinacije, sa "" sa / bez nje, direktnu putanju, da stavim gore include itd.. Ako neko zna u cemu je problem, molim vas, sinoc sam do 5 ujutru ostao pokusavajuci ovo da resim. Samo da napomenem da klasa MyDb radi lepo kada joj u konstruktoru navedem direkno vrednosti npr: $this->MyHost="localhost"; Tako da znam da nije greska u klasi. A hteo bi da mi sve ide preko config fajla posto cu kasnije imati mnogo vise opcija tamo, pa bi bilo mnogo elegantnije da je sve na jednom mestu..

Hvala

[ Nikola Poša @ 03.12.2009. 16:28 ] @
Probaj da preimenuješ taj fajl config.php, u bilo koji drugi naziv. Imao sam jednom sličan problem, jer čini mi da se već negde u sistemu (mislim na server, itd.) postoji taj neki config.php fajl, pa valjda PHP uvek prvo include-uje njega.
[ Miroslav Ćurčić @ 03.12.2009. 17:29 ] @
Na početku konstruktora stavi:
Code:
global $MyServerAdr, $MyPath, $MySqlHost, ...  sve koje definišeš u config-u

[ nnn @ 03.12.2009. 18:22 ] @
Prvo da se zahvalim obojici na pomoci.

Probao sam obe stvari,ali i dalje nece. Stavio sam privremeno da bi mogao da nastavim sa radom direktno u konstruktoru vrednosti i to radi, cela klasa normalno radi, ali me nervira to sto nesto tako banalno ne radi. A u milion primera sam video da ljudi tako prave. A i trebace mi jos dosta config vrednosti i bas bi voleo da ih imam sve u jednom fajlu.
[ Nikola Poša @ 03.12.2009. 20:08 ] @
Inače, obično se parametri u konfiguracionim fajlovima definišu kao konstante, pa tako, u tvom primeru, sadržaj u tom fajlu bi trebao da izgleda ovako:
Code:

define('MY_SERVER_ADR', "localhost");
define('MY_PATH', "C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\Evident");

define('MY_SQL_HOST', "localhost");
define('MY_SQL_USER', "root");
define('MY_SQL_PASS', "");
define('MY_SQL_DB', "evident_post");

I onda u kodu dohvataš neku vrednost iz fajla samo tako što pozoveš neku od tih konstanti, npr. $this->MyHost = MY_SQL_HOST.
[ nnn @ 05.12.2009. 12:17 ] @
Inače, obično se parametri u konfiguracionim fajlovima definišu kao konstante, pa tako, u tvom primeru, sadržaj u tom fajlu bi trebao da izgleda ovako:
Code:

define('MY_SERVER_ADR', "localhost");
define('MY_PATH', "C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\Evident");

define('MY_SQL_HOST', "localhost");
define('MY_SQL_USER', "root");
define('MY_SQL_PASS', "");
define('MY_SQL_DB', "evident_post");

I onda u kodu dohvataš neku vrednost iz fajla samo tako što pozoveš neku od tih konstanti, npr. $this->MyHost = MY_SQL_HOST.[/quote][quote]Nikola Poša

Hvala puno. Radi ovako, hvala jos jednom.. Samo mi nije jasno zasto nije htelo onako da radi, ali nema veze.
[ Nikola Poša @ 05.12.2009. 14:21 ] @
Pa moguće je da je razlog to što si taj include stavio unutar definicije klase, u konstruktoru. Eto probaj sad recimo da opet ideš sa promenljivama u tom config fajlu, a onda probaj da ga include-uješ pre početka definicije klase (pre "class"), i odma' ispod include-a stavi i global $MyServerAdr, $MyPath, $MySqlHost;, itd.

btw Malo si se prešao sa citiranjem poruke, citirao si svoju poruku umesto moje.
[ nnn @ 05.12.2009. 14:54 ] @
xD hahahahah

Ma probao sam to, prvo sam tako uradio, pa sam onda negde video da se poziva unutar klase, pa require pa ovo ono.. Nema veze radi.. Testirao sam malo u drugom fajlu. Na primer, uradim

include "test.php"

echo $neka promenjiva iz testa //ovo radi

function funkcija()
{
echo $neka promenjiva iz testa // Ovo ne radi
}
[ maksvel @ 05.12.2009. 15:01 ] @
Nisam PHP programer, ali mogu da pogledam
Koliko sam video na netu, problem nastaje ako u klasi uključiš fajl sa nastavkom php. Stavi config.inc i probaj onda...
BTW, ovo je neko čak prijavio kao bug:http://69.147.83.196/bug.php?id=27569&edit=1
..ali je demantovan
[ MilosDj @ 07.12.2009. 18:08 ] @
Citat:
nnn: xD hahahahah
include "test.php"
echo $neka promenjiva iz testa //ovo radi

function funkcija()
{
echo $neka promenjiva iz testa // Ovo ne radi
}
I to je sasvim ok sto nece da radi jer funkcija ima svoje polje rada, vidokrug, scope promenjivih. Moras da joj das global $neka_prom ili da joj to posaljes kao parametar :)

Imas zanimljiv problem. Ja koristim require('connection.php'); sa sve promenjivima umesto define i sve mi radi. Do duse, ja ne radin require u __construct() nego u connect() metodu.
Jeste da si resio problem, ali ako hoces i dalje da testiras probaj sledece:

1. Probaj da stavis 'config.php' u zagrade. include/require('config1.php'); kao sto bog zapoveda, uz mali rename ;)

2. Da li je taj config.php file snimljen kao utf8 -BOM? Mozda BOM pravi problem? Takodje proveri da nemas koji whitespace pre i posle <?PHP ?> u config.php


Javi rezultate :)
[ Nemanja Avramović @ 03.01.2010. 16:55 ] @
Citat:
maksvel
Koliko sam video na netu, problem nastaje ako u klasi uključiš fajl sa nastavkom php. Stavi config.inc i probaj onda...


Malo kasnim, ali važno je napomenuti da se ovako NIKAD ne radi zato što većina servera nije podešena da procesira PHP kodove u .inc fajlovima, tako da ako neko ukuca u browser www.sajt.com/config.inc - videće izvorni kod tog fajla, odnosno sve MySQL parametre (kor. ime i šifru) kao i sve ostalo što verovatno ne bi trebalo da vidi.