「戻る」または「次へ」を押すと、その部分が送信されてデータベース(MySQL)に保存されるマルチパートフォームがあります。唯一の違いは、次のフォームまたは前のフォームに移動するかどうかです。
後続の部分(2番目の部分以降)は、最初の部分のテーブルの子テーブルであることに注意してください。それらは外部キーとして「ePARno」を持っています。
最初の部分はこのスニペットを実行します:
if( isset( $_SESSION[ 'eparno' ] ) ) { //if it's an edit, replace
$eparno = $_SESSION[ 'eparno' ];
$insert_query_0 = mysql_query ("
REPLACE INTO form
(ePARno, caseno, accomplishedby)
VALUES
('$eparno', '$caseno', '$accomplishedby')
");
}
else { //otherwise, it's a fresh insert
$insert_query_0 = mysql_query ("
INSERT INTO form
(caseno, accomplishedby)
VALUES
('$caseno', '$accomplishedby')
");
$eparno = mysql_insert_id();
}
私の問題は、2番目のフォームを押し戻して最初のフォームに移動し、次に押すことでそのフォームに戻るときに発生します。これを行うと、2番目のフォームの挿入された行が挿入されますが([戻る]を押すと)、最初のフォームから[次へ]を押すとテーブルから消えます。(私はphpmyadminを介してデータベースを表示し、同時に戻ると次のボタンを押します)
これは、親行を置き換える最初のフォームと関係があると思います。REPLACEを実行すると、2番目のフォームなど、すでに存在する子行が削除されている可能性があります。
また、戻らなければ順調に進んでいると言わざるを得ません。行が消えることはありません。
私の疑惑には何かメリットがありますか?もしそうなら、どうすればこれを修正できますか?そうでない場合、何が問題になる可能性がありますか?