1

Тема: Несколько баз данных

Здравствуйте. Скажите пожалуйста, можно ли использовать несколько баз данных в одном проекте. Если это возможно, как из joomla сделать к новой базе запрос.
PhpMyAdmin 2.6.1
Joomla! 1.5.14

2

Re: Несколько баз данных

Dimazzz
Обычно один скрипт может работать только с одной базой данных. Если скриптов несколько, то баз данных может быть столько, сколько скриптов.

3

Re: Несколько баз данных

Извините если не по теме, но такая проблема. Помогаю делать диплом по созданию сайт. Сайт сделали, но надо создать базу данных успеваемости. ID; FIO; Predmet; Ocenka. Что бы к ней можно было обращаться по фамилии(FIO) и на выходе получать оценку по определенному предмету. Сайт делали на joomla.
Системная информация:
Joomla 1.5.14 Stable [ Wojmamni Ama Naiki ]
Пакет Denwer
phpMyAdmin 2.6.1
Весь гугл перелопатил, практически ничего не нашел. Подскажите хотя бы в какую сторону двигаться. Диплом ГОРИТ!
Заранее благодарю.

4

Re: Несколько баз данных

Dimazzz
Создайте таблицу успеваемости в той же базе данных, что и Joomla. Как делать модуль в Joomla я не знаю, но можно посмотреть как сделаны похожие и что-то скопировать, что-то переделать. По сути, надо сделать обычный скрипт выборки данных из БД и встроить его в дизайн Joomla.

5

Re: Несколько баз данных

Большое спасибо. У меня вопрос, а скрипт выборки данных, это получается то же самое что и sql запрос.Верно?

6

Re: Несколько баз данных

Dimazzz
Не совсем. Скрипт надо будет написать на PHP и уже с его помощью необходимо выполнить выборку данных из таблицы SQL запросом.

7

Re: Несколько баз данных

Спасибо. Где найти инфу по созданию скрипта выборки данных, может есть где готовые.

8

Re: Несколько баз данных

Dimazzz
На счет готовых скриптов даже не знаю, вряд ли можно что-то подобное найти.

Если делать не в Joomla, то так:
1) Создаем в БД таблицу (например test_table) с полями ID; FIO; Predmet; Ocenka. Заполняем таблицу данными.
2) Делаем скрипт выборки по полю FIO.

Сперва форма.

<form action="" method="post">
<input type="text" name="fio" />
<input type="submit" value="Искать" />
</form>

Выводим данные:

if (!empty($_POST['fio'])) {
  $sql = 'SELECT * FROM `test_table` WHERE `FIO` = "' . $_POST['fio'] . '"';
  $result = mysql_query($sql);
  while ($row = mysql_fetch_assoc($result)) {
    print 'ID: ' . $row['ID'] . ', FIO: ' . $row['FIO'] . ', Predmet: ' . $row['Predmet'] . ', Ocenka: ' . $row['Ocenka'] . '<br />';
  }
}

Выше в коде необходимо прописать подключение к базе данных.

$link = mysql_connect('localhost', 'user_name', 'password');
mysql_select_db('db_name');

Как все это встроить в Joomla, я не знаю, но здесь показано как собрать страничку с текстовым полем и кнопкой.

9

Re: Несколько баз данных

Примерно ясно. Так созданный скрипт надо вставлять в joomla или может какими другими альтернативными средствами его использовать.

10

Re: Несколько баз данных

Спасибо, со вставкой скрипта разобрался. Есть модуля оказывается для joomla специальные. Вот еще такой вопрос: как мне сделать связь двух таблиц на уровне phpmyadmin, какой запрос выполнить, что бы можно было к ним обращаться с админки.
Поля первой табл.: ID, FIO, Klass, ID_Predmet, Ocenka
поля второй: ID_Predmet, Predmet
Буду ооочень признателен!

11

Re: Несколько баз данных

Dimazzz
Связь создается на уровне SQL запроса. В вашем случае запрос будет такой:

SELECT `table_1`.*, `table_2`.`Predmet`
FROM `table_1` INNER JOIN `table_2` ON `table_1`.`ID_Predmet` = `table_2`.`ID_Predmet`
WHERE ... /* Далее условие выборки */

Таким запросом получаем кроме 5 полей из первой таблицы, еще одно поле из второй, связывая обе таблицы по значению поля ID_Predmet.

