2013-10-22 2 views
0

나는 학생들이 php와 mysql에서 교사와 함께 수업을 예약 할 수있는 스케줄링 시스템을 개발 중이다.접합 테이블 채우기

데이터를 저장할 별도의 테이블이 3 개 있으며 각 테이블에는 고유 한 ID studentID, lessonID 및 teacherID가 있습니다. 그것들은 모두 Many to Many 관계입니다. 많은 학생들이 많은 교훈을 얻을 수 있습니다. 많은 교사들은 많은 교훈을 얻을 수 있습니다. 이와 같이 학생과 교사를 동일한 수업, 수업/학생 및 수업/교사와 연결하는 두 개의 교차점 테이블이 있습니다.

내가 겪고있는 문제는 새로운 수업을 입력하기위한 양식을 만드는 것입니다. 저는 같은 형태로 학생과 교사를 배정 할 수 있기를 원합니다. 양식에있는 대부분의 데이터는 수업 테이블 (시작 시간, 종료 시간, 강의실 번호 등)에 쉽게 게시되지만 접합점 테이블에 문제가 있습니다.

나는 사용할 수있는 학생과 교사 목록을 가져와 ID를 기반으로 접합 테이블에 입력하려고합니다. 접합 테이블에 lessonID가 필요하기 때문에 수업 ID를 실제로 생성하기 전에 수업 ID를 캡처하는 방법을 알아낼 수는 없지만 수업은 아직 작성되지 않았습니다.

모든 ID가 자동 증가합니다. 내가 생각할 수있는 유일한 해결책은 최신 lessonID를 반환하고 하나씩 증가시키는 것입니다. 이것이 최선의 방법입니까? 나중에 문제가 발생할 수 있다는 느낌이 들었습니다. 예를 들어 두 명의 사용자가 동시에 수업을 만들려고하거나 지연이 있고 또 다른 수업이 다른 수업 전에 만들어 지지만 둘 다 같은 수업 ID를 접합 테이블에 게시하는 상황에서.

모든 의견을 환영합니다. 감사합니다.

답변

1

레슨 레코드를 삽입하면 할당 된 ID를 검색 할 수 있습니다 (자동 증가 했으므로). 따라서 절차는 먼저 레슨을 삽입하고 삽입 된 ID를 반환해야합니다. 이 리턴 된 레슨 ID를 학생 ID 및 교사 ID와 함께 사용하여 접합 레코드를 삽입하십시오.

// $db is the mysqli object that has been connected to your database 

// Insert the lesson 
if ($db->query("INSERT INTO ..........")) 
{ 
    $lessonID = $db->insert_id; 

    // Insert the student and teacher junctions with $lessonID 
} 
+0

죄송합니다, 제 PHP는 그렇게 좋지 않습니다 ... 저는 논리를 얻었고 수업을 처음으로 삽입했으면 lessonID를 검색 할 수 있었지만 번호를 검색하는 방법을 모르겠습니다. 데이터베이스에서 $ lessonID에 할당하십시오. 나는 "->"을 이해하지 못합니다. insert_id 란 무엇입니까? – Guy

+0

쿼리를 수행하면 자동으로 증분 된 ID로 레슨 레코드가 삽입됩니다. 생성 된 ID는'insert_id'에 저장됩니다. PHP에서'->'연산자를 사용하여 클래스의 인스턴스에서 멤버/필드/변수에 액세스합니다. 이 경우'$ db'는 클래스 mysqli의 인스턴스이다. '$ lessonID = $ db-> insert_id;를 실행하면 데이터베이스에 삽입 된 마지막 레코드의 ID를 검색하게되는데,이 경우에는 접합 테이블을 업데이트하는 데 사용할 수있는 레슨의 ID가된다. – Jonathon

+0

나는 본다. 이 모든 것은 PHP에서 미리 정의되어 있습니까? insert_id를 설정하거나 지정할 필요가 없습니다. – Guy

0

이 그것을 당신은 학습에 대해 걱정할 필요 없다

0

이처럼 존재하지 그것에 대해 걱정하지 않아도 문제를 생성하지 않는 일이 생기면 당신은

For example in situations when two users try to create lessons at the same time 

말했다 AS 당신은 모든 것을 같은 형태로 게시하고 있습니다. 데이터를 삽입 할 때 논리를 제어하면됩니다. 그래서 당신은 수업 자료와 교사 목록과 학생들 목록을 제출하게됩니다. 귀하의 코드에서 먼저 수업을 삽입해야하며 (일어날 수있는 모든 오류를 제어하십시오) 수업의 ID를 사용하여 교사와 학생을 삽입 할 수 있습니다. 이전에 말했듯이, 대답을 할 때 삽입 된 ID를 가질 수 있습니다.