ホームページ  >  記事  >  バックエンド開発  >  PHPショッピングカートモジュールの徹底した機能解析(機能説明、ソースコード添付)_PHPチュートリアル

PHPショッピングカートモジュールの徹底した機能解析(機能説明、ソースコード添付)_PHPチュートリアル

WBOY
WBOYオリジナル
2016-07-21 15:03:181094ブラウズ

1. ショッピングカートの概要
ショッピングカートは、消費者がオンラインショッピング中に商品を一時的に保管する場所です。その主な機能には、製品の追加、製品の削除、製品数量の変更、製品金額の小計、製品金額の合計、およびショッピング カートのクリアが含まれます。また、注文の作成、注文の印刷、注文のプレビュー、注文の送信、ショッピングのキャンセルなども含まれます。
ショッピングカートの操作手順: まず、Webサイトにログインして商品を閲覧し、指定された商品を購入してショッピングカートページに入り、商品の数量変更、商品の削除、注文内容のクリアを行うことができます。ショッピングカート、買い物の続行など、最後に荷受人情報の入力、注文の作成、注文の印刷とプレビュー、注文の送信およびその他の操作。

2. ホットキーテクノロジー
1. Smarty モジュールのインストールと設定
smarty は、アプリケーションをビューとロジック制御の 2 つの部分に分割します。それは、UI と PHP コードを分離することです。 PHP には組み込みの Smarty テンプレート クラスがありません。これは個別にダウンロードして構成する必要があります。また、Smarty を使用するには、サーバー上の PHP バージョンが少なくとも 4.0.6 である必要があります。 PHP Smarty は http://www.smarty.net/download からダウンロードできます。圧縮パッケージを解凍します。このパッケージには、Smarty クラス ライブラリのすべてのコア ファイルを含む libs ディレクトリが含まれています。これには、smarty.class.php、smarty_Compiler.class.php、config_File.class.php、debug.tpl の 4 つのファイルと、internals と plug-ins の 2 つのディレクトリが含まれています。
libs ディレクトリをサーバーのルート ディレクトリにコピーし、名前を変更します。ここで、libs ディレクトリの名前を Smarty に変更します。これで Smarty テンプレートがインストールされました。
2. Smartyテンプレートの設定
(1) まずSmartyディレクトリの場所を決定します。 Smarty クラス ライブラリはユニバーサルであるため、基本的にどのプロジェクトでもこれを使用します。呼び出しの便宜のため、smarty はルート ディレクトリに配置するのが一般的です。

(2) 異なるファイルを保存するための 4 つの新しいディレクトリ templates_c、configs、cache を作成します。構成ファイルのパスが正しく設定されている限り、新しく作成された 4 つのディレクトリの場所を選択できます。

(3) 設定ファイルを作成します。 Smarty テンプレートが適用される限り、Smarty クラス ライブラリと関連情報が含まれている必要があります。すべてのページの構成を記述するのは非現実的です。最善の方法は、すべての構成情報をファイルに書き込み、インクルードを通じて構成ファイルを呼び出すことです。構成ファイルが作成されると、ルート ディレクトリに保存されます。このモジュール構成ファイル config.php のコードは次のとおりです:

コードをコピーします コードは次のとおりです:

/* サーバーの絶対パスを定義します */
define ('BASE_PATH','E:PHPservices\ ');
/* Smarty ディレクトリのパスを定義します */
define('SMARTY_PATH','SourceCode12

<{セクション名=データループ=$myrow}>

<{$myrow[データ].tb_商品名}> ;
<{$myrow[data].tb_commodity_price}>

<{/section}> ;b) php タグの機能は、PHP スクリプトをテンプレートに直接埋め込むことです。タグの形式は「<{php}>」および「<{/php}>」です。
c) Smarty テンプレートにも同じことが当てはまります。また、if ステートメントと else ステートメントもサポートしており、テンプレート エンジンに適応するためのいくつかの機能が追加されています。 if と /if はペアで指定する必要があります。else 句と elseif 句は次の条件修飾子を使用できます: eq、ne、neq、gt、lt、lte、le、gte、ge、is Even、is od、is not Even 、奇数ではありません、not、mod、div by、even by、odd by、===、!=、>、<、<=、>=。修飾子を使用する場合は、変数または定数とスペースで区切る必要があります。例: 「center」> 申し訳ございませんが、ショッピング カートに商品情報がありません。


