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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Не могу соединиться с сервером базы данных 
:(
    Опции темы
ReactOS
  Дата 6.5.2008, 14:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Добрый день!
У меня такая проблема:
Код

function connect_to_db()    {

$cnx = @mysql_connect($host, $user, $pass);

if(!$cnx)
    {
    exit("В настоящий момент, сервер базы данных недоступен, поэтому корректное отображение страницы невозможно!");
    }
if(!@mysql_select_db($db, $cnx))
    {
    exit("В настоящий момент, база данных недоступна, поэтому корректное отображение страницы невозможно!");
    }

}
connect_to_db();

Если я из кода уберу "function connect_to_db() {  } connect_to_db();" , то код уже рабочий, и происходит соединение к серверу базы данных.
Не могу понять, почему если я хочу добавить в код "function function_name() { } function_name();" - то перестает работать :(

Вроде переменная $cnx находится в теле функции, да и с code syntax - все нормально :(
Конечно можно и обходиться и без этого, но так неудобно по коду искать, тем более в Notepad++ есть поиск по ф-циям в коде, достаточно кликнуть по нужной функции, и ты будешь перенаправлен на нужную строку

Почему не работает код? В чем ошибка?
PM   Вверх
DeamonShan
Дата 6.5.2008, 14:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: 3
Всего: 6



Внутри функции переменные $host, $user, $pass неопределены....

попробуй так, передать их или возми из global

Код

function connect_to_db()    {

global $host, $user, $pass;

$cnx = @mysql_connect($host, $user, $pass);

if(!$cnx)
    {
    exit("В настоящий момент, сервер базы данных недоступен, поэтому корректное отображение страницы невозможно!");
    }
if(!@mysql_select_db($db, $cnx))
    {
    exit("В настоящий момент, база данных недоступна, поэтому корректное отображение страницы невозможно!");
    }

}
connect_to_db();

PM MAIL   Вверх
Feldmarschall
Дата 6.5.2008, 15:08 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


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

Репутация: 22
Всего: 32



Непонятно, зачем эту функцию искать по коду, если она нужна ровно один раз.
PM   Вверх
krundetz
Дата 6.5.2008, 15:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вечный странник
***


Профиль
Группа: Завсегдатай
Сообщений: 1400
Регистрация: 14.6.2007
Где: НН(Сормово)

Репутация: 20
Всего: 69



через global советую ничего не обьявлять. Ни только в этом случае но и в любом коде.
Лучше сделай так:
Код

function connect_to_db()    {
$host = 'хост';
$user = 'логин';
$pass = 'пароль';
$db = 'базаДанных';
$cnx = @mysql_connect($host, $user, $pass);
if(!$cnx)
    {
    exit("В настоящий момент, сервер базы данных недоступен, поэтому корректное отображение страницы невозможно!");
    }
if(!@mysql_select_db($db, $cnx))
    {
    exit("В настоящий момент, база данных недоступна, поэтому корректное отображение страницы невозможно!");
    }
}
connect_to_db();

в этом случае у тебя все будет в одном месте и соедеинение с базой данных и параметры необходимые для этого.

Это сообщение отредактировал(а) krundetz - 6.5.2008, 15:11


--------------------
!цензоры - Хранитель стратегической жидкости
Группа ТГВ
Группа Нижний Новгород
user posted image
PM MAIL   Вверх
Feldmarschall
Дата 6.5.2008, 15:12 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


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

Репутация: 22
Всего: 32



а зачем параметры держать в одном месте с подключением?
Обычно параметры лежат в файле с настройками.
PM   Вверх
DeamonShan
Дата 6.5.2008, 15:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: 3
Всего: 6



ага, или лучше, если все в конфиг файле хранится, передать через аргументы...
PM MAIL   Вверх
krundetz
Дата 6.5.2008, 15:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вечный странник
***


Профиль
Группа: Завсегдатай
Сообщений: 1400
Регистрация: 14.6.2007
Где: НН(Сормово)

Репутация: 20
Всего: 69



Цитата(Feldmarschall @ 6.5.2008,  15:12)
а зачем параметры держать в одном месте с подключением?
Обычно параметры лежат в файле с настройками.

Боюсь человек пока до конфигурационных файлов не дорос. Но на будущее действительно параметры в конфиг и передача по аргументу.


--------------------
!цензоры - Хранитель стратегической жидкости
Группа ТГВ
Группа Нижний Новгород
user posted image
PM MAIL   Вверх
ReactOS
Дата 6.5.2008, 15:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Цитата(krundetz @  6.5.2008,  15:09 Найти цитируемый пост)
через global советую ничего не обьявлять. Ни только в этом случае но и в любом коде.

это почему же? smile не объяснишь мне, пожалуйста? чем так global плох?

Добавлено @ 15:38
Цитата(DeamonShan @  6.5.2008,  15:13 Найти цитируемый пост)
ага, или лучше, если все в конфиг файле хранится, передать через аргументы...

чего-то не понял :( это типа, хранение данных в файлах расширения *.cfg , и дальнейшая работа с этими данными? чего-то не пойму, очень интересно стало!


Цитата(krundetz @  6.5.2008,  15:15 Найти цитируемый пост)
Боюсь человек пока до конфигурационных файлов не дорос. Но на будущее действительно параметры в конфиг и передача по аргументу.

ничего, побольше манов и будем расти  smile объясните подробнее про config-files smile а то жуть, как интересно стало smile

Добавлено @ 15:43
Цитата(Feldmarschall @  6.5.2008,  15:12 Найти цитируемый пост)
а зачем параметры держать в одном месте с подключением?Обычно параметры лежат в файле с настройками.

хочешь сказать, что мне нужно разделить мой файл еще на два, что ли?
Т.е. details.php (настройки) и connect.php (подключение)?? это, ты имел в виду?

Это сообщение отредактировал(а) fortrun - 6.5.2008, 15:47
PM   Вверх
krundetz
Дата 6.5.2008, 15:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вечный странник
***


Профиль
Группа: Завсегдатай
Сообщений: 1400
Регистрация: 14.6.2007
Где: НН(Сормово)

Репутация: 20
Всего: 69



Цитата

объясните подробнее про config-files smile а то жуть, как интересно стало smile

У тебя будет файл:
config.php - в котором хранится вся информация о настройках системы в том числе и информация о хосте пароле и имени пользователе базы данных. Этот файл нужен для того чтобы тебе не лапатить кучу кода в поисках того какая переменная отвичеет за ту то и туту настройку и где она обьявлена а сразу знать где её искать. Это вопрос из области правильного оформления кода. Далее ты этот файл подключаешь туда где он тебе может понадобиться в данном случае в файл устанавливающий соёдинение с БД. Так как в файле могут содержаться множество неиспользуемых одновременно настроек то подходим к разделению настроек на несколько файлов. Самый простой пример настройки для администраторской части и настройки для пользовательской. Это вопрос уже из области правильного проектирования системы.
Цитата

это почему же? smile не объяснишь мне, пожалуйста? чем так global плох?

Противоречит концепции ООП.

Это сообщение отредактировал(а) krundetz - 6.5.2008, 15:57


--------------------
!цензоры - Хранитель стратегической жидкости
Группа ТГВ
Группа Нижний Новгород
user posted image
PM MAIL   Вверх
DeamonShan
Дата 6.5.2008, 16:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: 3
Всего: 6



необязательно *.cfg можно и по другому назвать файл, например, config.inc или как то по другому, но пусть будет config.cfg

содержимое этого файла для начало будет таковым:

Код

<?
$host = 'хост';
$user = 'логин';
$pass = 'пароль';
$db = 'базаДанных';
?>


и твой скрипт, например, script.php:

Код

<?
include "config.cfg";

function connect_to_db($host,$user,$pass,$db)    {
$cnx = @mysql_connect($host, $user, $pass);
if(!$cnx)
    {
    exit("В настоящий момент, сервер базы данных недоступен, поэтому корректное отображение страницы невозможно!");
    }
if(!@mysql_select_db($db, $cnx))
    {
    exit("В настоящий момент, база данных недоступна, поэтому корректное отображение страницы невозможно!");
    }
}
connect_to_db($host,$user,$pass,$db);
?>


при этом оба файла должны быть в одной директории

еще интереснее когда функции писать тоже в отдельный файл))))
PM MAIL   Вверх
Feldmarschall
Дата 6.5.2008, 16:03 (ссылка) |  (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


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

Репутация: 22
Всего: 32



fortrun, лучше про шаблоны почитай.
все, что здесь обсуждается - выеденного яйца не стоит
PM   Вверх
ReactOS
Дата 6.5.2008, 16:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Цитата(krundetz @  6.5.2008,  15:55 Найти цитируемый пост)
Противоречит концепции ООП.

лезть в такие подробности пока не буду, но есть вопросы по этому поводу:

А в каких случаях нужно использовать ООП?
Ведь, можно построить достаточно классные по функциональности сайты и без ООП?

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

Просто недавно наткнулся на код подключения к серверу баз даных, какой-то навороченный и на ООП как раз, по-моему такой код будет медленнее выполняться, чем просто:
Код

mysql_conneсt('host', 'user', 'pass');
mysql_select_db('db');

ИМХО 2-е строчки, и ни каких проблем smile
Хотя, я може чего-то и не понимаю smile

Добавлено @ 16:09
Цитата(Feldmarschall @  6.5.2008,  16:03 Найти цитируемый пост)
fortrun, лучше про шаблоны почитай.

извините, с CMS ушел как-раз ради обучения, поэтому шаг назад делать не будем smile
только вперед! smile

Добавлено @ 16:12
Цитата(krundetz @  6.5.2008,  15:55 Найти цитируемый пост)
Это вопрос уже из области правильного проектирования системы.

А для чего нужно правильное проектирование? Для заказчика? А разве ему интересно, как система устроена? Разве ему не нужен банально результат? Даже, если код будет корявым или простым?

Это сообщение отредактировал(а) fortrun - 6.5.2008, 16:21
PM   Вверх
DeamonShan
Дата 6.5.2008, 16:24 (ссылка) |  (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: 3
Всего: 6



помоему правильное проектирования кода нужно только для тебя самого, чтобы сам не запутался)))))  попробуй написать пару скриптов с облаком переменных... потом узнаешь))) и задумаешься о правильной конструкции скрипта))
PM MAIL   Вверх
ReactOS
Дата 6.5.2008, 16:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Цитата(DeamonShan @  6.5.2008,  16:24 Найти цитируемый пост)
попробуй написать пару скриптов с облаком переменных... потом узнаешь))) и задумаешься о правильной конструкции скрипта))

 smile 
PM   Вверх
DeamonShan
Дата 6.5.2008, 16:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: 3
Всего: 6



по поводу классов: у тебя стоит MySQL так? ты пишешь скрипт именно под эту БД... и если тебе придется перенести свой сайт на другой сервак, где нет MySQL, а стоит, например, PosgreSQL тебе придется переписать скрипт))))))) 

а классы позволяют этого избежать... просто в соответсвии с БД подключаешь нужныж класс БД....




извеняюсь за свой русский))
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "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.0566 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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