1

ミニショッピングカートを作成していますが、セッションからデータを取得してデータベースに書き込む方法があるかどうか疑問に思いました。ユーザーが選択したパーツは、カートに追加されることになっています。それらが完了したら、セッションに保存されたデータを取得し、それをデータベースに書き込んで、別のときにログインしたときにカートが残っているようにするにはどうすればよいですか?

<?php
if (isset($_GET['add'])) {
$quantity = mysql_query('SELECT partID, quantity, catergory FROM computerparts WHERE partID=' . mysql_real_escape_string((int) $_GET['add']));
while ($quantity_row = mysql_fetch_array($quantity)) {
    if ($quantity_row['quantity'] != $_SESSION['index_' . $_GET['add']]) {
        $_SESSION['index_' . $_GET['add']]+='1';
    }
}
header('Location: ' . $page);
}

 if (isset($_GET['delete'])) {
$_SESSION['index_' . (int) $_GET['delete']] = '0';
header('Location: ' . $page);
}

function cart() {
$total = "";
$sub = "";
foreach ($_SESSION as $name => $value) {
    if ($value > 0) {
        if (substr($name, 0, 6) == 'index_') {
            $id = substr($name, 6, (strlen($name) - 6));
            $get = mysql_query('SELECT partID, partName, price FROM computerparts WHERE partID=' . (int) $id);
            while ($get_row = mysql_fetch_array($get)) {
                $sub = $get_row['price'] * $value;
                echo $get_row['partName'] . 'x' . $value . '@ &pound;' . $get_row['price'] . '=' . $sub . '<a href="index.php?delete=' . $id . '">Delete</a> <br />';
            }
        }
        $total += $sub;
    }
}
if ($total == 0) {
    echo 'Your cart is empty';
} else {
    echo 'Total: &pound' . $total;
}
}
?>

簡単にするために、このWebサイトから機能を削除しました。アイテムを購入する必要はありません。ユーザーが必要なアイテムを選択するだけで、仕様を参照できるように、いつでもその情報にアクセスできるようになります。(仕様表)彼が選んだ項目はその表に書き込まれます。現在ログインしているuserIDを使用します。

4

2 に答える 2

0

ファダミー

ユーザーがカートにアイテムを追加した後、カートからアイテムを購入せずにログアウトした場合、セッションデータをデータベースに保存することを考えています。

次に彼が来たら、そのアイテムを次のように表示する必要があります(カートにそのアイテムを追加しましたが、購入していません...)

これはあなたの論理だと思います...そのため、私には1つの答えがあります..

その特定の購入アイテムを purchase_item_by_user テーブルに「フラグ タイプ "Pending" 」で保存できます。

そのため、保留リストにアイテムがあるかどうかをリストで確認する必要があるたびに... (特定の日付または時刻で確認することもできます..)

その後、ユーザーがそのアイテムを購入したときにフラグを「購入済み」に変更したり、ユーザーがそのアイテムをキャンセルした場合はフラグを「キャンセル済み」に設定したりできます。

これは役に立ちます... ありがとう、タルン・マルパニ...

于 2012-05-01T06:30:57.300 に答える
0

私があなたの質問を正しく理解していれば、必要な値はセッション配列に既に保存されています。

その場合、データはセッションに保存されるため、セッションがまだアクティブな場合は、次の方法で値にアクセスできます。$_SESSION['cartItem']

次に、これらの値をデータベースに保存するには、次のリンクを確認してください。

PHP と MySQL データベースへの書き込み。これは mysql データベースであると仮定しています。どのように、またはどのような種類のデータベースに接続しようとしているのかわかりません。異なる場合は明確にしてください。


ここで、テーブル自体で、選択したアイテムを保存し、値を使用して購入済みかどうかを判断します。ユーザーが購入を後日に保存したい場合は、ユーザーが離れるときにプロンプ​​トを表示できます。その場合、値 (この場合は「はい」) を ajax 経由で php 関数に渡すことができます。この関数は、購入が保留中か完了しているかを指定する列を使用して、データベースへのセッション値の送信を開始します。

これを達成する方法をさらに明確にするために、これらのリンクを見てください: AJAX and PHP


これは、現在のユーザーの「カート」がいっぱいかどうかを確認することによっても達成できます。満杯の場合、ユーザーが去ったときに、ユーザーIDを参照するデータベースにデータを自動的に保存できます。したがって、そのユーザーがカートに再度ログインすると、保存され、再びアクセスできるようになります。

onbeforeunloadJavaScript イベントを確認します。これを利用して、顧客が閉じているかどうかを確認したり、閉じたいかどうかを尋ねたり、「カートを保存したいですか?」と尋ねたり、単にそのデータをデータベースに保存して、後でログインできるようにすることもできます。ログアウトに進むときに起動される関数になります。

デモと詳細については、このリンクを確認してください: onbeforeunload イベント


これを行うには非常に多くの方法があるため、上記の手順の単一のメソッドを書き出すのは気が進まないでしょう。ただし、この情報は利用可能ですが、ステートメントを準備するか、PDO を利用して、可能な限り安全な方法で物を転送することを忘れないでください。

参照用リンク:プリペアド ステートメントPDO

*PHPで怒ってシューという音を立てる

于 2012-05-01T06:57:27.433 に答える