Autor Zpráva
glararan
Profil *
Zdravím.

Mám menší problém

Mám 4 soubory
A - index.php
B - config.php - configs/config.php
C - function.php - function/functions.php
D - news.php - pages/news.php
E - controller.php

v A jsou includováný všechny body až na D, v bodě C není includován bod B a přesto tam využívá deklaraci z bodu B, bod E includuje bod D, kde se používá funkce z bodu C a v bodu D není opět includován bod C.

jak se dá udělat, abych includoval 1x a mohl v bodě A kde jsou includovany BCE mohl u náhodných bodu využít proměné z jiného bodu, který tam je includován.
Nox
Profil
include_once / require_once
Rellik
Profil
Pokud to všechno includuješ do A, tak je to jako by z toho byl jeden velký soubor a je jedno že proměnnou XX máš jen v B a používáš ji i v D

prostě se z toho vytvoří soubor ABCDE a pokud tam přidáš třeba ještě F tak to pořád bude jakoby jeden soubor ABCDEF. V tom případě jsou společné i všechny funkce a proměnné... Jen pokud budeš volat proměnnou YX v bodě B a ta proměnná bude až v bodě E tak je jasné že to nepůjde... ;-)

Jinak ten dotaz sem nějak moc nepochopil, tak pokud potřebuješ něco jiného vyřešit, musíš líp položit otázku... :)
glararan
Profil *
právě include_once na config používám, ale neustále mi hází error na ty proměné, když tam dám místo proměný obsah proměné "obsah proměne" tak to je bez erroru...
Tori
Profil
glararan:
include_once na config používám, ale neustále mi hází error na ty proměné
Jakou chybu přesně?
glararan
Profil *
Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in /data/web/virtuals/8403/virtual/www/subdom/kultiras/functions/basic.php on line 13

Warning: mysql_close() expects parameter 1 to be resource, null given in /data/web/virtuals/8403/virtual/www/subdom/kultiras/functions/basic.php on line 17


1) Vypisování novinky:
function viewnews($limit)
{
	if(!$con)
	{
		echo mysql_error();
	}
	mysql_select_db($db_realm);
	$query = mysql_query("SELECT * FROM News ORDER BY id DESC LIMIT $limit");
	while($result = mysql_fetch_array($query))
	{
		echo '<div class="news"><div class="news_title><div><div class="news_top"><ul><li class="icon"><img src="'.$result['icon'].'" alt="news-icon" border="0"></li><li class="entry"><h2><a href="./">'.$result['title'].'</a></h2><span class="user">'.$result['author'].'</span><span class="posted-date">'.$result['date'].'</span></li><li class="date"><span><strong>'.$result['date'].'</strong></span></li></ul></div></div></div><div class="news_container"><blockquote><dl><dd><ul><li><div class="letter_box0"></div><div class="blog-post">'.$result['message'].'</div></li></ul></dd></dl></blockquote></div></div>';
	}
	mysql_close($con);
}


Config.php
$db_realm = "kultiras_realm";


2) Ukončení spojení:
Functions.php
mysql_close($con);

Config.php
$con = mysql_connect($host, $user, $pass, $port);



U jiných funkcí funguje...
Tori
Profil
Ad „mysql_close($con);“ ve funkci viewnews - používáte globální proměnnou uvnitř funkce, to není chyba includování. Jinak pokud nepoužíváte paralelně několik db připojení ani funkci mysql_pconnect(), tak můžete a) volat mysql_close bez parametru - použije se poslední otevřené spojení, nebo b) nepoužívat mysql_close vůbec - db.spojení se odpojí automaticky při ukončení běhu skriptu.

Ad „mysql_select_db($db_realm);“ ve funkci viewnews - globální proměnná není uvnitř funkce přístupná. Používáte zároveň několik databází, že voláte tu fci až tady místo tam, kde mysql_connect?
glararan
Profil *
Momentálně používám jen jednu, ale pak budu používat více. Connectuju jen na jeden server, takže dám bez vnitřku.Takže do té funkce budu muset includovat config jestli tomu rozumím.
glararan
Profil *
Ještě dopíší, že, když používám mysql_select_db za connectem v configu tak pak ve funkci neví, která db je zvolena...
Tori
Profil
glararan:
Takže do té funkce budu muset includovat config
Spíš zpřístupnit globální proměnnou uvnitř funkce: global $db_realm;
(Subjektivní názor: všechna nastavení bych spíš dala do jednoho strukturovaného pole, pak je myslím míň pravděpodobné, že si člověk některou z x proměnných omylem přepíše.)
Další možnost je napsat si funkci, která bude mít přístup k přihl.údajům a přepínání databází (+připojení k db serveru) obstará za vás. Anebo použít nějakou databázovou vrstvu, která to už má vyřešené.
glararan
Profil *
Ještě, než si to napsal jsem si tam udělal ten global a fakčí to.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0