<{else}>
<{セクション名=データループ=$myrow}>

<{$myrow[data].tb_commodity_name}>
<{$myrow[data].tb_commodity_price}>


<{/section}>
<{/if}>



(2) PHP コードでテンプレート変数を定義し、テンプレート変数に値を割り当てます

UI のデータは、PHP コードで定義されたテンプレート変数から取得されます。 PHP コードでは、PHP コードの記述を完了し、出力する値をテンプレート変数に代入し、最後に出力用のテンプレート ページを作成します。 a) テンプレート変数への値の割り当ては、カスタム関数 assign() によって完了します。最初のパラメーターは割り当てられる変数の名前、2 番目のパラメーターは変数に割り当てられる値です。 assign() 関数を適用するためのキー コードは次のとおりです:
$smarty->assign("myrow",$array); //assign メソッドを通じて配列 $array のデータを myrow に書き込みます b) 仕様テンプレート ページの作成は、display メソッドを通じて行われます。構文は次のとおりです。
void display(string template[,string cache_id[,string combi_id]])
このメソッドは、テンプレート ページを指定するために使用され、最初の必須パラメータは、有効なテンプレート リソースを指定するもので、2 番目のオプション パラメータはキャッシュ番号を指定し、3 番目のオプション パラメータは、テンプレートを異なるバージョンにコンパイルするときに使用されます。表示メソッドのアプリケーションのキー
コードは次のとおりです:

$smarty->display("index.tpl") // 出力するテンプレート ページ 3 を指定し、セッション ショッピング カートを作成します;セッション ショッピング カートは、主にセッション変数を使用して実装されます。いわゆるショッピング カートは、session_register() 関数によって作成された 2 つのセッション変数です。goodsid には製品の ID が格納され、goodsnum には製品の数量が格納されます。セッションショッピングカートを作成するコードは次のとおりです:


コードをコピーします
コードは次のとおりです: session_start() //セッション変数を初期化します
session_register("goodsid") ); //商品IDを格納するセッション変数を定義する
session_register("goodsnum"); //購入した商品の数量を格納するセッション変数を定義する
?>


session_register() 関数は、ドメイン全体にセッション変数を追加します。構文: boolean session_register(string name);
パラメータ名は、新しいセッション変数の名前を指定するために使用されます。
4. 配列関数を使用して、ショッピングカートに商品が重複して追加されることを避けるために、追加された商品とショッピングに保存されている商品を判断する必要があります。カート。
a)explode()関数を適用して、goodsid変数に格納されている文字列を@を区切り文字とした配列に変換します。
explode() 関数は文字列で構成される配列を返します。各要素は境界点としてセパレータで区切られた部分文字列です。

構文: arrayexplode(string separator,string string,[ing limit])

パラメータの説明:
separator: 必須、文字列を分割する場所を指定します。空の文字列にすることはできません。それ以外の場合、explode() は FALSE
string: 必須、分割される文字列を返します。 limit: オプションで、返される配列要素の最大数を指定します。 limit パラメーターが設定されている場合、返される配列には制限要素までが含まれ、最後の要素には文字列の残りの部分が含まれます。 limit パラメータが負の場合、最後の -limit 要素を除くすべての要素が返されます。

b) in_array() 関数は、指定された製品 ID が配列内に存在するかどうかを判断します。存在する場合、製品はすでにショッピング カート内にあります。存在しない場合は、製品 ID がショッピングに追加されます。カート。

in_inarray() 関数は、配列内の指定された値を検索します。見つかった場合は True を返し、見つからなかった場合は False を返します。

構文: bool in_array(混合値, 配列 array[,bool type])

