3

2ページあります。ユーザーがすべての情報をページ 1 に挿入した後、ページ 2 に移動します。入力された情報はすべて $_POST に正しく保存されるため、次のページでアクセスできます。問題なくmysqlデータベースに挿入することもできます。私がやろうとしているのは、2 ページ目の送信ボタンをクリックした場合にのみ、データベース コードへの挿入を実行することです。私はこれをやってみました:

Page2.php

<script>
$(document).ready(function(e) {
    $("#PaySubmit").click(function() {
        $.ajax({
            url: 'Insert.php'
        });
    });
});
</script>
<input type="submit" name="PaySubmit" id="PaySubmit" value="Continue"/>

Insert.php

try {
    $link = new PDO('mysql:host=****;dbname=****;charset=UTF-8','****','****');
    $first = $_POST["fname"];
    $last = $_POST["lname"];

    $stmt = $link -> prepare("INSERT INTO Conference (`First Name`, `Last Name`) VALUES (:first, :last)");
        $stmt->bindParam(':first', $first);
        $stmt->bindParam(':last', $last);
    $stmt->execute();

} catch(PDOException $e) {
    print "Error!: " . $e->getMessage() . "<br/>";
    die();
}

問題は、2 ページ目の $_POST で送信をクリックすると、2 ページ目のデータに置き換えられるため、1 ページ目のデータにアクセスできなくなることです。これをどうやって進めるかについてのアイデアはありますか?

4

3 に答える 3

5

最初の投稿のすべての値を現在の SESSION に保存します。

$_SESSIONその後、グローバルでそれらにアクセスできます。

serialize functionを見てください。大いに役立つかもしれません。またはjson_encode。これらは、配列を 1 つの変数に格納し、後で取得する場合に非常に便利です。

于 2012-09-19T18:35:38.610 に答える
0

セッションに保存する代わりに、非表示の入力フィールドを使用して、最初のページから 2 番目のページに値を渡すことができます。このようなもの:

foreach($_POST as $k => $v) {
?>
<input type="hidden" name="<?php echo $k; ?>" value="<?php echo $v; ?>" />
<?php
}

もちろん、次のページに投稿する前に、何らかの方法で投稿のデータをサニタイズしたい場合もありますが、これで何をすべきかがわかります。

于 2012-09-19T18:38:52.947 に答える
0

DBconnection をシングルトン クラスとして作成することをお勧めします。2ページ目に移動したらクエリを調整し、2ページ目で送信をクリックしたときに実行します。

于 2012-09-19T18:38:53.223 に答える