ホームページ >php教程 >php手册 >オンライン入札システムのPHP導入フレームワーク(1)

オンライン入札システムのPHP導入フレームワーク(1)

WBOY
WBOYオリジナル
2016-06-13 12:45:271185ブラウズ

前に、mysql レコードをページングするためのクラスを紹介しましたが、その使用例は示しませんでした。このクラスの使用法を説明するために作成したばかりのオンライン入札システム フレームワーク プログラムをコンパイルしました。これもオンライン入札用です。実装方法についてはみんなで話し合いましょう。

まず最初に断っておきますが、私は達人でも専門家でもありません、ただのファンですので、この番組には抜け道がたくさんあるはずですが、それをあえて持ち出したのは、 PHP を皆さんと自由に共有できれば幸いです。 (本当はmysql対応のスペースを確保するためにポイントを追加したい^_^)


オークションシステムと一般的な需給情報公開システムの大きな違いは2つあると思います。 1 つは、入札者が提示した新しい価格が適時に商品価格に反映される必要があることです。もう 1 つは、入札終了後に入札を停止する必要があることです。そして最終落札者が発表されます。

他のものについてはまだ考えていませんが、専門家がいくつか紹介してくれるかもしれません。

したがって、需給情報公開システムをオークションシステムにすることは難しくないと思います。

まず、新しいバージョンの TViewPage クラスとデータベース構造を示します。

