It mainly describes some of the shopping cart code and demonstrates the php Tutorial code for session operations.
<? Php
//
// Add_item.php:
// Add an item to the shopping cart.
//
Session_start ();
If (session_is_registered ('cart ')){
Session_register ('cart ');
}
Require 'Lib. inc. Php'; // loadproducts ()
Loadproducts (); // load products in $ master_products_list
// Make $ curr_product global
$ Curr_product = array ();
// Loop through all the products and pull up the product
// That we are interested in
Foreach ($ master_products_list as $ prod_id => $ product ){
If (trim ($ prod_id) = trim ($ _ get [id]) {
$ Curr_product = $ product;
}
}
// Register our session
// Session_register ('cart ');
// If (session_is_registered ('cart') echo "registered ";
If ($ _ post [ordered]) {// if they have chosen the product
Array_push ($ _ session [cart] [products], array (trim ($ _ post [id]), $ _ post [quantity]);
$ _ Session [cart] [num_items] + =$ _ post [quantity];
}
?>
<Html>
<Head>
<Title>
<? Php if ($ _ post [ordered]) {?>
Added <? Php echo $ curr_product [name];?> To your shopping basket
<? Php} else {?>
Add <? Php echo $ curr_product [name];?> To your shopping basket
<? Php }?>
</Title>
</Head>
<Body>
<? Php if ($ _ post [ordered]) {?>
<H1> <? Php echo $ curr_product [name];?>
Successfully added to the shopping basket
<A href = "cart. php"> Return to the </a> item list page.
<? Php} else {?>
<H1> add <? Php echo $ curr_product [name];?> To your shopping basket
<Form action = "<? Php echo $ php_self;?> "Method =" post ">
Product Name: <? Php echo $ curr_product [name];?>
<Br>
Product description: <? Php echo $ curr_product [desc];?>
<Br>
Unit Price: RMB <? Php echo $ curr_product [price];?>
<Br>
Item quantity: <input type = "text" size = "7" name = "quantity">
<Input type = "hidden" name = "id" value = "<? Php echo $ _ get [id];?> ">
<Input type = "hidden" name = "ordered" value = "1">
<Input type = "submit" value = "Add to shopping bar">
</Form>
<? Php }?>
</Body>
</Html>
Php code
<? Php
//
// Cart. php: the main file
//
Session_start ();
Require 'Lib. inc. Php ';
// Determine whether cart is registered as the shopping basket session variable. If cart is not registered, the cart variable is registered.
If (session_is_registered ('cart ')){
Session_register ('cart ');
}
// If the shopping basket is not initialized, the shopping basket is initialized.
If (! Isset ($ _ session [cart] [num_items]) {
$ _ Session [cart] = array ("num_items" => 0,
"Products" => array ());
}
// From site_lib.inc, loads the $ master_products_list array
Loadproducts (); // load the item list
?>
<Html>
<Head>
<Title> demonstrate the shopping basket program for session tracking </title>
</Head>
<Body>
<H1> Welcome to the online store
<? Php
If ($ _ session [cart] [num_items]) {// if there is something to show
?>
<H2> items in the current shopping basket <Br>
<Table border = "2" cellpadding = "5" cellspacing = "2">
<Tr>
<Th>
Product Name
</Th>
<Th>
Product Description
</Th>
<Th>
Unit Price
</Th>
<Th>
Quantity
</Th>
<Th>
& Nbsp;
</Th>
</Tr>
<? Php
// Loop through the products
Foreach ($ _ session [cart] [products] as $ I =>$ product ){
$ Product_id = $ product [0];
$ Quantity = $ product [1];
$ Total + = $ quantity *
(Double) $ master_products_list [$ product_id] [price];
?>
<Tr>
<Td>
<? Php echo $ master_products_list [$ product_id] [name];?>
</Td>
<Td>
<? Php echo $ master_products_list [$ product_id] [desc];?>
</Td>
<Td>
<? Php echo $ master_products_list [$ product_id] [price];?>
</Td>
<Td>
<Form action = "change_quant.php" method = "post">
<Input type = "hidden" name = "id" value = "<? Php echo $ I;?> ">
<Input type = "text" size = "3" name = "quantity"
Value = "<? Php echo $ quantity;?> ">
</Td>
<Td>
<Input type = "submit" value = "quantity change">
</Form>
</Td>
</Tr>
<? Php
}
?>
<Tr>
<Td colspan = "2" align = "right">
<B> Total: </B>
</Td>
<Td colspan = "2">
RMB: <? Php echo $ total;?>
</Td>
<Td> & nbsp; </td>
</Tr>
</Table>
<Br>
<Br>
<? Php
}
?>
<H2> items to be sold in the store <Br>
<I>
We provide the following products for sale:
</I>
<Br>
<Table border = "2" cellpadding = "5" cellspacing = "2">
<Tr>
<Th>
Product Name
</Th>
<Th>
Product Description
</Th>
<Th>
Unit Price
</Th>
<Th>
& Nbsp;
</Th>
</Tr>
<? Php
// Show all of the products
Foreach ($ master_products_list as $ product_id => $ item ){
?>
<Tr>
<Td>
<? Php echo $ item [name];?>
</Td>
<Td>
<? Php echo $ item [desc];?>
</Td>
<Td>
$ <? Php echo $ item [price];?>
</Td>
<Td>
<A href = "add_item.php? Id = <? Php echo $ product_id;?> ">
Add to shopping basket
</A>
</Td>
</Tr>
<? Php
}
?>
</Table>
Shopping cart
<? Php
//
// Change_quant.php:
// Change the quantity of an item in the shopping cart.
//
Session_start ();
If (session_is_registered ('cart ')){
Session_register ('cart ');
}
// Typecast to int, making sure we access
// Right element below
$ I = (int) $ _ post [id];
// Save the old number of products for display
// And arithmetic
$ Old_num = $ _ session [cart] [products] [$ I] [1];
If ($ _ post [quantity]) {
$ _ Session [cart] [products] [$ I] [1] =$ _ post [quantity]; // change the quantity
} Else {
Unset ($ _ session [cart] [products] [$ I]); // send the product into oblivion
}
// Update the number of items
$ _ Session [cart] [num_items] = ($ old_num >$ _ post [quantity])?
$ _ Session [cart] [num_items]-($ old_num-$ _ post [quantity]):
$ _ Session [cart] [num_items] + ($ _ post [quantity]-$ old_num );
?>
<Html>
<Head>
<Title>
Quantity modification
</Title>
</Head>
<Body>
<H1> count: <? Php echo $ old_num;?> Change
<? Php echo $ _ post [quantity];?> </H1>
<A href = "cart. php"> Return to the </a> item list page.
</Body>
</Html>
Open a file
<? Php
// Item array
$ Master_products_list = array ();
// Function for loading item data
Function loadproducts (){
Global $ master_products_list;
$ Filename = 'products.txt ';
$ Fp = @ fopen ($ filename, "r ")
Or die ("opening the $ filename File failed ");
@ Flock ($ fp, 1)
Or die ("failed to lock the $ filename File ");
// Read the file content
While ($ line = fgets ($ fp, 1024 )){
List ($ id, $ name, $ desc, $ price) = explode ('|', $ line); // read data in each row, and use |
$ Id = trim ($ id); // remove the first and last special characters
$ Master_products_list [$ id] = array ("name" => $ name, // name
"Desc" => $ desc, // description
"Price" => $ price); // unit price
}
@ Fclose ($ fp) // close the file
Or die ("failed to close the $ filename File ");
}
?>