Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> подключение к mysql один раз 
:(
    Опции темы
Bangladesh
Дата 4.5.2006, 20:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


AsBest
***


Профиль
Группа: Завсегдатай
Сообщений: 1089
Регистрация: 4.9.2004
Где: Калининград

Репутация: нет
Всего: 17



есть следующая структура:

Код

function General()
{
      function F1()
      {
       //...
      }

     function F2()
      {
       //...
      }

    function FN()
      {
       //...
      }

    //...
}


функции F1, F2, FN — содержат в себе запросы разного рода. каким образом я могу поключиться к бд в функции General, чтобы другие функции не требовали повторного подключения, если register_globals выключены??? 


--------------------
ок
PM MAIL WWW ICQ Skype   Вверх
Mal Hack
Дата 4.5.2006, 20:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



Попробуй в главной программе, т.е. вне функций. Тогда PHP должен догадаться и при обращении к mysql_query внутри функций, использовать открытое соединение. 
PM ICQ   Вверх
Bangladesh
Дата 4.5.2006, 20:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


AsBest
***


Профиль
Группа: Завсегдатай
Сообщений: 1089
Регистрация: 4.9.2004
Где: Калининград

Репутация: нет
Всего: 17



не получаецаа.. 


--------------------
ок
PM MAIL WWW ICQ Skype   Вверх
Mal Hack
Дата 4.5.2006, 20:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



А если внутренние функции выкинуть на уровень General? 
PM ICQ   Вверх
Bangladesh
Дата 4.5.2006, 20:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


AsBest
***


Профиль
Группа: Завсегдатай
Сообщений: 1089
Регистрация: 4.9.2004
Где: Калининград

Репутация: нет
Всего: 17



попробывал выкинуть... таже ошибка... видимо это из-за рекурсии что-то... наверное лучше код кинуть...

Код

<?php

class Sections
{
       var  $alphabet = array("a","b","c","d",
                              "e","f","g","h",
                              "i","j","k","l",
                              "m","n","o","p",
                              "q","r","s","t",
                              "u","v","w","x",
                              "y","z");
       var $tbl_;

        function getNumByChar($char)
         {
                 for($i = 0; $i <= (count($this->alphabet) - 1); $i++)
                          if($this->alphabet[$i] == $char) $result = $i;
                 return $result;
         }

        function getCharByNum($num)
        {
                 for($i = 0; $i <= (count($this->alphabet) - 1); $i++)
                         if($i == $num) $result = $this->alphabet[$i];
                 return $result;
         }

        function getSections()
         {

              //------------------------------------------
              //------------------------------------------

              //Количество главных разделов
              function getNumSection()
              {

                      include $_SERVER['DOCUMENT_ROOT']."/access/access_par.php";
                      mysql_connect($mhost, $mlogin, $mpassword) or die(mysql_error());
                      mysql_select_db($mdb_name) or die(mysql_error());

                      $sql = "SELECT * FROM `".$tbl_sections."` ORDER BY `id` ASC LIMIT 0 , 30 ";
                      $query = mysql_query($sql) or die(mysql_error());

                      $result = 0;

                      while($row = mysql_fetch_object($query))
                       if(strlen($row->id) == 1) $result++;

                      mysql_close();
                      return $result;
              }
              //------------------------------------------
              //Максимальная длина ID
              function getNumMaxLenId()
              {
                     include $_SERVER['DOCUMENT_ROOT']."/access/access_par.php";
                     mysql_connect($mhost, $mlogin, $mpassword) or die(mysql_error());
                     mysql_select_db($mdb_name) or die(mysql_error());

                     $sql = "SELECT * FROM `".$tbl_sections."` ORDER BY `id` ASC LIMIT 0 , 30 ";
                     $query = mysql_query($sql) or die(mysql_error());

                     $result = 0;

                     while($row = mysql_fetch_object($query))
                     {
                          $id_num_char = strlen($row->id);
                          if($result < $id_num_char) $result = $id_num_char;
                     }
                     mysql_close();
                     return $result;
              }

              //------------------------------------------
              //Вывод главного раздела с подразделами
              function getSection($char)
              {

                       $max_len_id =  getNumMaxLenId();
                       if(strlen($char)==1)
                          {
                                 $substr_start = 0;
                                 $substr_end = 1;
                          }
                       else
                          {
                                 $substr_start = $substr_end = strlen($char);
                          }

                       include $_SERVER['DOCUMENT_ROOT']."/access/access_par.php";
                       mysql_connect($mhost, $mlogin, $mpassword) or die(mysql_error());
                       mysql_select_db($mdb_name) or die(mysql_error());

                       $result = "";
                       for($i = 1; $i <= $max_len_id; $i++)
                       {

                            $sql = "SELECT * FROM `".$tbl_sections."` ORDER BY `id` ASC LIMIT 0 , 30 ";
                            $query = mysql_query($sql) or die(mysql_error());

                             while($row = mysql_fetch_object($query))
                             {
                                     if((substr($row->id, $substr_start, $substr_end) == $char) and (strlen($row->id) == $i))
                                     {
                                             if(strlen($char) < strlen($row->id))
                                                {
                                                  $result .= getSection($row->id);
                                                }
                                             else
                                                 $result .= "<span style=\"display: block; font-size: ".(15 - ($i * 1.5))."pt; padding-left:".($i * 15)."px; padding-bottom: 3px;\">
                                                         <a href=\"index.php?p=sections&select=".$row->id."\">".$row->name."</a></span>";

                                     }
                             }
                       }
                       mysql_close();
                       return $result;
              }
              //------------------------------------------
              //------------------------------------------
              $result = "";
              for($i = 0; $i <= getNumSection(); $i++)
              {
                     $result .= getSection($this->getCharByNum($i));
              }

              return $result;

         }

}
?>


вообщем, скрипт предназначен для вывода разделов, в админке, в виде иерархии (одни, под другими, как в проводнике) использую буквенный ид:


a - главный раздел 1
aa - подраздел 1 главного раздела 1
aaa - подраздел 1 подраздела 1 главного раздела 1
b - главный раздел 2
ba - подраздел 1 главного раздела 2

и так далее...

мне кажется, из-за рекурсии что-то не то, но вот незнаю как по другому сделать... 


--------------------
ок
PM MAIL WWW ICQ Skype   Вверх
Mal Hack
Дата 4.5.2006, 21:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



Объяви свойство у класса, куда пиши указатель на соединение, а затем передавай его в качестве параметра. 
PM ICQ   Вверх
ZlojEzh
Дата 5.5.2006, 20:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 285
Регистрация: 8.10.2005
Где: Киев, Украина

Репутация: 10
Всего: 15



в объектно-ориентированном проектировании есть замечательный паттерн Singleton
стоит почитать
не совсем то же самое, но идея общая

создаешь некий класс, в нем статическое свойство - соединение с БД
+ абстрактный метод, который возвращает ссылку на соединение

=>
register globals  не нужны
в любом месте программы можно получить уже готовое соединение

 
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0820 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.