/**********************************************
TViewPage v 1.2

Mysql データベース レコードのページング表示用のクラス

作成者: sharetop
電子メール: ycshowtop@21cn.com
時刻: 2000-8-31

[ 2000-9-6] 1.2
readlist() のバグを修正し、検証オフセットをクラスに追加しました。
3 つの基本操作関数 add() delete() modify() を追加します。

このクラスはデータベースに接続する機能を提供していないため、対応するデータベースを外部で開く必要があります。
このクラスはレコードを表示する機能を提供せず、ページ内の Result の 2 次元配列にレコードを読み込むだけです。
データの表示形式は外部でカスタマイズする必要があります。
**********************************************/
class TViewPage {

var $Table; //テーブル名
var $MaxLine;ページに表示される行数

var $Offset; //レコードのオフセット
var $Total; //このページで読み取られたレコードの数。
var $Result; // 結果を読み取ります

var $TPages; // 総ページ数
var $CPages; // 現在のページ数

var $Condition; //次のような表示条件: where id='$id' order by id desc
var $PageQuery; // 渡されるページ表示パラメータ

//******Constructor** *** ********
//パラメータ: テーブル名、最大行数、オフセット

function TViewPage($TB,$ML){
global $offset;

$this->Table=$TB;
$this->MaxLine=$ML;
if(isset($offset)) $this->Offset=$offset;
else $this->Offset=0;
$this->Condition="";


//********セット表示条件 *********
//例: where id='$id' order by id desc
//要件は SQL 構文に準拠した文字列です (この文字列はSQL ステートメントの後に追加)

function SetCondition($s){
$this->Condition=$s;

//******渡すパラメータを設定します** **********
// キー パラメータ名 値 パラメータ値
// 例: setpagequery("id",$id); 複数のパラメータがある場合渡されるために、この関数を複数回呼び出すことができます。

function SetPageQuery($key,$value){
$tmp[key]=$key; $tmp[value]=$value;
$this->PageQuery[]=$ tmp;
}

//********レコードの読み取り****************
//主な動作関数によるto 与えられた条件は、テーブルから対応するレコードを読み取ります。
// 戻り値は 2 次元配列です。 Result[レコード番号][フィールド名]

function ReadList() {
$ SQL ="SELECT Count(*) AS total FROM ".$this->Table." ".$this->Condition;

$result=mysql_query($SQL) または die(mysql_error() ) ;
$row=mysql_fetch_Array($result);
$this->Total=$row[total];

if($this->Total>0) { // ConditionCondition
$SQL="SELECT * FROM ".$this->Table." ".$this->Condition.
" LIMIT ".$this->Offset." , " によると、 $ this->MaxLine;

$result=mysql_query($SQL) または die(mysql_error());
$this->Number=mysql_num_rows($result); > $i=0;
while($row=mysql_fetch_Array($result)){
$this->Result[$i]=$i ;
}
return $this->Result
}


//************新しいレコードを追加します****** *****
//$str は、「'$id','$name','$class'」などの追加値です。

function Add($str) {

$SQL=" INSERT INTO ".$this->Table." VALUES(".$str.")";
mysql_query($SQL) または die(mysql_error());

}

//**********レコードの削除**********
//最初に SetCondition() を呼び出して、条件。

function Delete(){
$SQL="DELETE FROM ".$this->Table." ".$this->Condition;
mysql_query($SQL) または die( mysql_error());
}

//************レコードを変更**********
//$field フィールド名$value New value
//複数のフィールドを変更する場合は、関数を繰り返し呼び出すことができます。

function Modify($field,$value){
$SQL="UPDATE FROM ".$this->Table." SET ".$field."=".$value." " .$this->Condition;
mysql_query($SQL) または die(mysql_error())


//**********表示ページ数**********
//現在のページと総ページ数を表示します

function ThePage() {
$this->TPages=ceil( $this ->Total/$this->MaxLine);
$this->CPages=$this->Offset/$this->MaxLine 1;
echo "th".$this -> ;CPages."Pages/Total".$this->TPages."Pages";
}

//************ページ表示ボタン** * ************
//この関数は ThePage() 関数の後に呼び出す必要があります。 ! !
//ホームページ、次のページ、前のページ、次のページを表示し、渡すパラメータを追加します

function Page() {
$first=0; =$ this->Offset $this->MaxLine;
$prev=$this->Offset-$this->MaxLine;
$last=($this->TPages-1) *$ this->MaxLine;

$k=count($this->PageQuery);
$strQuery=""; //
に渡すパラメータ文字列を生成しますi =0;$i<$k;$i ){
$strQuery.="&".$this->PageQuery[$i][key]."=".$this->PageQuery[ $ i][値];
}

if($this->Offset>=$this->MaxLine)
echo "|";
if($prev>=0)
echo "
|";
if($nextTotal)
echo "
|";
if($this->TPages!=0 && $this->CPagesTPages)
echo "
";
}

//******終了クラス
}

?>


//************************
ebid.sql ファイル ( phpmyadmin を使用してエクスポートしました)

# phpMyAdmin MySQL-Dump
# http://www.htmlwizard.net/phpMyAdmin/
#
# ホスト: localhost データベース: ebid

#----------------------------------------------- -- ---------
# テーブル 'reply' のテーブル構造
# ID、製品 ID、入札者、入札者の電子メール、入札。

CREATE TABLE Reply (
id varchar(16) NOT NULL、
parentid varchar(16) NOT NULL、
buyer varchar(12) NOT NULL、
email varchar(32) ) NOT NULL、
price float(10,2) DEFAULT '0.00' NOT NULL、
主キー (id, 価格)
);


# ---- -------------------------------------------------- --
# テーブル 'shop' のテーブル構造
# ID、商品名、紹介文、元の価格、マークアップ単位、終了時刻、入札数、現在の価格、写真の有無

CREATE TABLE shop (
id varchar(16) NOT NULL、
name varchar(50) NOT NULL、
説明テキスト、
price float(10,2) DEFAULT '0.00' NOT NULL、
ユニット tinyint(2) unsigned NOT NULL、
endtime varchar(16) DEFAULT '0000-00-00 00:00' NOT NULL、
reply int(4) unsigned NOT NULL、
curprice float (10 ,2) デフォルト '0.00' NOT NULL、
photo tinyint(1) unsigned NOT NULL、
主キー (id)、
KEY kreply (応答)
); 🎜>
設定ファイルは次のとおりです:
//**************
//config.inc.php


$HOST="localhost"; //ホスト名
$DATABASE="ebid"; //データベース名
$WARE_TABLE="shop"; ="reply"; //応答テーブル
$USER="root" //ユーザー

$PAGE_MAX_LINE=20;ページごとに表示される行数

//データベースを開きます
$LinkID=mysql_connect($HOST,$USER,$PASSWD);
mysql_select_db($DATABASE,$LinkID) または die(mysql_error() );

?>

以下は商品とTOP10商品を表示する機能です
//**************** *******
//
include "config.inc.php";
include "tview.class.php" //クラスファイル


//*****商品リストを表示* *******
function PrintList(){
global $view;

$ct=time() ;

//条件を設定する文! SQL 構文を満たす必要があります。入札が終了していない商品のみを表示します
$view->SetCondition("where endtime>'$ct' order by id desc")

//レコードを読み取るメンバー関数を呼び出します
/ /Result$result[レコード番号][フィールド名]は2次元配列です。
$result=$view->ReadList();

if($view->Number==0) {echo "gt; "; return;}

for($i=0;$i<$view->Number;$i ){
if(ceil($i/2)*2==$i) $ bgc="#ffffff";
else $bgc="#f3f3f3";
echo " ";
echo "
";
echo "
";
echo date("Y-m-j 24:00:00",$result[$i][endtime]);
echo "</td><td width=15% align=right>¥";
エコー $result[$i][curprice];
echo " ";
エコー $result[$i][返信];
echo " ";
}
}

//*********显示最热的10条记录**********
function ListTopHot(){
グローバル $view;

//同样先設置条件
$view->SetCondition("order by Reply desc");
//读记录
$result=$view->ReadList();

$k=(count($result)>10)? '10':(count($result));

for($i=0;$i<$k;$i ){
echo "";
echo "";
echo "
";
}

}


//*********显示最新10条记录***********
function ListTopNew(){
global $view;

$view->SetCondition("order by id desc");
$result=$view->ReadList();

$k=(count($result)>10)? '10':(count($result));

for($i=0;$i<$k;$i ){
echo "";
echo "";
echo "
";
}
}


//**********<结束関数数定义,主程序体************ *
//构造这个viewpage类,给出商品表及每页显表示行数

$view=new TViewPage($WARE_TABLE,$PAGE_MAX_LINE);

?>

下に表示された 1 つの js 関数吧、很简单、就是打开一新窗口:
<script> <br>function showdetail(str){ <br>window.open(str,"newwin","top=20,left=20,width=600,height=400, <br>location=no,toolbar=no,ステータス = いいえ、サイズ変更可能 = いいえ、スクロールバー = はい"); <br>} <br></script>

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。