PDA

Bekijk Volledige Versie : probleem met includen en databases



Netfreaky
31/07/03, 13:58
hallo,

'k zit met volgend probleemke:

in een pagina (template.php) heb'k volgende functie staan, om
eenvoudig bestanden te kunnen includen:

<functie>
function include_bestand ($bestand)
{
if (file_exists(get_absolute_includedir(). $bestand))
{ include(get_absolute_includedir(). $bestand); }
else
{ print("fout: <br> <b>Onmogelijk bestand " . $bestand . " te
includen op locatie " . get_absolute_includedir() . $bestand . "</b>
<br>");
};
}
</functie>

daarmee roep'k dan de includes op (om niet telkens die controle te
moeten typen).
Zo include ik ook 'n bestand met daarin de info over databases, oa:

$connect_db_pages = mysql_connect('localhost', 'user', 'pas');

if (!mysql_select_db('pages',$connect_db_pages))
{ print (htmlspecialchars("\n\n" . "DATABASEFOUT:" . "\n" . "Gelieve
contact op te nemen met de webmaster (webmaster@netfreaky.be) en
volgende fout te melden, aub: " . "\n") . "<b>Database pages is
onbereikbaar.</b> <br>"); }

Dit geeft kennelijk geen fouten.

maar als 'k dan 'n ander bestand include met daarin bvb

$query = "SELECT * from algemeen_metatags_http_equiv";

$result = mysql_query($query, $connect_db_site) or die
(get_foutmelding_database($query). "<b>Onmogelijk query op tabel
algemeen_metatags_http_equiv (voor metatags) uit te voeren.</b>
<br>");

while (list($id, $soort, $content) = mysql_fetch_row($result))
{ print("..."); }

en hier toont hij de fout die bij de mysql_query gespecifieerd
wordt...

de html-code via die geinclude bestanden wordt wel goed getoond.

nu komt het rare: indien ik geen gebruik maak van die
include_bestand-functie (maar heel dat controle-systeem gewoon typ),
dan lukt wel alles...

heeft er iemand 'n idee waaraan dit zou kunnen liggen?


--
mvg, Netfreaky

Daniel Tryba
31/07/03, 13:59
Netfreaky <usenet2.netfreaky@pandora.belgium.invalid> wrote:
> Zo include ik ook 'n bestand met daarin de info over databases, oa:
>
> $connect_db_pages = mysql_connect('localhost', 'user', 'pas');
^^^^^
>
> if (!mysql_select_db('pages',$connect_db_pages))
^^^^^
[knip]
> Dit geeft kennelijk geen fouten.
>
> maar als 'k dan 'n ander bestand include met daarin bvb
>
> $query = "SELECT * from algemeen_metatags_http_equiv";
>
> $result = mysql_query($query, $connect_db_site) or die
^^^^
[knip]
> en hier toont hij de fout die bij de mysql_query gespecifieerd
> wordt...

Er staan immers ander variabelen.

--

Daniel Tryba

Netfreaky
31/07/03, 13:59
Daniel Tryba schreef op wo 30 jul 2003 10:37:27p:

>> Zo include ik ook 'n bestand met daarin de info over databases,
>> oa:
>>
>> $connect_db_pages = mysql_connect('localhost', 'user', 'pas');
> ^^^^^
>>
>> if (!mysql_select_db('pages',$connect_db_pages))
> ^^^^^
> [knip]
>> Dit geeft kennelijk geen fouten.
>>
>> maar als 'k dan 'n ander bestand include met daarin bvb
>>
>> $query = "SELECT * from algemeen_metatags_http_equiv";
>>
>> $result = mysql_query($query, $connect_db_site) or die
> ^^^^
> [knip]
>> en hier toont hij de fout die bij de mysql_query gespecifieerd
>> wordt...
>
> Er staan immers ander variabelen.

sorry, idd, maar heb dit voor 3 databases (pages, site & stats), en
heb er maar voor eentje uitgeknipt, helaas bij't eerste de
verkeerde...

het staat er ook bij 't eerste ook
$connect_db_site = mysql_connect('localhost', 'user', 'pas');
if (!mysql_select_db('site',$connect_db_site)) ...

mijn excuses en bedankt :-)

--
mvg, Netfreaky

Netfreaky
31/07/03, 13:59
'k denk da'k weet waaraan dit zou kunnen liggen:
als'k gewoon include, worden de variabelen die daarin gedeclareerd
worden doorgegeven aan de eigenlijke pagina,
maar als da via 'n functie gaat, kan't zijn dat hij die variabelen niet
wil doorgeven?

nu doe'k in die funtie

include(get_absolute_includedir(). $bestand);

waardoor eigenlijk alles in die functie geincluded wordt, maar niet op
de plaats zelf... (return include(...); geeft 't zelfde probleem)

html-code komt er wel door, maar de variabelen niet... via 'n if(isset
($connect_db_pages)) zie'k dat die variabele er niet doorkomt...

dus probleem is om te vormen naar 't volgende: hoe kannek functies
gedeclareerd binnen die functie bereikbaar maken erbuiten?

(ondertussen heb'k al geprobeerd $connect_db_pages global te zetten,
maar dit helpt ook niet)

--
mvg, Netfreaky

Daniel Tryba
31/07/03, 13:59
Netfreaky <usenet2.netfreaky@pandora.belgium.invalid> wrote:
> dus probleem is om te vormen naar 't volgende: hoe kannek functies
> gedeclareerd binnen die functie bereikbaar maken erbuiten?

AFAIK niet.

Classes omzeilen dit probleem min of meer...

--

Daniel Tryba

Netfreaky
31/07/03, 13:59
Daniel Tryba schreef op do 31 jul 2003 09:29:12a:

>> dus probleem is om te vormen naar 't volgende: hoe kannek functies
>> gedeclareerd binnen die functie bereikbaar maken erbuiten?
>
> AFAIK niet.
>
> Classes omzeilen dit probleem min of meer...

thx, 'k denk da'k die functie dan maar terug zal wissen, en telkens
opnieuw die controle copy-paste-adapten ;-)

ofwel da'k die functie zou moeten aanpassen, maar 'k zou niet direct
weten hoe ;-)


bedankt voor de moeite :-)


--
mvg, Netfreaky

Daniel Tryba
31/07/03, 23:15
Netfreaky <usenet2.netfreaky@pandora.belgium.invalid> wrote:
> ofwel da'k die functie zou moeten aanpassen, maar 'k zou niet direct
> weten hoe ;-)

De problemen die je hier hebt zijn IMHO symptomen van een slecht
ontworpen structuur. Als je moet controleren of een include file waar
ogenschijnlijk belangrijke dingen als database connecties in worden
geregeld, dan ben je goed fout bezich. Of die file staat daar of die
staat er niet en dan wil je een verdere executie van je script voorkomen
(dus require ipv include).

--

Daniel Tryba