PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи

Страниц (106): В начало « ... 69 70 71 72 [73] 74 75 76 77 ... » В конец

> Найдено сообщений: 1581
Строитель Отправлено: 19 Февраля, 2017 - 16:04:26 • Тема: Как заставить класс увидеть переменные в файле? • Форум: Вопросы новичков

Ответов: 17
Просмотров: 1207
ЧИМ пишет:
P.S. Сейчас продолжаю тестить этот способ и столкнулся с тем что я не могу обратиться из файла к подключению mysql. Получается что не возвращает подключение.
Ну так вы же "спрятали" обе функции внутрь класса SqlDB, и теперь они находятся в его области видимости. Теперь для работы с этими функциями, веренее - уже методами, вам надо создать экземпляр класса SqlDB, и обращаться уже к объекту. Примерно так:

connect_1.php
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.  
  3. return [
  4.     'HOST'=>'localhost',
  5.     'DB'=>'base',
  6.     'LOGIN'=>'user',
  7.     'PASSW'=>'12345',
  8.     'charset'=>'utf8'
  9. ];


SqlDB.php
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.  
  3. class SqlDB
  4. {
  5.     public function conn($DB)
  6.     {
  7.         static $conns = [];
  8.  
  9.         if (!isset($conns[$DB])) {
  10.             extract(require 'apteka/config/connect_1.php');
  11.             $conns[$DB] = new mysqli($HOST,$LOGIN,$PASSW,$DB);
  12.             $conns[$DB]->set_charset($charset);
  13.         }
  14.  
  15.         return $conns[$DB];
  16.     }
  17.  
  18.     public function myDatabase() {
  19.         return $this->conn('my_database');
  20.     }
  21. }
  22.  
  23.  
  24. $obj = new SqlDB;
  25. $obj->myDatabase();
  26.  
  27.  
Строитель Отправлено: 19 Февраля, 2017 - 14:56:09 • Тема: Как заставить класс увидеть переменные в файле? • Форум: Вопросы новичков

Ответов: 17
Просмотров: 1207
ЧИМ пишет:
выдаёт ошибку: "Parse error: syntax error, unexpected '[' "
Проверьте версию пхп. Она должна быть не ниже 5.4. Если версия ниже, и нет возможности её поднять, тогда замените строку с сокращённым синтаксисом объявления массива на этот вариант:

static $conns = array();
Строитель Отправлено: 19 Февраля, 2017 - 00:00:45 • Тема: Как заставить класс увидеть переменные в файле? • Форум: Вопросы новичков

Ответов: 17
Просмотров: 1207
ЧИМ пишет:
На сколько я понял тут задаётся имя базы, но я его так же получаю из файла
Строго говоря, в функцию conn() передаётся имя файла, которое должно совпадать с именем базы данных, к которой вам необходимо произвести подключение.

Чтобы долго не ходить вокруг да около, то можно сказать так - этот код позволит вам использовать одновременное подключение к разным бд. Для этого вам нужно создать соответствующие пхп-файлы, по аналогии с приведённым примером (т.е., чтобы файл возвращал ассоциативный массив значений), и просто вызывать одну и ту же функцию, но передавая в неё разные параметры. См. пример:
Спойлер (Отобразить)


ЗЫ: Можно код упростить так, как предложили вы, но тогда потеряется возможность подключения к нескольким бд одновременно (если я всё верно понял)
Строитель Отправлено: 18 Февраля, 2017 - 21:50:57 • Тема: Как заставить класс увидеть переменные в файле? • Форум: Вопросы новичков