パラメータの説明:
value: 必須、配列内で検索する値を指定します
array: 必須、検索する配列を指定します。
type: オプション。true に設定すると、検索されたデータと配列の型が同じかどうかを確認します。
ショッピング カート モジュールで、指定された商品がショッピング カートに存在するかどうかを確認するコードは次のとおりです:


コードをコピーします コードは次のとおりです:
session_start() ; //セッション変数を初期化します
session_register ("goodsid"); //商品IDを格納するセッション変数を定義します
session_register("goodsnum") //購入した商品の数量を格納するセッション変数を定義します
if($_SESSION) ["goodsid"]=="" && $_SESSION["goodsnum"]==""){ //セッション変数が空かどうかを判断します
$_SESSION["goodsid"]=$_GET["id"]." @"; //セッション変数が空の場合は、製品のIDを割り当て、@
で区切ります $_SESSION["goodsnum"]="1@"; //セッション変数が空の場合は、それを割り当てます値 1 を @
で区切ります }else { //セッション変数が空でない場合
$array=explode("@",$_SESSION["goodsid"]) // @ を区切り文字として使用して、セッション変数のデータを配列に入れる
if (in_array($_GET["id"],$array){ //指定されたIDが読み取り配列に存在する場合
echo "<script>alert('この商品はショッピングカートに入れてください!');history .back();</script>";
exit;
}
//指定された ID が配列に存在しない場合は、商品が置かれていないことを意味しますショッピングカート内
$_SESSION["goodsid"].= $_GET["id"]."@" //商品をショッピングカートに追加します
$_SESSION["goodsnum"].="1@"; //商品の数量を変更します
}
echo "";
?>


5、入力されたかどうかを確認します製品数量の値は有効です
preg_match() 関数で、送信された製品を判定します。数量の値が正規表現の基準を満たしているかどうかを判断し、満たしている場合は有効で、そうでない場合はプロンプトメッセージが表示されます。プログラムのキーコードは次のとおりです:

コードをコピーします コードは次のとおりです:
$id=$_POST["id"] //プロダクトIDを取得します
$num=$; _POST["goodsnum"] //商品数量を取得
$preg="/^[0-9]*[0-9]$|^[0-9]*[0-9]$/";正規表現を記述します
if($num= =""){ //送信された値が空かどうかを判断します
echo "<script>alert('数量を空にすることはできません!');history.back();< /script>";<br> exit;<br>} else if(!preg_match($preg,$num,$str)){ //送信されたデータが正の整数かどうかを判定します<br> echo "<script>alert('数値正の整数のみを指定できます!');history.back( );</script>";
exit;
}


preg_match() 関数は、指定された正規表現に一致するすべてのコンテンツの文字列を検索し、存在する場合は True を返し、存在しない場合は False を返します。構文は次のとおりです:
構文: int preg_match(string pattern, string sbuject[,arraymatchs[,int flags]])
パラメータの説明:
パターン: 必要なパラメータ、一致する必要がある正規表現
件名: 必須パラメータ、入力文字列が一致する: オプションのパラメータ。出力検索結果の配列。たとえば、$out[0] にはパターン全体に一致する結果が含まれ、$out[1] には括弧内の最初にキャプチャされたサブパターンに一致する結果が含まれます。など
flags: オプションのパラメーター、マーク付き: PREG_OFFSET_CAPTURE、表示される一致する結果ページごとに添付された文字列オフセットを返します

三、機能実装プロセス
1.製品機能を追加します
製品機能を追加する実装原則は、まずショッピングカートを作成し、次に「購入」によって渡された製品ID ($_GET[id])を使用します。商品表示ページ内のリンク])から商品(商品ID)をショッピングカートに追加してください。重複して追加することはできません。ショッピング カートへの商品の追加は、by_commodity.php ファイルを通じて行われます。
まず、ショッピングカートを作成します。
次に、ショッピング カートが空かどうかを確認し、空の場合は商品の ID と数量をショッピング カートに追加します。空でない場合は、追加した商品の ID が既にショッピング カートに存在するかどうかを確認します。プロダクト ID が存在する場合、繰り返し追加することはできません。プロダクト ID が存在しない場合は、そのプロダクト ID がショッピング カートに追加されます。
次のように製品プログラム コードを追加します:

