Здравствуйте, уменя возникла проблема с написанием инсталлятора
Я не давно начал изучать PHP и не совсем представляю что должен влючать в себя процесс установки.
Я по пробывал разбить инсталлятор на 3 этапа:
1) ввод данных БД (хост,юзер,пароль,имяБД);
2) создание БД и таблиц (таблицы заранее импортированны в текстовый файл), а также ввод данных для админки.
3) занесение данных для админки в БД и сохранение настроек подключения в отдельный файл.
На втором шаге мне удалось только создать пустую базу данных, и дальше никак. Не могу понять в ччем ошибка
З.Ы.
Может инсталлятор должен включать что-то ищё?
Вот код:
Ошибка:
Возникла ошибка - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '; INSERT INTO `articles` VALUES (1, 'Інформаційні технології в освіті сьогодні і з' at line 12
P.S.S.
если из файла install.txt скопировать все содержание и вставить как sql запрос через
phpmyadmin, то таблицы добавляются
Спустя 1 час, 1 минута, 57 секунд (14.06.2009 - 00:21) twin написал(а):
Вот в таких случаях нужно выводить запрос на экран. Примерно так:
PHP |
//$sql = mysql_db_query print($namedb,$x,$db); |
тогда будет легче понять, что пыхпыхадмин придуман не просто так. Так бы все и совали файлы в запрос и ждали чуда. Нельзя одним запросом сделать таблицу и сразу же в неё что то написать.
Спустя 12 минут, 47 секунд (14.06.2009 - 00:34) LionKing написал(а):
twinПодскажите пожалуста, тогда как перенести таблицы?
Спустя 8 минут, 30 секунд (14.06.2009 - 00:42) twin написал(а):
Читать файл, разбирать на запросы и делать их по очереди. Или на каждый запрос свой файл, если их не много.
Спустя 11 минут, 24 секунды (14.06.2009 - 00:54) LionKing написал(а):
twin спасибо буду пробовать...
Можете подсказать 2 вопроса ёще:
1. (как данные по БД перенести в файл connect.
php (который подключается на все страницы сайта где есть обращение к Базе), так что бы значения переменных $hostdb,$userdb,$passdb$namedb, там остались?)
2. И как Читать файл и разбирать на запросы в пхп ?
Спустя 14 минут, 15 секунд (14.06.2009 - 01:08) twin написал(а):
Вообще инсталлятор обычно не только делает базу данных, но и формирует конфигурационный файл. В него можно прописать все статические настройки приложения. К ним и относятся эти данные.
Разбирать можно кучей методов. Самый простой на мой взгляд - читать файл в строку ( лучше для этого file_get_contents()) и делить по точке с запятой. Кстати, в php при формировании запроса она совсем не нужна и все портит. А дальше дело фантазии.
Спустя 10 минут, 13 секунд (14.06.2009 - 01:18) LionKing написал(а):
twin
а если в поле таблицы встретится точка с запятой (например где-то в тексте статьи) функция file_get_contents()) примет её за разделитель?
Спустя 18 минут, 26 секунд (14.06.2009 - 01:37) twin написал(а):
нет, не примет. она вообще ничего не делит. она просто читает файл в строку. А делить уже надо исходя из условий. Если такая вероятность есть, то выбирать более другой способ. Я написал что это самый простой.
Спустя 6 минут, 43 секунды (14.06.2009 - 01:43) LionKing написал(а):
Объясните пожалуйста подробнее про конфигурационный файл (что туда должно входить и где его размещать?)
Спустя 10 минут, 33 секунды (14.06.2009 - 01:54) twin написал(а):
Обычно это config.php и размещается в корне либо в директории cofig. Туда можно прописать данные коннекта, кодировку, коли есть возможность выбора, дефолтный язык, если их несколько, скин по умолчанию, если есть выбор, настройки сайта как то:
максимальный размер загружаемых файлов
количество блоков при постраничном выводе
иногда (часто) пароль администратора
ну и вообще все то, что настраивается один раз.
Тогда при инсталляции юзер сможет выбрать нужную конфигурацию и забыть про это.
Спустя 39 минут, 28 секунд (14.06.2009 - 02:33) LionKing написал(а):
twin
Скажите а из файла XML можно сформировать и вывести запросы поочерёдно?
Спустя 5 часов, 54 минуты, 45 секунд (14.06.2009 - 08:28) twin написал(а):
Можно, но это не очень хорошее решение. Для этого нужна соответствующая библиотека, а вот в очень популярном денвере по моему её нет. Это значит что твой скрипт будет недоступен огромному количеству народа, которые не смогут установить его дома и посмотреть. А лить на сервак непроверенный софт вряд ли кто станет в здравом уме и рассудке.
Либо писать парсер xml, что дело тоже довольно неблагодарное и муторное.
Я бы посоветовал разнести запросы по файлам. В один файл спихать все запросы, которые устанавливают пустую базу. В другой файл вынести наполнение. Причем запросы писать построчно, по одному в строку. Тогда можно прочитать файл функцией file() в массив и прокрутить его, подставляя запросы по очереди.
Что это дает.
1. Довольно простая схема
2. Возможность выбора конфигурации
2. Возможность последующего дополнения бд
Спустя 5 часов, 11 минут, 32 секунды (14.06.2009 - 13:40) LionKing написал(а):
twin
У меня в базе есть полные тексты статей, там 1 поле занимает несколько строк типа:
текст \r\n
текст
написать запросы по 1 в одну строчку не получится.
Если попробовать в файле перед каждым запросом добавить метки например, (@createDB@, или @insertDB@) и считывать все что есть между ними?
Спустя 16 минут, 22 секунды (14.06.2009 - 13:56) twin написал(а):
Функция file() не обратит внимание на \r\n, если они заключены в апострофы. Для того в запросах так и делается. Так что все будет за -ши... хорошо.
Спустя 16 минут, 20 секунд (14.06.2009 - 14:12) LionKing написал(а):
twin
Огромное спасибо за помощь!
Буду пробывать...