Ответов: 17
Просмотров: 1207
ЧИМ пишет:
Поправьте меня если я неправильно понимаю.
Елси не возражаете, я дам пояснения:
ЧИМ пишет:
Здесь мы создаём в файле массив с переменными
Ассоциативный массив значений - так корректнее.
ЧИМ пишет:
Просто возвращаем имя базы?
Нет, возвращается объект mysqli (если в процедурном - то это был бы тип "ресурс"), с которым вы будет производить дальнейшие операции (выборка из базы, и т.п.).
ЧИМ пишет:
Вот это для меня вообще непонятно, это всё в классе?
Нет, создание экземпляра класса mysqli происходит в теле функции conn() при условии, что ранее этот объект не был создан.
ЧИМ пишет:
Первый раз просто сталкиваюсь с использованием extract
Эта функция, если говорить упрощённо, преобразует ассоциативный массив в переменные, при этом ключи массива становятся именами переменных, а значения массива - значениями переменных. И это всё импортируется в текущую область видимости.
ЧИМ пишет:
почему мы объявляем постоянный массив "static $conns = [];" и сразу проверяем существует ли в нём "$dbName"? Как до if(!isset($conns[$dbName])) в нём появится значение $dbName?
Поле $conns можно было бы объявить и не статичным, но тогда при каждом обращении к базе происходило бы создание объекта mysqli. Именно поэтому в условии написана проверка на его существование, ну а static будет хранить ранее сохранённые параметры.
Строитель Отправлено: 18 Февраля, 2017 - 08:33:24 • Тема: Создание простейшего чата • Форум: Вопросы новичков

Ответов: 5
Просмотров: 470
Сергей.Ш пишет:
dcc0

Спасибо за участие. Готовый чат не нужен, но посмотрю, Это мне нужно чисто для обучения. Самостоятельно хочу освоить создание сайтов с нуля.
Строитель
Спасибо. Может вы посоветуете какую литературу. Я долбаю одну книгу Никсон.Р Создание динамических сайтов. Все вроде понятно, а когда до дела доходит , до написания самому кода, то стопор. . Выхватываешь знания кусками безсистемно то оттуда то из другого места ,а уложить в одну стопочку не удается.
Это нормально ) Чтобы понимать теорию на этапе изучения, нужно параллельно практиковаться. Иначе говоря, читаете об операторе echo - значит надо на локальном сервере написать пример с его использованием, и пооперировать параметрами, чтобы до конца стало понятно, как он работает.

На счёт литературы - трудно что-то советовать, т.к. она устаревает ... Наверное, лучше официального мануала литературы нет. Если наткнулись при чтении на что-то не понятное, можно нагуглить видео по этому моменту. Но читать придётся много, настраивайтесь Улыбка
Строитель Отправлено: 17 Февраля, 2017 - 22:33:49 • Тема: Как заставить класс увидеть переменные в файле? • Форум: Вопросы новичков

Ответов: 17
Просмотров: 1207
armancho7777777, если не ошибаюсь, у вас в строке №15 ошибка :

$conns[$dbName]->set_charset($config['charset']);

Вместо $config['charset'] нужна переменная $charset. Верно?
PHP:
скопировать код в буфер обмена
  1. $conns[$dbName]->set_charset($charset);
Строитель Отправлено: 17 Февраля, 2017 - 17:32:07 • Тема: Создание простейшего чата • Форум: Вопросы новичков

Ответов: 5
Просмотров: 470
Сергей.Ш пишет:
Отправка, получение сообщений. Без регистрации.
Вы имеете ввиду отправка/чтение сообщений без регистрации? Если да, то вам нужен скрипт "Гостевая книга". Приведённого кода мало для её реализации. Как минимум нужна ещё html-форма.
Строитель Отправлено: 16 Февраля, 2017 - 20:44:09 • Тема: где ошибка в коде Parse error: syntax error, unexpected '$db' (T_VARIABLE) in E:\OpenServer\domains\tes.ru\mysql.php on line 11 • Форум: Вопросы новичков

Ответов: 9
Просмотров: 641
wwwer пишет:
Спасибо учту
документация же не научит так как уроки
Почему нет? В документации не только описывается та или иная возможность, но так же есть и рабочие примеры, которые можно скопировать на ваш локальный сервер для практических занятий.
Строитель Отправлено: 16 Февраля, 2017 - 20:37:31 • Тема: где ошибка в коде Parse error: syntax error, unexpected '$db' (T_VARIABLE) in E:\OpenServer\domains\tes.ru\mysql.php on line 11 • Форум: Вопросы новичков