Попробуйте составить такой запрос и выполнить его в phpMyAdmin, чтобы увидеть результат и уже затем, если не будет ошибок, вставить его в скрипт.

12

Re: Несколько баз данных

Спасибо. Попробую.

13

Re: Несколько баз данных

Извините, но я решил немного по другому составить таблицы. Допустим у нас есть n-кол-во классов.
Создаем таблицы (Klass1; Klass2; Klass3  и т. д.) отдельно для каждого класса по полям: id; FIO; Klass; Predmet(где предметы будут введены в полях в зависимости от класса). И уже из созданных таблиц делаем выборку по заданной фамилии, что бы получить на выходе класс и предметы с уже выставленными оценками.
Вот теперь у меня еще такой вопрос. В данной случае надо ли объединить все таблицы? И как это сделать? Может лучше создать еще одну таблицу по классам?
Ведь по запросу в форме поиска мы будем задавать фамилию и система будет просматривать по всем таблицам klass.
Помогите. Уже не знаю даже куда обращаться, все молчат блин. Только у вас толковые советы:).

14

Re: Несколько баз данных

Dimazzz
Думаю можно сделать две таблицы: fio - содержит поля id и fio; и main - содержит поля id, fio_id, klass, predmet, ocenka.

В этом случае для поиска по имени можно использовать следующий запрос:

SELECT `main`.*, `fio`.`fio`
FROM `fio` INNER JOIN `main` ON `fio`.`id` = `main`.`fio_id`
WHERE `fio`.`fio` LIKE "имя";

15

Re: Несколько баз данных

Что то мне немного не понятно, зачем для fio создавать отдельную таблицу? Ккак же мне сделать объединение таблиц klass, вот это меня больше всего интерисует, и вообще надо ли это в моем случае.
Мне все таки кажется,  что таблица fio не очень необходима, ведь у меня таблицы будут по отдельным классам. Хотя и там могут быть
повторения:).

16

Re: Несколько баз данных

Dimazzz
Чтобы построить структуру таблиц надо четко понимать их взаимосвязь. Я необходимые вам связи не понимаю и предлагаю пример решения, вы должны продумать эти связи и создать таблицы и их структуры по примерно следующей логике:

1) Какие данные надо выводить?
2) Какие данные надо хранить в БД?
3) Если есть несколько строк принадлежат одному пользователю, то его данные (имя, фамилия) лучше вывести в отдельную таблицу, чтобы при вставке данных не вбивать постоянно имя и фамилию. Поле fio здесь дано, как пример. Этот принцип необходимо применить ко всем данным.

17

Re: Несколько баз данных

Уважаемый Hanut
Я думаю что будет такая довольно не сложная структура.
На примере первого класса таблицы jos_1klass
1) Вывод данных по вводу фамилии из таблицы:FIO,Klass,Obgr,Pis,Fiz,Mat,Okr,Tech,Muz. Где в поле класс будет размещаться выпадающий список с классами и след. поля, это названия предметов с оценками в таблице.
2) В базе данных мы храним инфу. по каждому классу в отдельных таблицах.
Ну как то вот так.
Как это реализовать в joomla я разобрался. Как построить sql запрос к таблице jos_1klass по заданной пользователем строке, в данном случае по вводу FIO? Может использовать цикл?

18

Re: Несколько баз данных

Dimazzz
Запрос будет самым простым:

SELECT * FROM `jos_1klass` WHERE `FIO` = "имя";

19

Re: Несколько баз данных

Hanut
Спасибо

20

Re: Несколько баз данных

Hanut
Извините, при запросе выдает:
1. [ SELECT * FROM `jos_1klass` WHERE `FIO` = "имя" ], rows: 0

21

Re: Несколько баз данных

Вы создали структуру таблицы jos_1klass и ввели в нее данные (если создали, то покажите)? Среди данных есть запись со строкой "имя" в поле FIO?

22

Re: Несколько баз данных

Структура таблицы создана, запрос по определенному FIO выдает. Я такой запрос выполнял раньше и получал данный по строке. Но как сделать так, что бы пользователь вводил фамилию и получал результат? Может циклом реализовать?

23

Re: Несколько баз данных

Dimazzz
Не понимаю в чем у вас затруднение. Покажите как делаете вывод.