2016-04-19 22 views
1

私は本当にこれに関する助けが必要で、私の問題に関連する以前の質問を見つけることができませんでした。外部キーと登録フォーム

私は登録フォームを3つのステージに分割しているため、3つのテーブルに分割されています。 phpmyadminで索引付けして外部キー制約を作成したことに留意してください。

第一段階は、ユーザーである(表):

CREATE TABLE `dbtest`.`users`(
`user_id` INT(5) NOT NULL AUTO_INCREMENT PRIMARY KEY, 
`email` VARCHAR(35) NOT NULL, 
`password` VARCHAR(50) NOT NULL, 
UNIQUE(`email`) 
) ENGINE = INNODB; 

ユーザが最初の段階で充填し、データをデータベースに転記され、第一USER_IDは、ユーザが次のステージにリダイレクトされる1となります(表):彼はすべてのデータがデータベースに掲載されます。このフォームに入力するときしかしplayer_idが0である

CREATE TABLE `dbtest`.`personal`(
`player_id` INT(5) NOT NULL, 
`first` VARCHAR(35) NOT NULL, 
`last` VARCHAR(35) NOT NULL, 
`mobile` INT(12) NOT NULL, 
`parentmobile` INT(12) NOT NULL, 
`gender` VARCHAR(6) NOT NULL, 
`address` VARCHAR(50) NOT NULL, 
`city` VARCHAR(25) NOT NULL, 
`postcode` VARCHAR(10) NOT NULL, 
`county` VARCHAR(35) NOT NULL, 
`country` VARCHAR(35) NOT NULL, 
PRIMARY KEY(mobile) 
) ENGINE = INNODB; 

はありません。1.私の質問は、私は、ステージ2でplayer_idし、ステージ1からのuser_idを渡す行う方法です。私は自分のコードを添付している。

ステージ1のためのPHPコード:

enter image description here

ステージ2のためのPHPコード:

enter image description here

+0

非常に悪いアプローチ。ユーザーが他のステージを塗りつぶすことはないが、最初のステージのみを塗りつぶす場合はどうなるのだろうか?あなたのデータベースに部分的なデータがあります。隠されたDIVタブ(つまり、JSを使用してそれらの間を切り替える)で一気にすべてのデータを送信してください。 – mitkosoft

+0

ユーザーのUIに基づいてデータベースを設計しないでください。彼らは2つの非常に異なるものです。ページ(またはフォーム)<>データベース内のテーブル。 @mitkosoftが示唆するようにすべてのデータを収集し、一度にすべて送信してください。フォームの部分的な補完を許可する必要がある場合は、それをテーブルに配置し、ID値を取得して後続のフォームで更新することができますが、必ずしも1つのフォームを1つのフォームにする必要はありません。 –

答えて

0

私はPHPを知らないが、私は他の言語で同様の問題に直面しています。あなたが望むのは、最後に挿入された行のIDですよね?そしてそれを使って登録の他の関連部分を挿入します。

あなたが本当に知っておく必要があるのは、IDを見つける方法です。

オブジェクト指向型

mixed $mysqli->insert_id; 

手続き型

mixed mysqli_insert_id (mysqli $link) 

参考と詳細: http://php.net/manual/en/mysqli.insert-id.php