1

チェックボックスから情報を取得する配列を作成しました。これは正常に機能していますが、2番目のテーブルのIDが配列データの横に配置されている2番目の入力が必要です。たとえば、ユーザーが私のphpフォームにデータを入力すると、1つのテーブルにIDが生成されますが、私のチェックボックスは2番目のテーブルに保存されます。ユーザーがチェックボックスを選択すると、IDがここに配置されます。私が抱えている問題は、このデータをどこに置くかがわからないことです。

$insertSQL2 = "INSERT INTO Project_course (Proj_id Cour_id) SELECT Course_id FROM courses WHERE 
Code IN (";
foreach ($_POST['CheckboxGroup1'] as $Q){
$Q = mysql_real_escape_string($Q);
$insertSQL2.= "'$Q', ";
 } 
 $insertSQL2 = rtrim($insertSQL2, ", ");
$insertSQL2 .= ")";

Proj_idはIDを移動する必要がある場所であり、Cour_idはチェックボックスが保存される場所です。これに加えて、mysqlテーブルの関係は、1つの列を空白にすることはできないことを意味するため、同時に発生する必要があります。

私はこれが長い間風が吹いていたことを知っているので、どんな助けでもありがたいことに受け入れられます

4

1 に答える 1

2

私があなたの質問を正しく理解している場合、フォームは最初にプロジェクトデータを保存し、次に-このプロジェクトに関連するいくつかのコースデータを保存します。

ところで-私が最初に提案することは、PDOを優先して純粋なmysql_*関数を残すことです。しかし、これはオフトピックです。

とにかく-最初にあなたはおそらく次のようなものを実行します

$sql = "INSERT INTO project (col1, col2) VALUES (blah1, blah2)";
mysql_query($sql)

次に、呼び出すだけで新しいプロジェクトIDを確認できます

$projectID =  mysql_insert_id();

そして、

foreach ($_POST['CheckboxGroup1'] as $key => $val)
{
    $_POST['CheckboxGroup1'][$key] =  mysql_real_escape_string($val);
}
$sql = "INSERT INTO project_course(project_id, course_id) SELECT ".$projectID.", course_id FROM courses WHERE code IN (".implode(", ", $_POST['CheckboxGroup1']).")";

更新-プロジェクトテーブルにすでにプロジェクトがある場合は、いくつかの方法でプロジェクトIDを取得できます。たとえば、を使用しSELECT project_id FROM project ORDER BY project_id DESC LIMIT 1ます。

于 2012-05-18T23:35:26.013 に答える