php 카 트 기능 구현(상)

37560 단어 php쇼핑 카 트
본 고 는 두 편 으로 나 뉘 어 phop 이 카 트 기능 을 실현 하 는 것 을 소개 하 는데 어느 정도 참고 가치 가 있 으 므 로 여러분 들 이 좋아 하 실 것 이 라 고 믿 습 니 다.
1.수요 분석
 우 리 는 데이터 베 이 스 를 사용자 의 브 라 우 저 에 연결 하 는 방법 을 찾 아야 한다.사용 자 는 목록 에 따라 상품 을 조회 할 수 있다. 사용 자 는 이후 의 구 매 를 위해 상품 목록 에서 상품 을 선택 할 수 있어 야 한다.우리 도 그들 이 선택 한 물건 을 기록 할 수 있어 야 한다. 사용자 가 구 매 를 완성 하면 그들의 주문 서 를 합산 하여 운송 상품 의 세부 사항 을 얻 고 지불 을 처리 해 야 한다. 관리자 가 위 에 도서 와 디 렉 터 리 를 추가 하고 편집 할 수 있 도록 관리 인터페이스 를 만 듭 니 다.
2.해결 방안
2.1 사용자 보기

2.2 관리자 보기

2.3 북 오 라마 의 파일 목록

3.데이터베이스 3.1 생 성 북 실현sc 데이터베이스 의 SQL 코드

CREATE DATABASE book_sc; #  book_sc    
 
USE book_sc; #  book_sc    
 
CREATE TABLE customers #      
( 
 customerid INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, 
 name CHAR(60) NOT NULL, 
 address CHAR(80) NOT NULL, 
 city CHAR(30) NOT NULL, 
 state CHAR(10), 
 zip CHAR(10), 
 country CHAR(20) NOT NULL 
); 
 
CREATE TABLE orders #      
( 
 orderid INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, 
 customerid INT UNSIGNED NOT NULL, 
 amount FLOAT(6,2), 
 date DATE NOT NULL, 
 order_status CHAR(10), 
 ship_name CHAR(60) NOT NULL, 
 ship_address CHAR(80) NOT NULL, 
 ship_city CHAR(30) NOT NULL, 
 ship_state CHAR(20), 
 ship_zip CHAR(10), 
 ship_country CHAR(20) NOT NULL 
); 
 
CREATE TABLE books #      
( 
 isbn CHAR(13) NOT NULL PRIMARY KEY, 
 author CHAR(80), 
 title CHAR(100), 
 catid INT UNSIGNED, 
 price FLOAT(4,2) NOT NULL, 
 description VARCHAR(255) 
); 
 
CREATE TABLE categories #      
( 
 catid INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, 
 catname CHAR(60) NOT NULL 
); 
 
CREATE TABLE order_items #      
( 
 orderid INT UNSIGNED NOT NULL, 
 isbn CHAR(13) NOT NULL, 
 item_price FLOAT(4,2) NOT NULL, 
 quantity TINYINT UNSIGNED NOT NULL, 
 PRIMARY KEY(orderid,isbn) 
); 
 
CREATE TABLE admin #     
( 
 username char(16) NOT NULL PRIMARY KEY, 
 password CHAR(40) NOT NULL 
); 
 
GRANT SELECT,INSERT,UPDATE,DELETE 
on book_sc.* 
to book_sc@localhost IDENTIFIED by 'password'; 
3.2 데이터베이스 테스트 데이터 문서

USE book_sc; 
 
