先ほど、mysql レコードのページング表示用のクラスを紹介しましたが、その使用例は示しませんでした。このクラスの使用法を説明するために作成したばかりのオンライン入札システム フレームワーク プログラムをコンパイルしました。オンライン入札の実施方法をみんなで話し合いましょう。
まず最初に断っておきますが、私は達人でも専門家でもありません、ただのファンですので、この番組には抜け道がたくさんあるはずですが、あえてそれを出したのは、本当に自由に楽しんでいただきたいと思っているからです。 PHP がもたらした幸福をみんなと共有しましょう。 (本当は、mysql対応のスペースを取得するために、さらにポイントを追加したいのですが^_^)
オークションシステムと一般の需給情報公開システムの最大の違いは2点だと思います。 1つは、新しい価格です。入札者が提示した金額は、速やかに商品価格に反映されなければなりません。また、入札終了後は期限が設けられている必要があります。そして最終落札者が発表されます。
他のものについてはまだ考えていません。専門家が紹介してくれるかもしれません。
したがって、需給情報公開システムをオークションシステムにすることは難しくないと思います。
まず、新しいバージョンの TViewPage クラスとデータベース構造を見てみましょう。
<?php
/**********************************************
TViewPage v 1.2
ページングMySQL データベースのレコードを表示するクラス
作成者: sharetop
電子メール: ycshowtop@21cn.com
時刻: 2000-8-31
[2000-9-6] 1.2
readlist() のバグを修正、検証しますオフセットがクラスに入れられること。
3 つの基本操作関数 add() delete() modify() を追加します。
このクラスはデータベースに接続する機能を提供していないため、対応するデータベースを外部で開く必要があります。
このクラスはレコードを表示する機能は提供せず、レコードをページ単位のResult二次元配列に読み込むだけです。
データの表示形式は外部でカスタマイズする必要があります。
**********************************************/
class TViewPage {
var $Table; //1ページあたりの表示行数
var $Offset; offset シフト量
var $Total; // レコードの総数
var $Number; // 読み取られた結果
var $TPages; var $ CPages; // 現在のページ番号
var $Condition; // where id='$id' のような条件を id 順に表示します desc
var $PageQuery // 渡されるパラメータのページ表示
/ /*** ***Constructor******************
//パラメータ: テーブル名、最大行数、オフセット
function TViewPage($TB,$ML ){
グローバル $offset;
$this->Table=$TB;
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; ********レコードの読み取り***************
//主な動作関数、指定された条件に従ってテーブルから対応するレコードを読み取ります
//値を返しますは 2 次元配列です。Result[レコード番号][フィールド名]
function ReadList() {
$SQL="SELECT Count(*) AS total FROM ".$this->Table." ".$this ->条件;
$result=mysql_query($SQL) または die(mysql_error());
$this->合計=$row[合計]; ($this->Total>0) { //条件 Condition
$SQL="SELECT * FROM ".$this->Table." ".$this->Condition
" LIMIT " に従います。 $this ->Offset." , ".$this->MaxLine
$result=mysql_query($SQL) または die(mysql_error());
$i=0;
while($row=mysql_fetch_Array($result)){
$this->Result[$i]=$row;
}
}
return $this->結果;
}
//*******新しいレコードを追加します************
//$str は、「'$id',' などの追加値です」 $name',' $class'"etc
function Add($str){
$SQL="INSERT INTO ".$this->Table." ;
mysql_query ($SQL) または die(mysql_error());
}
//**********レコードを削除************
//最初の呼び出し SetCondition( ) 条件を決定します。
function Delete(){
$SQL="DELETE FROM ".$this->Table." ".$this->Condition;
mysql_query($SQL) または die(mysql_error())
;
//********レコードの変更************
//$field フィールド名 $value 新しい値
//複数のフィールドを変更したい場合は、次のように呼び出すことができます機能を繰り返し実行します。
function Modify($field,$value){
$SQL="UPDATE FROM ".$this->Table." SET ".$field."=".$value." ".$this->条件;
mysql_query($SQL) または die(mysql_error())
}
//************ページ数を表示********** *******
//現在のページと総ページ数を表示
function ThePage() {
$this->TPages=ceil($this->Total/$this->MaxLine) ;
$this->CPages=$this->Offset/$this->MaxLine+1;
echo "ページ".$this->CPages."/".$this->TPages" page";
}
/ /**********ページめくりボタンを表示**********
//この関数は ThePage() 関数の後に呼び出す必要があります。 ! !
//ホームページ、次ページ、前ページ、次ページを表示し、渡すパラメータを追加
function Page() {
$next=$this->Offset+$this-; > MaxLine;
$prev=$this->オフセット-$this->MaxLine=($this->TPages-1)*$this->MaxLine; ($ this->PageQuery);
$strQuery="" //渡すパラメータ文字列を生成
for($i=0;$i<$k;$i++){
$strQuery.="&"; . $this->PageQuery[$i][key]."=".$this->PageQuery[$i][value]
}
if($this->Offset>=$this- > ;MaxLine)
echo "<A href=$PHP_SELF?offset=".$first.$strQuery.">ホームページ</A>|";
if($prev>=0)
echo "|";
if($next<$this->Total)
echo "|";
if($this->TPages!=0 && $this->CPagesTPages)
echo "<A href=$PHP_SELF?offset=".$last.$strQuery.">最後のページ</A>" ;
//************************
ebid.sql ファイル (phpmyadmin を使用してエクスポートしました)
# phpMyAdmin MySQL-Dump
# http://www.htmlwizard.net/phpMyAdmin/
#
# ホスト: localhost データベース : ebid
# ----------------------- -- --------------------------------
# テーブル「返信」のテーブル構造
# 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)デフォルト '0.00' NOT NULL、
主キー (ID、価格)
);
# ---------------------------- ----------------------------
# テーブル「shop」のテーブル構造
# ID、商品名、紹介文、元の価格、マークアップ単位、終了時刻、入札数、現在価格、写真の有無
CREATE TABLE shop (
id varchar(16) NOT NULL,
name varchar(50) NOT NULL,
description text,
price float(10, 2) デフォルト '0.00' NOT NULL、
unit 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) DEFAULT '0.00' NOT NULL,
photo tinyint(1) unsigned NOT NULL,
PRIMARY KEY (id),
KEY kreply (reply)
); 設定ファイルは次のとおりです。
//** ************
//config.inc.php
<?php
$HOST="localhost" //ホスト名
$DATABASE="ebid"; ; //データベース名
$WARE_TABLE="shop" //製品テーブル
$USER="root" // Password
$PAGE_MAX_LINE =20; //ページごとに表示される行数
//データベースを開く
$LinkID=mysql_connect($HOST,$USER,$PASSWD)
mysql_select_db($DATABASE,$LinkID); (mysql_error());
?> 以下は商品とTOP10商品を表示する関数です
//*********************
//
<?php
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[record] [数値] [フィールド名] は 2 次元配列です。
$result=$view->ReadList();
if($view->Number==0) {echo " "; return;}
for($i=0;$i<$view->Number;$i++){
if(ceil($i/2)*2==$i) $bgc="#ffffff" ;
それ以外の場合 $bgc="#f3f3f3";
echo "
";
echo "";
echo "</td>
";
echo date("Y-m-j 24:00:00",$result[$i][endtime]);
echo "</td>¥";
echo $result[$i][curprice];
echo "</td>";
echo $result[$i][reply];
echo "</td></tr>";
}
}
//*********显示最热的10条记录**********
function ListTopHot(){
global $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 "</td></tr>";
}
}
//*********显示最新10条记录***********
function ListTopNew(){
global $view;
$view->SetCondition("ID 説明による順序");
$result=$view->ReadList();
$k=(count($result)>10)? '10':(count($result));
for($i=0;$i<$k;$i++){
echo "";
echo "";
echo "</td></tr>";
}
}
//**********<结束関数数定义,主程序体*************
//构造这个viewpage类,给出商品表及び每页显表示行数
$view=new TViewPage($WARE_TABLE,$PAGE_MAX_LINE);
?>
次の目的の js 関数数吧、很简单、就是打开一新窗口:
<script> <br>function showdetail(str){ <br>window.open(str,"newwin","top=20,left=20,width=600,height=400, <br>location=no,toolbar=no,status=no,resizable=いいえ、スクロールバー=はい"); <br>} <br></script> <br><br>
<p align="left"><div style="display:none;"><span id="url" itemprop="url">http://www.bkjia.com/PHPjc/314261.html<span id="indexUrl" itemprop="indexUrl">www.bkjia.com<span id="isOriginal" itemprop="isOriginal">true<span id="isBasedOnUrl" itemprop="isBasedOnUrl">http://www.bkjia.com/PHPjc/314261.html<span id="genre" itemprop="genre">技術記事<span id="description" itemprop="description">前我给了一分页显示mysql记录的類,不使用使用例,现在,我整理了我刚写的一在在線竞拍系统框架程序,来说説明この類の使用方法...
<div class="art_confoot"></script>