完全な助けを得るには、もう少し勉強する必要があります。グーグルをして、次のような記事を読むことをお勧めします。
http://www.sitepoint.com/mysql-foreign-keys-quicker-database-development/
[編集]
質問を編集し、必要な変更を加えていただき、ありがとうございます。
サンプルデータベーススキーマ
カテゴリ表
CATEGORY_ID int auto_increment (11) (primary key)
CATEGORY
映画の表:
ID int auto_increment (Primary Key)
TITLE,
DIRECTOR,
MOVIE_YEAR
CATEGORY_ID int(11) (Foreign Key)
これで、外部キーの意味がわかります。上記のスキーマは、質問とサンプルに基づいています。年の列の名前を変更しただけです。予約語と競合する可能性のある単語や名前には注意が必要です。私はそれをMOVIE_YEARと呼んだ。TITLEフィールドは一意ではありません。その必要はありません。必要に応じて重複を防ぐために、データベースに一致するものを照会できます。しかし、2つの映画が同じ名前である可能性があるので、それらのIDはそれらを区別する必要があります。
Mysql
テーブルに2つの自動インクリメント列は必要ありません。カテゴリテーブルを作成し、カテゴリの値をロードすることから始めます。Id列は自動インクリメントする場合としない場合があります。そうでない場合は、手動でIDを指定する必要があります。次に、moviesテーブルを作成します。あなたは1対多の関係をしています。つまり、1つのカテゴリが映画テーブルの多くの映画と一致する可能性があります。したがって、0があれば、エラーは発生しません。この問題は、PHPスクリプトによって解決されます。列はnull以外に設定されている可能性があるため、デフォルト値が提供されます。
PHPスクリプティング
PHPでは、カテゴリテーブルからドロップダウン選択やクリック可能なリンクなどに値をプルして、非表示のフォーム要素に渡すコードを作成します。選択を使用すると、より速くなる可能性があります(以下の例を参照)。新しいムービーを追加するために必要なselectおよびその他のフォーム要素は、1つのhtmlフォームになります。したがって、フォームを送信すると、データがムービーテーブルに追加されます。そのデータには、ユーザーが挿入しているcategory_idが含まれます。これにより、現在の0が置き換えられます。
選択ドロップダウンの作成
category_id列をnull以外に設定した場合、0の方が幸せです。何も奇妙なことはありません。更新中、同じプロセスが繰り返されます。選択には、以下に示すような特別な形式があることに注意してください。
<?php while($row = mysqli_fetch_assoc($connection, $recordset)){ ?>
<select name='category_id' id='categories_id'>
<options value='<?php echo $row['category_id'] ?>'><?php echo $row['category_name'] ?></option>
</select>
<?php } ?>
これらの値はデータベースから取得する必要があり、選択メニューに入力されます。これで始められるはずです。したがって、現在使用しているデータベースを使用して、PHP側で作業してみてください。PHPコードをお持ちの場合は、それを表示して、すべてを微調整することができます。
賛成票と反対票を忘れてください、私たちはここで競争に参加していません。それは評判と呼ばれます。たくさんあるようです。:)
レコードの表示
表示は難しい部分です。そこで参加する必要があります。次の行の何か:
$sql='SELECT * FROM movies LEFT JOIN category ON movies.category_id = category.id';
$recordset_all = mysqli_query($connection, $sql);
そのようなものはあなたに映画のすべての記録とカテゴリーの一致する記録を与えるでしょう。そうすれば、すべての映画で機能するカテゴリ名が得られます。また、列名の競合はないように思われるため、すべて問題ないはずです。一致する行のみが必要な場合は、LEFTという単語を削除して、映画の外部キーと一致するcategory_idを持たない映画が選択されないようにします。
小見出し
カテゴリ名の小見出しに行をロードする場合は、ケースが複雑になります。この場合、2つのデータベース選択を実行し、対応する映画を呼び出して返す関数を作成する必要があります。より良い方法があるかもしれません。必要に応じて、その部分に来たら修正します。