Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: require_once
Forum PHP.pl > Forum > PHP
kliszaq
Problem jest nastepujacy: mam 2 pliki index.php, mysql.class.php, oraz settings.php. W pliku mysql.class.php mam klase do laczenia sie z baza danych oraz kilka innych funkcji:
[php:1:7a1c3f57aa]<?php
class mysql
{
var $strCon;
var $arrResult;
var $strerr;

function mysql()
{
require( 'settings.php' );
$this->strCon = @mysql_connect( $strDBHost, $strDBUser, $strDBPass ) or die( 'Brak połączenia z baza danych.' );
}

function sel_db( $strDBName )
{
$this->strerr = @mysql_select_db( $strDBName ) or die ( 'Baza danych nie istnieje.' );
return $this->strerr;
}

function shut_down()
{
mysql_close($this->strCon);
}
}
?>[/php:1:7a1c3f57aa]

w pliku settings mam dane $strDBHost, $strDBName, $strDBUser, $strDBPass
natomiast w pliku index.php mam wywolanie klasy z polaczeniem

Jesli daje w pliku index require_once( 'settings.php' );, to nie laczy mi z baza, bo zmienna nie jest przekazana do klasy, natomiast jesli daje w klasie require_once(); to w pliku inexowym jak wpisze $objCon->sel_db( $strDBName ); to nie widzi nazwy bazy danych...
Chce to zrobic za pomoca require_once (a propos THOT'a).
Jakies propozycje?
adwol
Cytat
Jesli daje w pliku index require_once( 'settings.php' );, to nie laczy mi z baza, bo zmienna nie jest przekazana do klasy, natomiast jesli daje w klasie require_once(); to w pliku inexowym jak wpisze $objCon->sel_db( $strDBName ); to nie widzi nazwy bazy danych...

Pokaż plik z wywołaniem
[php:1:c4aaa466d3]<?php
$objCon->sel_db($strDBName);
?>[/php:1:c4aaa466d3]
Ono jest w jakiejś funkcji czy w głównym bloku?
require_once wciąga plik w aktualnym zasięgu, więc jeśli robisz to w zasięgu globalnym to tam powinne być te zmienne, a jeśli w jakiejś funkcji to pewnie trzeba odwołać się do zmiennej globalnej.
kliszaq
wiec powinienem zrobic tak?
[php:1:87d98349c0]<?php
require_once('mysql.class.php');
//tegowczesniej nie bylo co ponizej:
require_once('settings.php');

/to juz bylo
$objCon = new mysql();
$objCon->sel_db( $strDBName );
$objCon->shut_down();
?>[/php:1:87d98349c0]
kliszaq
okej juz dziala, ale mam pytanie
po co uzywamy tak w ogole reqiure_once, a nie zwyklego require?
i jak mozna z zasiegu klasy (w jakiejs funkcji) uzywajac require_once lub tez require przekazac zmienne poza klase? I czy to jest w ogole mozliwe?
adwol
Cytat
wiec powinienem zrobic tak?

Tak.
Po poprawnym połączeniu się z bazą możesz na wszelki wypadek usunąć unset-em zmienne $strDB*, żeby potem Ci gdzieś przez przypadek nie ,,wyciekły''.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.