Покинул форум
Сообщений всего: 32
Дата рег-ции: Май 2013
Помог: 0 раз(а)
Здравствуйте, есть задание создать ИС поликлиники. я сделал БД, таблицы, связал нужные поля. вот пример. Усть таблица otdelenia c полями (ID_OTD,NAZVANIE) и таблица vrachi с полями (ID_VR, FIO, ID_OTD).
Я связал поля ID_OTD и ID_OTD
ALTER TABLE vrachi ADD FOREIGN KEY (ID_OTD) REFERENCES otdelenia(ID_OTD)
ON UPDATE CASCADE UPDATE ON DELETE CASCADE ;
сделал, вывод из таблицы. и форму для добавления и удаления данных. ну и обновления
Но ничего не работает ... ошибки нет но данные не поступают.
Мне надо что бы в дочерней таблице данные менялись, добавлялись и удалялись при изменении в родительской.
Может быть есть другой способ .... Подскажите пожалуйста
Panoptik
Отправлено: 12 Декабря, 2013 - 23:29:55
Постоянный участник
Покинул форум
Сообщений всего: 2493
Дата рег-ции: Нояб. 2011 Откуда: Одесса, Украина
Помог: 131 раз(а)
FOREIGN KEY помогает сохранить целостность данных (к примеру запретить удалять отделения если в них числятся врачи, чтобы не осталось врачей висящих в воздухе не относящихся ни к одному отделению или удалять каскадом зависимые строки, если вы к примеру удаляете отделение, то все врачи удалятся - это как раз то что вы написали, ну и обновление влияет на изменение айди отделения в таблице врачей если вдруг изменится айди отделения в таблице отделений, но этот случай практически встречается очень редко)
соответственно в вашем вопросе добавление вы должны писать сами и делать соответствующие проверки, потому как внешний ключ теперь не даст вам добавить доктора, если вы ему не укажите существующее отделение
что вы имели ввиду под видом "что бы в дочерней таблице данные менялись, добавлялись и удалялись при изменении в родительской." не совсем понятно, но в данном случае на счет удаления я вроде как пояснил
----- Just do it
kirill1
Отправлено: 12 Декабря, 2013 - 23:38:29
Новичок
Покинул форум
Сообщений всего: 32
Дата рег-ции: Май 2013
Помог: 0 раз(а)
Panoptik пишет:
FOREIGN KEY помогает сохранить целостность данных (к примеру запретить удалять отделения если в них числятся врачи, чтобы не осталось врачей висящих в воздухе не относящихся ни к одному отделению или удалять каскадом зависимые строки, если вы к примеру удаляете отделение, то все врачи удалятся - это как раз то что вы написали, ну и обновление влияет на изменение айди отделения в таблице врачей если вдруг изменится айди отделения в таблице отделений, но этот случай практически встречается очень редко)
соответственно в вашем вопросе добавление вы должны писать сами и делать соответствующие проверки, потому как внешний ключ теперь не даст вам добавить доктора, если вы ему не укажите существующее отделение
что вы имели ввиду под видом "что бы в дочерней таблице данные менялись, добавлялись и удалялись при изменении в родительской." не совсем понятно,
но в данном случае на счет удаления я вроде как пояснил
Да, вот и именно он мне не позволяет добавить нового врача без ID_OTD в phpmyadmin я могу добавить ему отделение но как реализовать добавление через форму я не понимаю ...
Покинул форум
Сообщений всего: 2493
Дата рег-ции: Нояб. 2011 Откуда: Одесса, Украина
Помог: 131 раз(а)
для таких случаев используется элемент <select> в который вы предварительно перед отрисовкой формы должны выбрать все существующие отделения и в атрибут value каждого опшина подставить айди этого самого отделения
ну а при редактировании вы должны еще заполнить форму существующими значениями с базы данных
вобщем учите мат часть
PS настоятельно прошу использовать оформление кода, очень трудно читать
уважайте других пользователей
----- Just do it
kirill1
Отправлено: 13 Декабря, 2013 - 01:34:08
Новичок
Покинул форум
Сообщений всего: 32
Дата рег-ции: Май 2013
Помог: 0 раз(а)
Panoptik пишет:
для таких случаев используется элемент <select> в который вы предварительно перед отрисовкой формы должны выбрать все существующие отделения и в атрибут value каждого опшина подставить айди этого самого отделения
Покинул форум
Сообщений всего: 237
Дата рег-ции: Июнь 2013
Помог: 12 раз(а)
Примерно так:
Начало цикла
Открыть тег <option>;
Записать в атрибут value значение ID_OTD текущего элемента;
Записать внутри тега значение NAZVANIE текущего элемента;
Закрыть тег <option>;
Вывести на экран получившийся html-код целиком;
Проверить, был ли текущий элемент массива $otd последним;
Если это НЕ последний элемент - установить указатель на следующий элемент и перейти в начало тела цикла;
Если это был последний элемент - сбросить указатель на первый элемент массива и завершить выполнение цикла;
Конец цикла
kirill1
Отправлено: 13 Декабря, 2013 - 15:38:19
Новичок
Покинул форум
Сообщений всего: 32
Дата рег-ции: Май 2013
Помог: 0 раз(а)
VenZell пишет:
Примерно так:
Начало цикла
Открыть тег <option>;
Записать в атрибут value значение ID_OTD текущего элемента;
Записать внутри тега значение NAZVANIE текущего элемента;
Закрыть тег <option>;
Вывести на экран получившийся html-код целиком;
Проверить, был ли текущий элемент массива $otd последним;
Если это НЕ последний элемент - установить указатель на следующий элемент и перейти в начало тела цикла;
Если это был последний элемент - сбросить указатель на первый элемент массива и завершить выполнение цикла;
Конец цикла
Спасибо теперь понял. Но как я понимаю и в этом документе теперь нужно что то изменить ?
Покинул форум
Сообщений всего: 2493
Дата рег-ции: Нояб. 2011 Откуда: Одесса, Украина
Помог: 131 раз(а)
знаете что, мне не сложно помочь и подсказать, не знаю зачем вы это всё делаете (возможно в институте задали).
если вам нужно действительно что-то сделать, то вам нужно пойти по суровому пути джедая и разобраться в каждой строчке написанной выше. выяснить значение каждой функции и оператора. как работает интерпретатор и условия, циклы и прочее
если вам нужно просто сдать сессию, то лучше просто опишите задание и может кому-нибудь будет лень, и он это напишет
просто подсказывать вам решение проблемы в которой вы 90% не понимаете происходящего - это как-то неправильно.
так что выбор за вами
----- Just do it
kirill1
Отправлено: 13 Декабря, 2013 - 17:35:07
Новичок
Покинул форум
Сообщений всего: 32
Дата рег-ции: Май 2013
Помог: 0 раз(а)
Panoptik пишет:
знаете что, мне не сложно помочь и подсказать, не знаю зачем вы это всё делаете (возможно в институте задали).
если вам нужно действительно что-то сделать, то вам нужно пойти по суровому пути джедая и разобраться в каждой строчке написанной выше. выяснить значение каждой функции и оператора. как работает интерпретатор и условия, циклы и прочее
если вам нужно просто сдать сессию, то лучше просто опишите задание и может кому-нибудь будет лень, и он это напишет
просто подсказывать вам решение проблемы в которой вы 90% не понимаете происходящего - это как-то неправильно.
так что выбор за вами
Мне не нужно что бы вы все делали за меня. Я сам пытаюсь во всем разобраться, но признаться это очень сложно для меня.
Я понял в чем ошибка - данные не поступают из формы. Элемент <select> создает список из которого нужно выбрать значение, но у меня он пустой. (таблица otdelenia заполнена) как это исправить я не знаю.
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.