Ответов: 9
Просмотров: 641
wwwer пишет:
в уроке двойные кавычки почему-то
Уроки потому что устарели. Меньше полагайтесь на уроки, а лучше больше читайте документацию. Как раз сейчас у вас возникла необходимость прочесть об использовании парных/непарных кавычек:
одинарные кавычки
двойные кавычки
Строитель Отправлено: 16 Февраля, 2017 - 20:27:51 • Тема: где ошибка в коде Parse error: syntax error, unexpected '$db' (T_VARIABLE) in E:\OpenServer\domains\tes.ru\mysql.php on line 11 • Форум: Вопросы новичков

Ответов: 9
Просмотров: 641
Строку № 17 замените на этот код


На счёт этой строки "SELECT * FROM Фирма" -- у вас что, в базе действительно есть таблица с таким именем? Не понял
Строитель Отправлено: 16 Февраля, 2017 - 19:16:57 • Тема: Как заставить класс увидеть переменные в файле? • Форум: Вопросы новичков

Ответов: 17
Просмотров: 1207
ЧИМ пишет:
А как теперь в этот класс подключить файл connect.php? Чтоб не загружать 2 файла по отдельности, а загрузить один класс который будет подключаться к БД используя файл настроек.
Можно передать ссылку на файл в конструктор дочернего класса, в дочернем конструкторе произвести подключение этого файла, и после этого вызывать родительский конструктор, в который и передавать данные для соединения с БД
PHP:
скопировать код в буфер обмена
  1. class SqlDB extends mysqli
  2. {
  3.     public function __construct($file)
  4.     {
  5.         require (file_exists($file) ? $file : '');
  6.        
  7.         $HOST  = isset($HOST) ? $HOST : '';
  8.         $LOGIN = isset($LOGIN) ? $LOGIN : '';
  9.         $PASSW = isset($PASSW) ? $PASSW : '';
  10.         $DB    = isset($DB) ? $DB : '';
  11.        
  12.         parent::__construct($HOST, $LOGIN, $PASSW, $DB);
  13.        
  14.         $this->set_charset('utf-8');
  15.        
  16.         if (mysqli_connect_error()) {
  17.             die ('Ошибка подключения ('. mysqli_connect_errno() .') '
  18.                 . mysqli_connect_error());
  19.         }
  20.     }
  21. }
  22.  
  23.  
  24. $sql = new SqlDB('connect.php');
Строитель Отправлено: 16 Февраля, 2017 - 19:01:43 • Тема: Ссылки. • Форум: Литература

Ответов: 8
Просмотров: 3385
Сергей.Ш пишет:
Строитель спасибо.
Пример, написанный мной, оказался понятным?
Строитель Отправлено: 16 Февраля, 2017 - 17:19:36 • Тема: Как работать с Preg-replace в окне редактора без обращения к файловой системе и браузеру? • Форум: Регулярные выражения

Ответов: 9
Просмотров: 813
supmener пишет:
А куда текст подставлять?
PHP:
скопировать код в буфер обмена
  1.  
  2. $sInput = 'Сюда вставить текст';
  3. echo preg_replace('~[\n\r]{2,}~iu', PHP_EOL, $sInput);

(Добавление)
Добавил запятую в фигурные скобки {2,}
Строитель Отправлено: 16 Февраля, 2017 - 17:14:54 • Тема: Как работать с Preg-replace в окне редактора без обращения к файловой системе и браузеру? • Форум: Регулярные выражения

Ответов: 9
Просмотров: 813
supmener пишет:
Для замены двойных пустых строк на одиночные php файл прошу написать.
В первом посту вроде бы рабочее решение:

PHP:
скопировать код в буфер обмена
  1. echo preg_replace('~[\n\r]{2}~iu', PHP_EOL, $sInput);

(Добавление)
Если не срабатывает, то напишите пример исходного текста, и укажите, что в нём требуется найти.
Строитель Отправлено: 16 Февраля, 2017 - 16:54:25 • Тема: Как работать с Preg-replace в окне редактора без обращения к файловой системе и браузеру? • Форум: Регулярные выражения

Ответов: 9
Просмотров: 813
supmener пишет:
Не помню, как написать шаблон на PHP
Это зависит от конкретной задачи.
supmener пишет:
куда вставлять текст в Коделобстер, чтобы всё это заработало.
В пхп-файл, а потом этот файл открыть в CodeLobster.

Страниц (106): В начало « ... 69 70 71 72 [73] 74 75 76 77 ... » В конец
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB