Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Zeza me include.. -.-

[es] :: PHP :: PHP za početnike :: Zeza me include.. -.-

[ Pregleda: 2369 | Odgovora: 10 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

nnn
Tech Lead
Haxr.io
Beograd

Član broj: 16743
Poruke: 679
93.87.137.*



+87 Profil

icon Zeza me include.. -.-03.12.2009. u 11:47 - pre 131 meseci
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

 
Odgovor na temu

Nikola Poša
Backend (PHP) developer
Humanity d.o.o.
Beograd

Član broj: 173839
Poruke: 1616
*.adsl-3.sezampro.yu.

Sajt: www.nikolaposa.in.rs


+33 Profil

icon Re: Zeza me include.. -.-03.12.2009. u 16:28 - pre 131 meseci
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.
 
Odgovor na temu

Miroslav Ćurčić
ex mVeliki
Novi Sad

Član broj: 19034
Poruke: 1118
*.adsl.eunet.rs.



+19 Profil

icon Re: Zeza me include.. -.-03.12.2009. u 17:29 - pre 131 meseci
Na početku konstruktora stavi:
Code:
global $MyServerAdr, $MyPath, $MySqlHost, ...  sve koje definišeš u config-u


"The quieter you become, the more you are able to hear."
Blog | PowerCMS
 
Odgovor na temu

nnn
Tech Lead
Haxr.io
Beograd

Član broj: 16743
Poruke: 679
93.87.137.*



+87 Profil

icon Re: Zeza me include.. -.-03.12.2009. u 18:22 - pre 131 meseci
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.
 
Odgovor na temu

Nikola Poša
Backend (PHP) developer
Humanity d.o.o.
Beograd

Član broj: 173839
Poruke: 1616
*.adsl-3.sezampro.yu.

Sajt: www.nikolaposa.in.rs


+33 Profil

icon Re: Zeza me include.. -.-03.12.2009. u 20:08 - pre 131 meseci
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.
 
Odgovor na temu

nnn
Tech Lead
Haxr.io
Beograd

Član broj: 16743
Poruke: 679
93.86.88.*



+87 Profil

icon Re: Zeza me include.. -.-05.12.2009. u 12:17 - pre 131 meseci
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.
 
Odgovor na temu

Nikola Poša
Backend (PHP) developer
Humanity d.o.o.
Beograd

Član broj: 173839
Poruke: 1616
*.adsl-4.sezampro.yu.

Sajt: www.nikolaposa.in.rs


+33 Profil

icon Re: Zeza me include.. -.-05.12.2009. u 14:21 - pre 131 meseci
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.
 
Odgovor na temu

nnn
Tech Lead
Haxr.io
Beograd

Član broj: 16743
Poruke: 679
93.86.88.*



+87 Profil

icon Re: Zeza me include.. -.-05.12.2009. u 14:54 - pre 131 meseci
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
}
 
Odgovor na temu

maksvel

Član broj: 107376
Poruke: 2416

Jabber: maksvel
Sajt: maksvel.in.rs


+161 Profil

icon Re: Zeza me include.. -.-05.12.2009. u 15:01 - pre 131 meseci
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
 
Odgovor na temu

MilosDj
Milos Djuric
Belgrade

Član broj: 14174
Poruke: 307
93.86.155.*



+4 Profil

icon Re: Zeza me include.. -.-07.12.2009. u 18:08 - pre 131 meseci
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 :)
I'm not in this world to live up to your expectations and you're not in this world to live up to mine.
 
Odgovor na temu

Nemanja Avramović
Software architect
Tap medical
Beograd, Srbija

Moderator
Član broj: 32202
Poruke: 4382
93.87.255.*

Sajt: https://avramovic.info


+45 Profil

icon Re: Zeza me include.. -.-03.01.2010. u 16:55 - pre 130 meseci
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.
Laravel Srbija.

[NE PRUŽAM PODRŠKU ZA PHP PREKO PRIVATNIH PORUKA!]
 
Odgovor na temu

[es] :: PHP :: PHP za početnike :: Zeza me include.. -.-

[ Pregleda: 2369 | Odgovora: 10 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.