WebプログラミングU PHP

 目次へ 前へ 

2012/7/10 久米

 

7 ショッピングサイト作成

7.1 データベースの作成

最も基本的な情報だけのデータベースを作ります。

  1. phpMyAdminにアクセス
  2. 自分のデータベースを選択
  3. 現在のDBに新しいテーブルを作成します。
    CREATE TABLE `shopping` (
    `id` int(11) NOT NULL auto_increment,
    `name` varchar(64) NOT NULL default '',
    `kind` int(11) NOT NULL default '0',
    `detail` text NOT NULL,
    `price` int(11) NOT NULL default '0',
    `img` varchar(128) NOT NULL default '',
    PRIMARY KEY (`id`)
    );
  4. 商品を1つ以上入力しておく。imgには画像ファイル名を記述。

注)shopping/img/のフォルダの中に画像ファイルをいれておく

 

7.2 商品表示 shop.php

 

7.3 商品詳細表示 detail.php

 

7.4 買い物カート cart.php cart2.php

cart.php
<?php
//買い物カートスクリプト(その1)セッション変数更新cart.php
session_start();

/***********************
* 購入あるいは購入取消によって
* 下記セッション変数を更新するスクリプト
* $_SESSION['buyid']:購入商品のidの配列
* $_SESSION['buynm']:上記商品をいくつ購入したかの個数の配列
***********************/
//購入した場合
if(isset($_GET['id'])){
    if(!is_numeric($_GET['id']))
        exit("アクセスエラーです。もう一度最初からお願いします。");
    
    $id=$_GET['id'];
    add_buy_session($id);
    
//削除した場合
}else if(isset($_GET['did'])){
    if(!is_numeric($_GET['did']))
        exit("アクセスエラーです。もう一度最初からお願いします。");
    
    $did=$_GET['did'];
    delete_buy_session($did);
}

header("Location: cart2.php");
exit();

/*************************************
* セッション変数に購入品を保存する関数
**************************************/
function add_buy_session($id){
    $buyid[0]=0;//購入商品のidが入る配列
    $buynm[0]=0;//上記商品をいくつ購入したかの個数が入る配列
    //もし現在、購入したものがあれば
    if(isset($_SESSION['buyid'])){
        $buyid=$_SESSION['buyid'];
        $buynm=$_SESSION['buynm'];
        
        $b=count($buyid);
        $addflag=false;
        for($i=0;$i<$b;$i++){
            if($buyid[$i]==$id){
                $buynm[$i]++;
                $addflag=true;
                break;
            }
        }
        if(!$addflag){
            $buyid[$b]=$id;
            $buynm[$b]=1;
        }
    
    //現在、購入していなければ
    }else {
        $buyid[0]=$id;
        $buynm[0]=1;
    }
    
    //$_SESSIONの更新
    $_SESSION['buyid']=$buyid;
    $_SESSION['buynm']=$buynm;
}

/*************************************
* セッション変数から購入取消品を削除する関数
**************************************/
function delete_buy_session($did){
    $buyid[0]=0;//購入商品のidが入る配列
    $buynm[0]=0;//上記商品をいくつ購入したかの個数が入る配列
    //もし現在、購入したものがあれば
    if(isset($_SESSION['buyid'])){
        $buyid_old=$_SESSION['buyid'];
        $buynm_old=$_SESSION['buynm'];
        $b=count($buyid_old);
        for($i=0;$i<$b;$i++){
            if($buyid_old[$i]==$did){
                $buynm_old[$i]--;
                break;
            }
        }
        $k=0;
        for($i=0;$i<$b;$i++){
            if($buynm_old[$i]!=0){
                $buyid[$k]=$buyid_old[$i];
                $buynm[$k]=$buynm_old[$i];
                $k++;
            }
        }
    }
    
    //$_SESSIONの更新
    if($buynm[0]!=0){//もし購入商品があれば
        $_SESSION['buyid']=$buyid;
        $_SESSION['buynm']=$buynm;
    }else{//購入している商品がなければ
        $_SESSION=array(); 
        session_destroy();
    }
}
?>
cart2.php
<?php
//買い物カートスクリプト(その2)表示cart2.php
session_start();
require_once($_SERVER['DOCUMENT_ROOT']."/kume/common/db_value.php");

//初期化
$buyid[0]=0;//購入商品のidが入る配列
$buynm[0]=0;//上記商品をいくつ購入したかの個数が入る配列
$total=0;//購入金額の合計

//セッション変数を読み取り、
//もし現在、購入したものがあれば配列に代入
if(isset($_SESSION['buyid'])){
    $buyid=$_SESSION['buyid'];
    $buynm=$_SESSION['buynm'];
}

/***********************
*
* 商品名、価格(円)、個数の表$mの生成
* と合計金額$totalの計算
*
***********************/
if($buynm[0]!=0){
    $where=" WHERE 0";
    for($i=0;$i<count($buyid);$i++){
        $where.=" OR id=".$buyid[$i];
    }
    
    $con=mysqli_connect($DBSERVER, $DBUSER, $DBPASSWORD, $DBNAME);
    $sql="SELECT * FROM shopping ".$where." ORDER BY price DESC";
    $rst=mysqli_query($con, $sql);
    
    $m="<table border='1' cellspacing='0' cellpadding='8'>";
    $m.="<tr bgcolor='#CCCCCC'><td>商品名</td><td>価格(円)</td><td>個数</td><td> </td></tr>";
    while($row=mysqli_fetch_array($rst)){
        $number=0;
        for($i=0;$i<count($buyid);$i++){
            if($buyid[$i]==$row["id"]){
                $number=$buynm[$i];
                break;
            }
        }
        $m.="<td><a href='detail.php?id=".$row["id"]."' target='_blank'>".$row["name"]."</a></td>";
        $m.="<td>".$row["price"]."</td>";
        $m.="<td>".$number."</td>";
        $m.="<td><a href='cart.php?did=".$row["id"]."'>削除</a></td></tr>";
        $total+=$row["price"]*$number;
    }
    $m.="</table>";
    mysqli_free_result($rst);
    $cls=mysqli_close($con);

}else{
    $m="現在カートの中にはなにもありません。m(_ _)m";
}
?>

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>ショップ</title>
</head>
<body>
<?php
print $m;
print "<p>合計金額は <strong>".$total."</strong>円です</p>";
?>
</body>
</html>

 

コラム リンクの付け方 よく使うテクニック

$m.="<td><a href='detail.php?id=".$row["id"]."' target='_blank'>".$row["name"]."</a></td>";