コードをコピーします コードは次のとおりです:

header("Content-type:text/html;charset= utf-8") ;
session_start(); //セッション変数を初期化します
session_register("goodsid"); //商品IDを格納するセッション変数を定義します
session_register("goodsnum") //数量を格納するセッション変数を定義します購入した商品
if($_SESSION[" Goodsid"]=="" && $_SESSION["goodsnum"]==""){ //セッション変数が空かどうかを判定します
$_SESSION["goodsid"]=$_GET ["id"]."@"; //セッション変数が空の場合は、@
で区切って製品のIDを割り当てます。 $_SESSION["goodsnum"]="1@"; //セッション変数の場合が空の場合は値 1 を割り当て、 @
で区切ります }else{ //セッション変数が空でない場合
$array=explode("@",$_SESSION["goodsid"]) // @ を次のように使用します区切り文字、セッション変数のデータ 配列に書き込む
if(in_array($_GET["id"],$array)){ //指定されたIDが配列内に存在するか判定する
echo "<script> alert('商品がショッピングカートに置かれました! ');history.back();</script>";
exit;
}
//指定された ID が配列に存在しない場合は、商品はショッピングカートに追加されていません
$_SESSION ["goodsid"].=$_GET["id"]."@"; //商品をショッピングカートに追加します
$_SESSION["goodsnum"].= "1@"; //商品の数量を変更します
}
echo "<script>window.location.href='shopping_car.php';</script>";
?>

2 , ショッピングカート内の商品を削除する機能の実装
ショッピングカートの削除商品の操作は、「この商品を削除」ハイパーリンクで渡された商品ID($_GET[id])に基づいて行われます。 delete_commodity.php ファイルで、$_GET[id] で渡された値に基づいてショッピング カート内のアイテムを削除します。
まず、$_GET[id]で渡された値を取得します。次に、explode() 関数を使用して、@ を区切り文字として使用して、Session 変数に格納されている製品 ID と数量データを配列に書き込みます。
次に、array_search()関数を適用して、配列内の指定されたIDプロダクトのキー名を取得し、取得したキー名に基づいて配列内の指定されたデータを空に代入します。
最後に、再割り当てした配列の空データをショッピングカートに書き込むと、ショッピングカート内の指定商品の削除が完了します。
コードをコピーします コードは次のとおりです:

session_start(); //セッション変数を初期化します
require("config.php") //smarty テンプレートに接続します
$id=$_GET["id"]; //削除されるID
$arrayid=explode("@",$_SESSION["goodsid"]); //ショッピングカートに格納されている商品IDの文字列を配列に変換
$arraynum=explode("@",$_SESSION [ "goodsnum"]); //ショッピングカートに格納されている商品数の文字列を配列に変換します
$key=array_search($id,$arrayid); //配列で指定されたデータを取得して返しますキー名
$arrayid[$key]="" //返されたキー名に基づいて配列内のデータを空に代入します
$arraynum[$key]="" //返されたキー名に従って代入します配列内のデータ データの割り当ては空です
$_SESSION["goodsid"]=implode("@",$arrayid); //配列内のデータをショッピング カートに再追加します
$_SESSION["goodsnum "]=implode("@" ,$arraynum); //配列内のデータをショッピング カートに再追加します
echo "<script>window.location.href='shopping_car.php';</script&gt ;";<BR> $smarty->display("shopping_car.tpl");<BR>?><br> </div> <br> 削除前の $_SESSION["goodsid"] の値は、$ 削除後は "3@2@5@" ですid=5 $_SESSION["goodsid"] 値は "3@2@@" であるため、セッション内に冗長なデータ @ があります。 <br><strong>解決策: <br></strong><div class="codetitle"> <span style="CURSOR: pointer" onclick="doCopy('code99528')"><u>コードをコピーします</u></span> コードは次のとおりです:</div> <div class="codebody" id="code99528"> <br><?php<br> session_register("goods") //セッション配列を作成します<br> $id=$_GET['id' ];<br> $arraygoods=$_SESSION["グッズ"];<br> if($_SESSION["グッズ"]==""){<br> $_SESSION["グッズ"][$id]="$id,1"; //製品 ID によると、製品が保存され、キー名は $id、キー値は $id,1 (製品 ID と購入製品数量、デフォルトの購入数量は 1)<br> }else{<br> if(array_key_exists ($id,$_SESSION["goods" ])){<br> echo "<script>alert('この商品はショッピングカートに追加されました!');history.back();</script>";
exit;
}
$_SESSION["goods "][$id]="$id,1";
}
?>

