Да простят меня гуру програмирования за такой вопрос (может и за повторение), но очень нужно.... Выкладываю скрипты: index.php: PHP: <?php require_once "../kernel/init.php"; switch ($do) { case 'c': /* $refer_by_contact = 'http://autoprofi.ua/'; $t = 'Контакты: контактная форма'; $d = 'Отправить контактную информацию'; $k = ''; getContactForm($t, $d, $k); */ break; //case 'snd': // sendContact(); //break; default: show(); } function show() { global $smarty; $id = intval(getVar('i',1)); if ($id<1) { $oPg = new Pages_d(); $id = $oPg->getIdFirstPages_d(); } $oPg = new Pages_d($id); #$id = $oPg->GetInfoByDepart($id); $smarty->assign("title", $oPg->title); $smarty->assign("header", $oPg->header); $smarty->assign("description", $oPg->description); $smarty->assign("keywords", $oPg->keywords); $smarty->assign("keywords",$oPg->keywords); $smarty->assign('oPg', $oPg); $smarty->assign("content", $smarty->fetch($_SERVER['DOCUMENT_ROOT'].'/new/templates/_page_one.tpl') ); $smarty->display($_SERVER['DOCUMENT_ROOT'].'/new/templates/_depart.tpl'); } ?> init.php PHP: <?php $app_ = $_SERVER['DOCUMENT_ROOT'].'/'; require_once ("defines.php"); session_set_cookie_params(0, "/"); session_name(SESS_NAME); session_start(); header( 'Last-Modified: ' . gmdate( 'D, d M Y H:i:s' ) . ' GMT' ); header( 'Cache-Control: no-store, no-cache, must-revalidate' ); header( 'Cache-Control: post-check=0, pre-check=0', false ); header( 'Pragma: no-cache' ); require_once "common.func.php"; define("SQL_LAYER","mysql"); require_once "db/mysql.php"; $_MSG['db_connect_error'] = 'Cannot connect to DB'; $db = new sql_db(DB_HOST, DB_USER, DB_PASS, DB_NAME); if (!$db->db_connect_id) { FatalError($_MSG['db_connect_error']); } if (get_magic_quotes_gpc()) { $_POST = array_map('stripslashes_deep', $_POST); $_GET = array_map('stripslashes_deep', $_GET); $_COOKIE = array_map('stripslashes_deep', $_COOKIE); } $do = getVar("a"); require_once "smarty/Smarty.class.php"; $smarty = new Smarty(); $smarty->template_dir = $_SERVER['DOCUMENT_ROOT'].'/new/templates/'; $smarty->compile_dir = $_SERVER['DOCUMENT_ROOT'].'/new/templates_c/'; $smarty->debugging = false; $smarty->assign("msg", $_LANG); require_once "pages.class.php"; $Pd = new Pages_d(); $smarty->assign('MD1', $Pd->GetInfoByDepart(1)); $smarty->assign('MD2', $Pd->GetInfoByDepart(2)); $smarty->assign('MD3', $Pd->GetInfoByDepart(3)); $smarty->assign("prj_name", PRJ_NAME ); if (!headers_sent()) header("Last-Modified: " . gmdate("D, d M Y H:i:s", mktime(10, 0, 5, date("m"), date("d")-1, date("Y"))) . " GMT"); ?> pages.class.php PHP: <?php //global $id; class Pages_d { var $id; var $title; var $header; var $keywords; var $status; var $description; var $content; var $visible; function Pages_d($id = 0) { global $db; if ($id > 0) { $this->id= intval($id); switch(SQL_LAYER){ default: $sql = "SELECT id, title, header, content, status, description, keywords FROM ***** WHERE id = ".$this->id.";"; } $res = $db->sql_query($sql); $row = $db->sql_fetchrow($res); $this->id = $row[0]; $this->title = $row[1]; $this->header = $row[2]; $this->content = $row[3]; $this->status = $row[4]; $this->description = $row[5]; $this->keywords = $row[6]; unset($res, $row); } else{ $this->id = $this->status = 0; $this->keywords = $this->title = $this->header = $this->content = ''; } } ////////////////////// function getIdFirstPages_d() { global $db; switch (SQL_LAYER) { default: $sql = "SELECT id FROM ***** WHERE status='1' ORDER BY id LIMIT 1;"; } $rs = $db->sql_query($sql); $rw = $db->sql_fetchrow($rs); $id = intval($rw['id']); unset($rs, $rw); return $id; } ///////////////////////// function GetInfoByDepart($ord_id=0) { //global $id; $this->id= intval($id); global $db; $arr = array(); switch (SQL_LAYER) { default: $sql = "SELECT id,title FROM ism_depart WHERE ord_id=".intval($ord_id)." AND status='1' "; } $rs = $db->sql_query($sql); while ($rw = $db->sql_fetchrow($rs)) { $arr[] = array( 'id' =>$rw['id'], 'title' =>$rw['title'] //'header' =>$rw['header'] ); } unset($rw, $rs); return $arr; } } ?> Вопрос в том, что мне нужно на вход функции function GetInfoByDepart($ord_id=0) из pages.class.php подать $id текущей страницы и зделать по нему выборку sql. У меня пока идея сделать так: в pages.class.php обьявить глобальной переменной $id. БУдет ли это правильно и передастся ли значение? <?php //global $id;
Объявлять глобальную переменную надо не в начале скрипта, а в каждой функции, где собираетесь ее использовать.
Т.е. если я правильно поняла то, если обьявить global $id; в каждой из фуенкий, кот. используются:function GetInfoByDepart($ord_id=0), function Pages_d($id = 0), function show(), то я могу смнло ипользовать в этом выражении и передать значение из Смарти в обрабатывающие функции. Спасибо вам)))
И еще один вопрос, надеюсь последний по тем же скриптам: мне нужно текущие $id, кот. определяются по ссылке и в $_GET массиве отсортировать по параметру $ord_id и передать это все в функцию GetInfoByDepart (например $id=1, 2, 3, 10 и их $ord_id =1). Может у кого идеи как это все реализовать???
Marine сессии, геты и посты - суперглобальные массивы. значит их можно мучать в каждой функции без оглобаливания - они и так будут доступны. в принципе можно делать через них же.