За последние 24 часа нас посетили 17803 программиста и 1608 роботов. Сейчас ищут 1404 программиста ...

Передать переменную с одной функции в другую

Тема в разделе "PHP для новичков", создана пользователем Marine, 9 ноя 2010.

  1. Marine

    Marine Активный пользователь

    С нами с:
    20 июн 2010
    Сообщения:
    9
    Симпатии:
    0
    Да простят меня гуру програмирования за такой вопрос (может и за повторение), но очень нужно....
    Выкладываю скрипты:

    index.php:
    PHP:
    1.  
    2. <?php
    3. require_once "../kernel/init.php";
    4.  
    5. switch ($do)
    6. {
    7.     case 'c':
    8.          /* $refer_by_contact = 'http://autoprofi.ua/';
    9.         $t = 'Контакты: контактная форма';
    10.         $d =  'Отправить контактную информацию'; $k = '';
    11.         getContactForm($t, $d, $k); */
    12.         break;
    13.     //case 'snd':
    14.     //  sendContact();
    15.         //break;
    16.  
    17.     default:
    18.         show();
    19. }
    20.  
    21.  
    22. function show()
    23. {
    24.     global $smarty;
    25.         $id = intval(getVar('i',1));
    26.         if ($id<1)
    27.     {
    28.         $oPg = new Pages_d();
    29.         $id = $oPg->getIdFirstPages_d();
    30.     }
    31.  
    32.     $oPg = new Pages_d($id);
    33.     #$id    = $oPg->GetInfoByDepart($id);
    34.     $smarty->assign("title",        $oPg->title);
    35.     $smarty->assign("header",       $oPg->header);
    36.     $smarty->assign("description",  $oPg->description);
    37.     $smarty->assign("keywords",     $oPg->keywords);
    38.     $smarty->assign("keywords",$oPg->keywords);
    39.  
    40.  
    41.  
    42.     $smarty->assign('oPg', $oPg);
    43.     $smarty->assign("content",      $smarty->fetch($_SERVER['DOCUMENT_ROOT'].'/new/templates/_page_one.tpl') );
    44.  
    45.     $smarty->display($_SERVER['DOCUMENT_ROOT'].'/new/templates/_depart.tpl');
    46.  
    47.  
    48. }
    49.  
    50. ?>
    51.  
    init.php
    PHP:
    1.  
    2. <?php
    3.  
    4.  $app_ = $_SERVER['DOCUMENT_ROOT'].'/';
    5.  
    6.  
    7.  
    8.  require_once ("defines.php");
    9.  
    10.  
    11.  
    12.  
    13.  session_name(SESS_NAME);
    14.  
    15. header( 'Last-Modified: ' . gmdate( 'D, d M Y H:i:s' ) . ' GMT' );
    16. header( 'Cache-Control: no-store, no-cache, must-revalidate' );
    17. header( 'Cache-Control: post-check=0, pre-check=0', false );
    18. header( 'Pragma: no-cache' );
    19.  
    20.  
    21.  require_once "common.func.php";
    22.  
    23.  
    24.  define("SQL_LAYER","mysql");
    25.  require_once "db/mysql.php";
    26.  $_MSG['db_connect_error']  = 'Cannot  connect to DB';
    27.  
    28.  $db                        = new sql_db(DB_HOST, DB_USER, DB_PASS, DB_NAME);
    29.  if (!$db->db_connect_id)
    30.  {
    31.     FatalError($_MSG['db_connect_error']);
    32.  }
    33.  
    34.  
    35.  {
    36.    $_POST                   = array_map('stripslashes_deep', $_POST);
    37.    $_GET                    = array_map('stripslashes_deep', $_GET);
    38.    $_COOKIE                 = array_map('stripslashes_deep', $_COOKIE);
    39.  }
    40.  
    41.  $do = getVar("a");
    42.  
    43.  
    44.  
    45.  require_once "smarty/Smarty.class.php";
    46.  $smarty                    = new Smarty();
    47.  $smarty->template_dir      = $_SERVER['DOCUMENT_ROOT'].'/new/templates/';
    48.  $smarty->compile_dir       = $_SERVER['DOCUMENT_ROOT'].'/new/templates_c/';
    49.  $smarty->debugging         = false;
    50.  
    51.  $smarty->assign("msg",     $_LANG);
    52.  
    53.  
    54.  require_once "pages.class.php";
    55.  
    56. $Pd = new Pages_d();
    57. $smarty->assign('MD1',          $Pd->GetInfoByDepart(1));
    58. $smarty->assign('MD2',          $Pd->GetInfoByDepart(2));
    59. $smarty->assign('MD3',          $Pd->GetInfoByDepart(3));
    60.  
    61.  
    62.  
    63.  
    64. $smarty->assign("prj_name", PRJ_NAME );
    65.  
    66.  
    67. 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");
    68.  
    69. ?>
    70.  
    pages.class.php
    PHP:
    1.  
    2. <?php
    3. //global $id;
    4.  
    5.  
    6.    
    7.     class Pages_d
    8. {
    9.     var $id;
    10.     var $title;
    11.     var $header;
    12.     var $keywords;
    13.     var $status;
    14.     var $description;
    15.     var $content;
    16.     var $visible;
    17.  
    18.  
    19.     function Pages_d($id = 0)
    20.     {
    21.         global $db;
    22.        
    23.         if ($id > 0)
    24.         {
    25.             $this->id= intval($id);
    26.  
    27.             switch(SQL_LAYER){
    28.                 default:
    29.                     $sql            = "SELECT id, title, header, content, status, description, keywords
    30.                                         FROM *****
    31.                                         WHERE id = ".$this->id.";";
    32.             }
    33.  
    34.             $res                    = $db->sql_query($sql);
    35.             $row                    = $db->sql_fetchrow($res);
    36.  
    37.             $this->id               = $row[0];
    38.             $this->title            = $row[1];
    39.             $this->header           = $row[2];
    40.             $this->content          = $row[3];
    41.             $this->status           = $row[4];
    42.             $this->description      = $row[5];
    43.             $this->keywords         = $row[6];
    44.            
    45.                         unset($res, $row);
    46.         }
    47.         else{
    48.             $this->id = $this->status  = 0;
    49.             $this->keywords = $this->title = $this->header = $this->content = '';
    50.         }
    51.     }
    52.     //////////////////////
    53.    
    54.         function getIdFirstPages_d()
    55.     {
    56.      global $db;
    57.         switch (SQL_LAYER)
    58.         {
    59.             default:
    60.                 $sql                = "SELECT id FROM *****
    61.                                             WHERE status='1'
    62.                                             ORDER BY id LIMIT 1;";
    63.         }
    64.         $rs                         = $db->sql_query($sql);
    65.         $rw                         = $db->sql_fetchrow($rs);
    66.         $id                         = intval($rw['id']);
    67.  
    68.         unset($rs, $rw);
    69.  
    70.         return $id;
    71.     }
    72.    
    73.  
    74.     /////////////////////////
    75.    
    76.     function GetInfoByDepart($ord_id=0)
    77.     {
    78.     //global $id;
    79.     $this->id= intval($id);
    80.      global $db;
    81.         $arr = array();
    82.         switch (SQL_LAYER)
    83.         {
    84.             default:
    85.                 $sql = "SELECT id,title
    86.                                             FROM ism_depart
    87.                                                 WHERE ord_id=".intval($ord_id)."
    88.                                                 AND status='1'
    89.                                                     ";
    90.         }
    91.         $rs                         = $db->sql_query($sql);
    92.         while ($rw = $db->sql_fetchrow($rs))
    93.         {
    94.  
    95.             $arr[]  = array(
    96.                         'id'        =>$rw['id'],
    97.                         'title'     =>$rw['title']
    98.                         //'header'  =>$rw['header']
    99.                     );
    100.  
    101.         }
    102.  
    103.         unset($rw, $rs);
    104.         return $arr;
    105.     }
    106.  
    107.    
    108. }
    109. ?>
    110.  

    Вопрос в том, что мне нужно на вход функции function GetInfoByDepart($ord_id=0) из pages.class.php подать $id текущей страницы и зделать по нему выборку sql. У меня пока идея сделать так:
    в pages.class.php обьявить глобальной переменной $id. БУдет ли это правильно и передастся ли значение?

    <?php
    //global $id;
     
  2. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    Объявлять глобальную переменную надо не в начале скрипта, а в каждой функции, где собираетесь ее использовать.
     
  3. Marine

    Marine Активный пользователь

    С нами с:
    20 июн 2010
    Сообщения:
    9
    Симпатии:
    0
    Т.е. если я правильно поняла то, если обьявить global $id; в каждой из фуенкий, кот. используются:function GetInfoByDepart($ord_id=0), function Pages_d($id = 0), function show(), то я могу смнло ипользовать в этом выражении и передать значение из Смарти в обрабатывающие функции.
    Спасибо вам)))
     
  4. Marine

    Marine Активный пользователь

    С нами с:
    20 июн 2010
    Сообщения:
    9
    Симпатии:
    0
    И еще один вопрос, надеюсь последний по тем же скриптам: мне нужно текущие $id, кот. определяются по ссылке и в $_GET массиве отсортировать по параметру $ord_id и передать это все в функцию GetInfoByDepart (например $id=1, 2, 3, 10 и их $ord_id =1). Может у кого идеи как это все реализовать???
     
  5. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Marine
    сессии, геты и посты - суперглобальные массивы. значит их можно мучать в каждой функции без оглобаливания - они и так будут доступны. в принципе можно делать через них же.