商品情報は配列の形式で保存されます、[4] => ; 4、4。キー名は製品ID、値はキー名と購入した製品の数量です。製品の追加・削除は、ID番号から該当する製品の変更情報を検索するだけで行えます。
コードをコピー コードは次のとおりです:

Array
(
[4] => 4,4
[3] => 3,5
[1] => 1,10
[2 ] => 2,1
)

3、注文生成機能の実装
注文生成機能は、データベースから約定した注文情報を読み取り、その内容を再統合して注文を形成します。モデル、オーダー印刷およびオーダープレビュー機能を実装します。注文生成操作は 2 つのファイルによって完了します。1 つは、データベースからデータを読み取り、指定された Smarty テンプレート変数に必要なデータを割り当て、テンプレート ページを指定することです。
コードをコピーします コードは次のとおりです:

session_start();
header("Content-type:text/html;charset= utf-8");
require_once("conn.php");
require_once("config.php") ;
$array=array(); //空の配列を定義します
$ddnumber=base64_decode($_GET["ddno"]);
mysql_query("set names utf8");
$sql=mysql_query("select * from tb_commodity_order_form where ddnumber='".$ddnumber."'",$conn);
$info=mysql_fetch_array($sql);
array_push($array,$info); // 取得した配列値を新しい In に書き込みますarray
$smarty->assign("info",$array);
$array=explode("@",$info["spc"]);
$arraynum=explode("@",$info[ " slc"]);
$totalprice=0; //価格変数を定義します
$arrayinfo=array();
if($array[$i]!=""){
$sqlcart=mysql_query("select * from tb_commodity where tb_commodity_id='".$array[$i]."'",$conn);
$infocart =mysql_fetch_array($sqlcart); //データベース内のデータを読み取ります
$totalprices=$infocart["tb_commodity_price" ]*$arraynum["$i"]; //合計価格を計算します
array_push($infocart,$arraynum[ "$i"]) //データベースから返された配列に購入数量データを書き込みます
array_push( $infocart,$totalprices); //データベースから返された配列に購入数量データを書き込みます
array_push($arrayinfo,$infocart) //作成された新しい配列にソートされたデータをプッシュします
$totalprice+=$infocart[" tb_commodity_price"]*$arraynum["$i"]; //合計価格を計算します
}
}
session_unregister("goods");
if(count($arrayinfo)>0){ // 配列かどうかを判断しますは空です
$gnum=count($arrayinfo);
$smarty->assign( "isShow","T");
$smarty->assign("gnum",$gnum);
$smarty-> ;assign("myrow",$arrayinfo);
$smarty->assign(" totalprice",$totalprice);
}else{
$smarty->assign("isShow","F");
}
$smarty->display("shopping_dd.tpl");
?>

もう 1 つは、shopping_dd.tpl テンプレート ページで、テンプレート変数に格納されているデータを出力し、注文を生成します。

4、ソースコードのダウンロード: クリックしてダウンロード

http://www.bkjia.com/PHPjc/327863.htmlwww.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/327863.html技術記事 1. ショッピングカートの概要 ショッピングカートは、消費者がオンラインショッピング中に商品を一時的に保管する場所です。その主な機能には、商品の追加、商品の削除、商品数量の変更、ビジネス...
が含まれます。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。