INSERT INTO books VALUES ('0672329166','Luke Welling and Laura Thomson','PHP and MySQL Web Development',1,49.99, 
'PHP & MySQL Web Development teaches the reader to develop dynamic, secure e-commerce web sites. You will learn to integrate and implement these technologies by following real-world examples and working sample projects.'); 
INSERT INTO books VALUES ('067232976X','Julie Meloni','Sams Teach Yourself PHP, MySQL and Apache All-in-One',1,34.99, 
'Using a straightforward, step-by-step approach, each lesson in this book builds on the previous ones, enabling you to learn the essentials of PHP scripting, MySQL databases, and the Apache web server from the ground up.'); 
INSERT INTO books VALUES ('0672319241','Sterling Hughes and Andrei Zmievski','PHP Developer\'s Cookbook',1,39.99, 
'Provides a complete, solutions-oriented guide to the challenges most often faced by PHP developers\r
Written specifically for experienced Web developers, the book offers real-world solutions to real-world needs\r
'); INSERT INTO categories VALUES (1,'Internet'); INSERT INTO categories VALUES (2,'Self-help'); INSERT INTO categories VALUES (5,'Fiction'); INSERT INTO categories VALUES (4,'Gardening'); INSERT INTO admin VALUES ('admin', sha1('admin'));
4.온라인 디 렉 터 리 구현

 홈 페이지-디 렉 터 리
다음 코드 로 구현:
4.1 index.php

<?php 
 
/** 
 * @author switch 
 * @copyright 2015 
 *     ,           
 */ 
 //require_once   require      ,     PHP              ,          。 
 require_once('book_sc_fns.php'); 
 
 session_start(); //     
 do_html_header('Welcome to Book-O-Rama'); //   
 
 echo "<p>Please choose a category:</p>"; 
 
 $cat_array = get_categories(); //         
 
 display_categories($cat_array); //       
 
 if(isset($_SESSION['admin_user'])) //      ,        
 display_button("admin.php","admin-menu","Admin Menu"); 
 do_html_footer(); //   
?> 
4.2 book_fns.php 파일 의 함수 getcategories()

function get_categories() //            
 { 
 $conn = db_connect(); //      
 $query = "select catid,catname from categories"; 
 $result = @$conn ->query($query); 
 if(!$result) //    ,  false 
 return false; 
 $num_cats = @$result ->num_rows; 
 if($num_cats == 0) //       ,  false 
 return false; 
 $result = db_result_to_array($result); 
 return $result; 
 } 
4.3 output_fns.php 파일 의 함수 displaycategories()

function display_categories($cat_array) //     
 { 
 if(!is_array($cat_array)) 
 { 
 echo "<p>No categories currently available</p>"; 
 return; 
 } 
 echo "<ul>"; 
 foreach($cat_array as $row) 
 { 
 $url = "show_cat.php?catid=". $row['catid']; 
 $title = $row['catname']; 
 echo "<li>"; 
 do_html_URL($url,$title); 
 echo "</li>"; 
 } 
 echo "</ul>"; 
 echo "<hr/>"; 
 } 
4.4 db_fns.php 파일 의 함수 dbresult_to_array()

function db_result_to_array($result) //      
 { 
 $res_array = array(); 
 
 for($count = 0; $row = $result ->fetch_assoc(); $count++) 
 $res_array[$count] = $row; 
 
 return $res_array; 
 } 

인터넷 목록 의 모든 도서
다음 코드 로 구현:
4.5 show_cat.php

<?php 
 
/** 
 * @author switch 
 * @copyright 2015 
 *               
 */ 
 //require_once   require      ,     PHP              ,          。 
 require_once('book_sc_fns.php'); 
 
 session_start(); 
 
 @$catid = $_GET['catid']; 
 $name = get_category_name($catid); 
 
 do_html_header($name); 
 
 $book_array = get_books($catid); 
 
 display_books($book_array); 
 
 //      ,         
 if(isset($_SESSION['admin_user'])) 
 { 
 display_button("index.php","continue","Continue Shopping"); 
 display_button("admin.php","admin-menu","Admin Menu"); 
 display_button("edit_category_form.php?catid=". $catid,"edit-category","Edit Category"); 
 } 
 else //          
 { 
 display_button("index.php","continue-shopping","Continue Shopping"); 
 } 
 do_html_footer(); 
?> 
4.6 book_fns.php 파일 의 함수 getcategory_name()

function get_category_name($catid) //      
 { 
 $conn = db_connect(); //      
 $query = "select catname from categories where catid = '". $catid ."'"; 
 $result = @$conn ->query($query); 
 if(!$result) //    ,        
 return false; 
 
 $num_cats = @$result ->num_rows; 
 
 if($num_cats == 0) //    ,       
 return false; 
 $row = $result ->fetch_object(); 
 return $row ->catname; 
 } 

4.8 book_fns.php 파일 의 함수 getbooks()

function get_books($catid) //          
 { 
 if((!$catid) || ($catid == '')) //    ID   
 return false; 
 
 $conn = db_connect(); 
 $query = "select * from books where catid = '". $catid ."'"; 
 $result = @$conn ->query($query); 
 if(!$result) //    ,        
 return false; 
 
 $num_books = @$result ->num_rows; 
 
 if($num_books == 0) //    ,       
 return false; 
 
 $result = db_result_to_array($result); 
 return $result; 
 } 

4.9 output_fns 파일 의 함수 displaybooks()

function display_books($book_array) //     
 { 
 if(!is_array($book_array)) 
 echo "<p>No books currently available in this category</p>"; 
 else //   ,   
 { 
 echo "<table width = \"100%\" border=\"0\">"; 
 
 foreach($book_array as $row) 
 { 
 $url = "show_book.php?isbn=". $row['isbn']; 
 echo "<tr><td>"; 
 //        
 if(@file_exists("images/". $row['isbn'] .".jpg")) 
 { 
 $title = "<img src=\"images/". $row['isbn'] .".jpg\" style=\"border: 1px solid black\"/>"; 
 do_html_URL($url,$title); 
 } 
 else 
 echo " "; 
 
 echo "</td><td>"; 
 $title = $row['title'] ." by ". $row['author']; 
 do_html_URL($url,$title); 
 echo "</td></tr>"; 
 } 
 echo "</table>"; 
 } 
 echo "<hr/>"; 
 } 

PHP and MySQL 웹 개발 에 대한 자세 한 정보
다음 코드 로 구현:
4.10 show_book.php

<?php 
 /** 
 * @author switch 
 * @copyright 2015 
 *             
 */ 
 //require_once   require      ,     PHP              ,          。 
 require_once('book_sc_fns.php'); 
 
 session_start(); 
 
 $isbn = $_GET['isbn']; 
 
 $book = get_book_details($isbn); 
 do_html_header($book['title']); 
 display_book_details($book); 
 
 //       
 $target = "index.php"; 
 if($book['catid']) 
 $target = "show_cat.php?catid = ". $book['catid']; 
 
 //      ,       
 if(check_admin_user()) 
 { 
 display_button("edit_book_form.php?isbn=". $isbn,"edit-item","Edit Item"); 
 display_button("admin.php","admin-menu","Admin Menu"); 
 display_button($target,"continue","Continue"); 
 } 
 else 
 { 
 display_button("show_cart.php?new=". $isbn,"add-to-cart","Add". $book['title']." To My Shopping Cart"); 
 display_button($target,"continue-shopping","Continue Shopping"); 
 } 
 do_html_footer(); 
?> 
4.11 book_fns.php 파일 의 함수 getbook_details()

function get_book_details($isbn) //                 
 { 
 if((!$isbn) || ($isbn == '')) //           
 return false; 
 
 $conn = db_connect(); //      
 $query = "select * from books where isbn = '". $isbn ."'"; 
 $result = @$conn ->query($query); 
 if(!$result) //    ,        
 return false; 
 $result = @$result ->fetch_assoc(); 
 return $result; 
 } 

4.12 output_fns.php 파일 의 함수 displaybook_details()

function display_book_details($book) //         
 { 
 if(is_array($book)) 
 { 
 echo "<table><tr>"; 
 //        
 if(@file_exists("images/". $book['isbn'] .".jpg")) 
 { 
 $size = getimagesize("images/". $book['isbn'] .".jpg"); 
 if(($size[0] > 0) && ($size[1] > 0)) 
 { 
 echo "<td><img src=\"images/". $book['isbn'] .".jpg\" style=\"border: 1px solid black\"/></td>"; 
 } 
 } 
 echo "<td><ul>"; 
 echo "<li><strong>Author:</strong>"; 
 echo $book['author']; 
 echo "</li><li><strong>ISBN:</strong>"; 
 echo $book['isbn']; 
 echo "</li><li><strong>Our Price:</strong>"; 
 echo number_format($book['price'],2); 
 echo "</li><li><strong>Description:</strong>"; 
 echo $book['description']; 
 echo "</li></ul></td></tr></table>"; 
 } 
 else 
 { 
 echo "<p>The details of this book cannot be displayed at this time.</p>"; 
 } 
 echo "<hr/>"; 
 } 
5.카 트 구현

인 자 를 사용 하지 않 는 스 크 립 트 는 카 트 의 내용 만 표시 합 니 다.

인자 new 가 있 는 스 크 립 트 는 카 트 에 아 이 템 을 추가 합 니 다.
다음 코드 로 구현:
5.1 show_cart.php

<?php 
 
/** 
 * @author switch 
 * @copyright 2015 
 *           。            
 */ 
 //require_once   require      ,     PHP              ,          。 
 require_once('book_sc_fns.php'); 
 
 session_start(); 
 
 @$new = $_GET['new']; 
 
 if($new) 
 { 
 if(!isset($_SESSION['cart'])) //        
 { 
 $_SESSION['cart'] =array(); 
 $_SESSION['items'] = 0; 
 $_SESSION['total_price'] = '0.00'; 
 } 
 
 if(isset($_SESSION['cart'][$new])) 
 { 
 $_SESSION['cart'][$new]++; 
 } 
 else 
 { 
 $_SESSION['cart'][$new] = 1; 
 } 
 
 $_SESSION['total_price'] = calculate_price($_SESSION['cart']); 
 $_SESSION['items'] = calculate_items($_SESSION['cart']); 
 } 
 
 if(isset($_POST['save'])) 
 { 
 foreach($_SESSION['cart'] as $isbn => $qty) 
 { 
 if($_POST[$isbn] == '0') 
 unset($_SESSION['cart'][$isbn]); 
 else 
 $_SESSION['cart'][$isbn] = $_POST[$isbn]; 
 } 
 
 $_SESSION['total_price'] = calculate_price($_SESSION['cart']); 
 $_SESSION['items'] = calculate_items($_SESSION['cart']); 
 } 
 
 do_html_header("Your shopping cart"); 
 
 if((@$_SESSION['cart']) && (array_count_values($_SESSION['cart']))) 
 { 
 display_cart($_SESSION['cart']); 
 } 
 else 
 { 
 echo "<p>There are no items in your cart</p><hr/>"; 
 } 
 
 $target = "index.php"; 
 
 //              ,       
 if($new) 
 { 
 $details = get_book_details($new); 
 if($details['catid']) 
 { 
 $target = "show_cat.php?catid=". $details['catid']; 
 } 
 } 
 
 display_button($target,"continue-shopping","Continue Shopping"); 
 
 //SSL  --    ,PS:   ,       
// $path = $_SERVER['PHP_SELF']; //     
// $server = $_SERVER['SERVER_NAME']; //      
// $path = str_replace('show_cart.php','',$path); 
// display_button("https://". $server . $path ."checkout.php","go-to-checkout","Go To Checkout"); 
 
 // SSL   
 display_button("checkout.php","go-to-checkout","Go To Checkout"); 
 
 do_html_footer(); 
?> 
5.2 output_fns.php 파일 의 함수 displaycart()

function display_cart($cart,$change = true,$images = 1) //      
 { 
 echo "<table border=\"0\" width=\"100%\" cellspacing=\"0\"> 
 <form action=\"show_cart.php\" method=\"post\"> 
 <tr> 
 <th colspan=\"". (1 + $images) ."\" bgcolor=\" #cccccc\">Item</th> 
 <th bgcolor=\"#cccccc\">Price</th> 
 <th bgcolor=\"#cccccc\">Quantity</th> 
 <th bgcolor=\"#cccccc\">Total</th> 
 </tr>"; 
 //          
 foreach($cart as $isbn => $qty) 
 { 
 $book = get_book_details($isbn); 
 echo "<tr>"; 
 if($images == true) 
 { 
 echo "<td align=\"left\">"; 
 if(file_exists("images/". $isbn .".jpg")) 
 { 
 $size = getimagesize("images/". $isbn .".jpg"); 
 if(($size[0] > 0) && ($size[1] > 1)) //     
 { 
 echo "<img src=\"images/". $isbn .".jpg\" 
 style=\"border: 1px solid black\" 
 width=\"". ($size[0] / 3) ."\" 
 height=\"". ($size[1] / 3) ."\"/>"; 
 } 
 } 
 else 
 echo " "; 
 echo "</td>"; 
 } 
 echo "<td align=\"left\"> 
 <a href=\"show_book.php?isbn=". $isbn ."\">". $book['title'] ."</a> by". $book['author'] ."</td> 
 <td align=\"center\">\$". number_format($book['price'],2) ."</td><td align=\"center\">"; 
 
 //         
 if ($change == true) 
 { 
 echo "<input type=\"text\" name=\"".$isbn."\" value=\"".$qty."\" size=\"3\">"; 
 } 
 else 
 { 
 echo $qty; 
 } 
 echo "</td><td align=\"center\">\$".number_format($book['price']*$qty,2)."</td></tr>
"; } // echo "<tr> <th colspan=\"". (2 + $images) ."\" bgcolor = \"#cccccc\"> </th> <th align = \"center\" bgcolor=\"#cccccc\">". $_SESSION['items'] ."</th> <th align = \"center\" bgcolor=\"#cccccc\">\$". number_format($_SESSION['total_price'],2) ."</th></tr>"; // if($change == true) { echo "<tr> <td colspan = \"". (2 + $images) ."\"> </td> <td align = \"center \"> <input type=\"hidden\" name=\"save\"value=\"true\" /> <input type = \"image\" src = \"images/save-changes.gif\" border = \" 0 \" alt = \" Save Changes \" /> </td> <td> </td> </tr>"; } echo "</form></table>"; }
5.3 book_fns.php 파일 의 함수 calculateprice()

function calculate_price($cart) //           
 { 
 $price = 0.0; 
 if(is_array($cart)) 
 { 
 $conn = db_connect(); 
 foreach($cart as $isbn => $qty) 
 { 
 $query = "select price from books where isbn ='". $isbn ."'"; 
 $result = $conn ->query($query); 
 if($result) 
 { 
 $item = $result ->fetch_object(); 
 $item_price = $item ->price; 
 $price += $item_price * $qty; 
 } 
 } 
 } 
 return $price; 
 } 
5.4 book_fns.php 파일 의 함수 calculateitems()

function calculate_items($cart) //            
 { 
 $items = 0; 
 if(is_array($cart)) 
 { 
 foreach($cart as $isbn => $qty) 
 $items += $qty; 
 } 
 return $items; 
 } 


고객 의 상세 한 정 보 를 얻다
다음 코드 로 구현:
5.5 checkout.php

<?php 
 
/** 
 * @author switch 
 * @copyright 2015 
 *             。         
 */ 
 //require_once   require      ,     PHP              ,          。 
 require_once('book_sc_fns.php'); 
 
 session_start(); 
 
 do_html_header("Checkout"); 
 
 if((@$_SESSION['cart']) && (array_count_values($_SESSION['cart']))) 
 { 
 display_cart($_SESSION['cart'],false,0); 
 display_checkout_form(); 
 } 
 else 
 { 
 echo "<p>Thers are no items in your cart</p>"; 
 } 
 
 display_button("show_cart.php","continue-shopping","Continue Shopping"); 
 
 do_html_footer(); 
?> 
5.6 output_fns.php 파일 의 displaycheckout_form()

function display_checkout_form() //        
 { 
 ?> 
 <br /> 
 <table border="0" width="100%" cellspacng="0"> 
 <form action="purchase.php" method="post"> 
 <tr> <!--    --> 
 <th colspan="2" bgcolor="#cccccc">Your Details</th> 
 </tr> 
 <tr> 
 <td>Name</td> 
 <td><input type="text" name="name" value="" maxlength="40" size="40"/></td> 
 </tr> 
 <tr> 
 <td>Address</td> 
 <td><input type="text" name="address" value="" maxlength="40" size="40"/></td> 
 </tr> 
 <tr> 
 <td>City/Suburb</td> 
 <td><input type="text" name="city" value="" maxlength="20" size="40"/></td> 
 </tr> 
 <tr> 
 <td>State/Province</td> 
 <td><input type="text" name="state" value="" maxlength="20" size="40"/></td> 
 </tr> 
 <tr> 
 <td>Postal Code or Zip Code</td> 
 <td><input type="text" name="zip" value="" maxlength="10" size="40"/></td> 
 </tr> 
 <tr> 
 <td>Country</td> 
 <td><input type="text" name="country" value="" maxlength="10" size="40"/></td> 
 </tr> 
 
 <tr> <!--    --> 
 <th colspan="2" bgcolor="#cccccc">Shipping Address(leave blank if as above)</th> 
 </tr> 
 <tr> 
 <td>Name</td> 
 <td><input type="text" name="ship_name" maxlength=""/></td> 
 </tr> 
 <tr> 
 <td>Address</td> 
 <td><input type="text" name="ship_address" value="" maxlength="40" size="40"/></td> 
 </tr> 
 <tr> 
 <td>City/Suburb</td> 
 <td><input type="text" name="ship_city" value="" maxlength="20" size="40"/></td> 
 </tr> 
 <tr> 
 <td>State/Province</td> 
 <td><input type="text" name="ship_state" value="" maxlength="20" size="40"/></td> 
 </tr> 
 <tr> 
 <td>Postal Code or Zip Code</td> 
 <td><input type="text" name="ship_zip" value="" maxlength="10" size="40"/></td> 
 </tr> 
 <tr> 
 <td>Country</td> 
 <td><input type="text" name="ship_country" value="" maxlength="20" size="40"/></td> 
 </tr> 
 <tr> 
 <td colspan="2" align="center"> 
 <p> 
 <strong>Please press Purchase to confirm your purchase, or Continue Shopping to add or remove items.</strong> 
 </p> 
 <?php display_form_button("purchase","Purchase There Items"); ?> 
 </td> 
 </tr> 
 </form> 
 </table> 
 <hr /> 
 <?php 
 } 

이미 정 보 를 기입 한 주문서

고객 신용카드 정보 획득
다음 코드 로 구현:
5.7 purchase.php

<?php 
 
/** 
 * @author switch 
 * @copyright 2015 
 *           
 */ 
 //require_once   require      ,     PHP              ,          。 
 require_once('book_sc_fns.php'); 
 
 session_start(); 
 
 do_html_header("Checkout"); 
 
 //     
 $name = $_POST['name']; 
 $address = $_POST['address']; 
 $city = $_POST['city']; 
 $zip = $_POST['zip']; 
 $country = $_POST['country']; 
 
 //         
 if(($_SESSION['cart']) && ($name) && ($address) && ($city) && ($zip) && ($country)) 
 { 
 if(insert_order($_POST) != false) 
 { 
 display_cart($_SESSION['cart'],false,0); 
 
 display_shipping(calculate_shipping_cost()); 
 
 display_card_form($name); 
 
 display_button("show_cart.php","continue-shopping","Continue Shopping"); 
 } 
 else 
 { 
 echo "<p>Could not store data, please try again.</p><hr/>"; 
 display_button('checkout.php','back','Back'); 
 } 
 } 
 else 
 { 
 echo "<p>You did not fill in all the fields, please try again.</p><hr/>"; 
 display_button('checkout.php','back','Back'); 
 } 
 do_html_footer(); 
?> 
5.8 order_fns.php 파일 의 함수 insertorder()

function insert_order($order_details) //           
 { 
 extract($order_details); 
 
 //            
 if((!$ship_name) && (!$ship_address) && (!$ship_city) && (!$ship_state) && (!$ship_zip) &&(!$ship_country)) 
 { 
 $ship_name = $name; 
 $ship_address = $address; 
 $ship_city = $city; 
 $ship_state = $state; 
 $ship_zip = $zip; 
 $ship_country = $country; 
 } 
 
 //      
 $conn = db_connect(); 
 
 //    ,         
 $conn ->autocommit(false); 
 
 $query = "select customrid from customers where 
 name ='". $name ."' and address = '". $address ."' 
 and city = '". $city ."' and state = '". $state ."' 
 and zip = '". $zip ."' and country = '". $country ."'"; 
 
 $result = $conn ->query($query); 
 
 if(@$result ->num_rows > 0) 
 { 
 $customer = $result ->fetch_object(); 
 $customerid = $customer ->customerid; 
 } 
 else 
 { 
 $query = "insert into customers values 
 ('','". $name ."','". $address ."','". $city ."','". $state ."','". $zip ."','". $country ."')"; 
 $result = $conn ->query($query); 
 
 if(!$result) 
 return false; 
 } 
 
 $customerid = $conn ->insert_id; //           ID 
 
 $date = date("Y-m-d"); 
 
 $query ="insert into orders values 
 ('','". $customerid ."','". $_SESSION['total_price'] ."','". $date ."','PARTIAL','". $ship_name ."','". $ship_address ."','". $ship_city ."','". $ship_state ."','". $ship_zip ."','". $ship_country ."')"; 
 
 $result = $conn ->query($query); 
 if(!$result) 
 return false; 
 
 $query = "select orderid from orders where 
 customerid ='". $customerid ."' and 
 amount > (". $_SESSION['total_price'] ."-.001) and 
 amount < (". $_SESSION['total_price'] ."+.001) and 
 date ='". $date ."' and 
 order_status = 'PARTIAL' and 
 ship_name ='". $ship_name ."' and 
 ship_address ='". $ship_address ."' and 
 ship_city ='". $ship_city ."' and 
 ship_state ='". $ship_state ."' and 
 ship_zip ='". $ship_zip ."' and 
 ship_country ='". $ship_country ."'"; 
 
 $result = $conn ->query($query); 
 
 if($result ->num_rows > 0) 
 { 
 $order = $result ->fetch_object(); 
 $orderid = $order ->orderid; 
 } 
 else 
 return false; 
 
 foreach($_SESSION['cart'] as $isbn => $quantity) 
 { 
 $detail = get_book_details($isbn); 
 $query = "delete from order_items where 
 orderid = '". $orderid ."' and isbn = '". $isbn ."'"; 
 $result = $conn ->query($query); 
 
 $query = "insert into order_items values 
 ('". $orderid ."','". $isbn ."',". $detail['price'] .",$quantity)"; 
 $result = $conn ->query($query); 
 if(!$result) 
 return false; 
 } 
 
 //    ,       
 $conn ->commit(); 
 $conn ->autocommit(true); 
 
 return $orderid; 
 } 
5.9 output_fns.php 파일 의 함수 displayshipping()

function display_shipping($shipping) //          
 { 
 ?> 
 <table border="0" width="100%" cellspacing="0"> 
 <tr> 
 <td align="left">Shipping</td> 
 <td align="right"> <?php echo number_format($shipping, 2); ?></td> 
 </tr> 
 <tr> 
 <th bgcolor="#cccccc" align="left">TOTAL INCLUDING SHIPPING</th> 
 <th bgcolor="#cccccc" align="right">$ <?php echo number_format($shipping+$_SESSION['total_price'], 2); ?></th> 
 </tr> 
 </table> 
 <br /> 
 <?php 
 } 
5.10 output_fns.php 파일 의 함수 displaycard_form()

function display_card_form($name) //        
 { 
 ?> 
 <table border="0" width="100%" cellspacing="0"> 
 <form action="process.php" method="post"> 
 <tr> 
 <th colspan="2" bgcolor="#cccccc">Credit Card Details</th> 
 </tr> 
 <tr> 
 <td>Type</td> 
 <td> 
 <select name="card_type"> 
 <option value="VISA">VISA</option> 
 <option value="MasterCard">MasterCard</option> 
 <option value="American Express">American Express</option> 
 </select> 
 </td> 
 </tr> 
 <tr> 
 <td>Number</td> 
 <td><input type="text" name="card_number" value="" maxlength="16" size="40"/></td> 
 </tr> 
 <tr> 
 <td>AMEX code (if required)</td> 
 <td><input type="text" name="amex_code" value="" maxlength="4" size="4"/></td> 
 </tr> 
 <tr> 
 <td>Expiry Date</td> 
 <td>Month 
 <select name="card_month"> 
 <option value="01">01</option> 
 <option value="02">02</option> 
 <option value="03">03</option> 
 <option value="04">04</option> 
 <option value="05">05</option> 
 <option value="06">06</option> 
 <option value="07">07</option> 
 <option value="08">08</option> 
 <option value="09">09</option> 
 <option value="10">10</option> 
 <option value="11">11</option> 
 <option value="12">12</option> 
 </select> 
 Year 
 <select name="card_year"> 
 <?php 
  for($y = date("Y"); $y < date("Y") + 10; $y++) 
  echo "<option value =\"". $y ."\">" . $y ."</option>"; 
 ?> 
 </select> 
 </td> 
 </tr> 
 <tr> 
 <td>Name on Card</td> 
 <td><input type="text" name="card_name" value="<?php echo $name; ?>" maxlength="40" size="40"/></td> 
 </tr> 
 <tr> 
 <td colspan="2" align="center"> 
 <p> 
 <strong>Please press Purchase to confirm yout purchase, or Continue Shopping to add or remove items</strong> 
 </p> 
 <?php display_form_button('purchase','Purchase These Items'); ?> 
 </td> 
 </tr> 
 </table> 
 <?php 
 }
 5.11 db_fns.php 파일 의 함수 dbconnect()

function db_connect() //      
 { 
 $result = new mysqli('localhost','book_sc','password','book_sc'); 
 if(!$result) //     
 return false; 
 $result ->autocommit(true); 
 return $result; 
 } 
6.지불 실현

이미 정 보 를 기입 한 신용카드 상세 정보

쇼핑 성공
다음 코드 로 구현:
6.1 process.php

<?php 
 
/** 
 * @author switch 
 * @copyright 2015 
 *       ,          
 */ 
 //require_once   require      ,     PHP              ,          。 
 require_once('book_sc_fns.php'); 
 
 session_start(); 
 
 do_html_header('Checkout'); 
 
 //     
 $card_type = $_POST['card_type']; 
 $card_number = $_POST['card_number']; 
 $card_month = $_POST['card_month']; 
 $card_year = $_POST['card_year']; 
 $card_name = $_POST['card_name']; 
 
 if(($_SESSION['cart']) && ($card_type) && ($card_number) && ($card_month) && ($card_year) &&($card_name)) 
 { 
 //      ,            
 display_cart($_SESSION['cart'],false,0); 
 
 display_shipping(calculate_shipping_cost()); 
 
 if(process_card($_POST)) 
 { 
 //      
 session_destroy(); 
 //                   ,          
 echo "<p>Thank you for shopping with us. Your order has been placed.</p>"; 
 
 display_button("index.php","continue-shopping","Continue Shopping"); 
 } 
 else 
 { 
 echo "<p>Could not process your card. Please contact the card issuer or try again.</p>"; 
 display_button("purchase.php","back","Back"); 
 } 
 } 
 else 
 { 
 echo "<p>You did not fill in all the fields,please try again.</p><hr/>"; 
 display_button("purchase.php","back","Back"); 
 } 
 do_html_footer(); 
?> 
이상 은 phop 이 카 트 기능 을 실현 하 는 전편 입 니 다.코드 가 상세 합 니 다.여러분 의 학습 에 도움 이 되 기 를 바 랍 니 다.그 다음 에 다음 편 이 있 으 니 놓 치지 마 세 요.

좋은 웹페이지 즐겨찾기