Maison développement back-end tutoriel php 在线竞拍系统的PHP实现框架(一)_PHP

在线竞拍系统的PHP实现框架(一)_PHP

Jun 01, 2016 pm 12:27 PM
id 在线 实现 框架 系统

前面我给了一个分页显示mysql记录的类,却没给出使用的例子,现在,我整理了我刚写的一个在线竞拍系统框架程序,来说明这个类的使用方法,而且也就在线竞拍的实现方法与大家一起来讨论一下。

  首先声明,我不是高手,也不是行家,只是一个fans,所以这个程序肯定有不少漏洞,但我之所以敢拿出来,是因为我很希望能自由地与大家分享PHP带给我们的快乐。(其实是想多加点分好弄个支持mysql的空间^_^)


  我觉得竞拍系统与一般的供求信息发布系统相比,最大的不同有两点,一点是出价者开的新价要及时地反映在商品的价格上,另一点是有时间的限制,在竞标结束后,就要停止出价。并且给出最后中标者。

  其它的我还没想到呢,有行家给点介绍吧。

  所以,我想把一个供求信息发布系统做成一个竞拍系统应是不困难的事吧。

下面先把新版的TViewPage类和数据库结构给出来吧。

<?php
/*********************************************
TViewPage v 1.2

分页显示Mysql数据库记录的类

作者:sharetop
E-mail:ycshowtop@21cn.com
时间:2000-8-31

[2000-9-6] 1.2
修正了readlist()的一个bug,将验证offset放入类中。
增加add() delete() modify()三个基本操作函数。

  本类没有提供连接数据库的功能,所以需在外部打开相应的数据库。
  本类也没有提供显示记录的功能,只是分页读取记录至 Result二维数组中。
  需在外部自定义数据显示格式。
***********************************************/
class TViewPage {

var $Table; //表名
var $MaxLine; //每页显示行数

var $Offset; //记录偏移量
var $Total; //记录总数
var $Number; //本页读取的记录数
var $Result; //读出的结果

var $TPages; //总页数
var $CPages; //当前页数

var $Condition; //显示条件 如:where id='$id' order by id desc
var $PageQuery; //分页显示要传递的参数

//******构造函数*************
//参数:表名、最大行数、偏移量

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;
}

//******设置传递参数************
// key参数名 value参数值
// 如:setpagequery("id",$id);如有多个参数要传递,可多次调用本函数。

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

//********读取记录***************
// 主要工作函数,根据所给的条件从表中读取相应的记录
// 返回值是一个二维数组,Result[记录号][字段名]

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

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

if($this->Total>0) { //根据条件 Condition
$SQL="SELECT * FROM ".$this->Table." ".$this->Condition.
" LIMIT ".$this->Offset." , ".$this->MaxLine;

$result=mysql_query($SQL) or die(mysql_error());
$this->Number=mysql_num_rows($result);

$i=0;
while($row=mysql_fetch_Array($result)){
$this->Result[$i]=$row;
$i ;
}
}
return $this->Result;
}


//*******加入新记录**********
//$str为加入的值,如 "'$id','$name','$class'"等

function Add($str){

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

}

//*********删除记录**********
//先调用SetCondition()来确定条件。

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

//********修改记录************
//$field 字段名 $value新值
//如要修改多个字段可重复调用来函数。

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


//**********显示页数*************
//显示当前页及总页数

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

//**********显示翻页按钮*************
//此函数要在ThePage()函数之后调用!!!
//显示首页、下页、上页、未页,并加上要传递的参数

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

$k=count($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 "<A href=$PHP_SELF?offset=".$prev.$strQuery.">上一页</A>|";
if($next<$this->Total)
echo "<A href=$PHP_SELF?offset=".$next.$strQuery.">下一页</A>|";
if($this->TPages!=0 && $this->CPages<$this->TPages)
echo "<A href=$PHP_SELF?offset=".$last.$strQuery.">末页</A>";
}

//******end class
}

?>


//************************
ebid.sql文件(我是用phpmyadmin导出的)

# phpMyAdmin MySQL-Dump
# http://www.htmlwizard.net/phpMyAdmin/
#
# Host: localhost Database : ebid

# --------------------------------------------------------
# Table structure for table 'reply'
# id,商品id,出价人,出价人的email,出价。

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,
PRIMARY KEY (id, price)
);


# --------------------------------------------------------
# Table structure for table 'shop'
# id,商品名,介绍,原始价,加价单位,结束时间,竞标数,当前价,是否有照片

CREATE TABLE shop (
id varchar(16) NOT NULL,
name varchar(50) NOT NULL,
description text,
price float(10,2) DEFAULT '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"; //商品表
$BID_TABLE="reply"; //回应表
$USER="root"; //用户
$PASSWD="9999"; //密码

$PAGE_MAX_LINE=20; //每页显示行数

//打开数据库
$LinkID=mysql_connect($HOST,$USER,$PASSWD);
mysql_select_db($DATABASE,$LinkID) or die(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=$view->ReadList();

if($view->Number==0) {echo "<tr><td colspan=4> </td></tr>"; return;}

for($i=0;$i<$view->Number;$i ){
if(ceil($i/2)*2==$i) $bgc="#ffffff";
else $bgc="#f3f3f3";
echo "<tr bgcolor=$bgc><td width=60% >";
echo "<a href="javascript:showdetail('detail.php?id=".$result[$i][id]."')">".$result[$i][name]."</a>";
echo "</td><td width=15% >";
echo date("Y-m-j 24:00:00",$result[$i][endtime]);
echo "</td><td width=15% align=right>¥";
echo $result[$i][curprice];
echo "</td><td width=10% align=right>";
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 "<tr><td>";
echo "<a href="javascript:showdetail('detail.php?id=".$result[$i][id]."')">".$result[$i][name]."</a>";
echo "</td></tr>";
}

}


//*********显示最新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 "<tr><td>";
echo "<a href="javascript:showdetail('detail.php?id=".$result[$i][id]."')">".$result[$i][name]."</a>";
echo "</td></tr>";
}
}


//********** //构造这个viewpage类,给出商品表及每页显示行数

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

?>

下面给出用到的一个js函数吧,很简单,就是打开一个新窗口:
<script>
function showdetail(str){
window.open(str,"newwin","top=20,left=20,width=600,height=400,
location=no,toolbar=no,status=no,resizable=no,scrollbars=yes");
}
</script>

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Cet identifiant Apple n'est pas encore utilisé dans l'iTunes Store : correctif Cet identifiant Apple n'est pas encore utilisé dans l'iTunes Store : correctif Jun 10, 2024 pm 05:42 PM

Lors de la connexion à iTunesStore à l'aide de l'AppleID, cette erreur indiquant "Cet AppleID n'a pas été utilisé dans iTunesStore" peut s'afficher à l'écran. Il n'y a pas de messages d'erreur à craindre, vous pouvez les corriger en suivant ces ensembles de solutions. Correctif 1 – Modifier l'adresse de livraison La principale raison pour laquelle cette invite apparaît dans l'iTunes Store est que vous n'avez pas la bonne adresse dans votre profil AppleID. Étape 1 – Tout d’abord, ouvrez les paramètres iPhone sur votre iPhone. Étape 2 – AppleID doit être au-dessus de tous les autres paramètres. Alors, ouvrez-le. Étape 3 – Une fois sur place, ouvrez l’option « Paiement et expédition ». Étape 4 – Vérifiez votre accès à l'aide de Face ID. étape

Le système de conduite intelligent Qiankun ADS3.0 de Huawei sera lancé en août et sera lancé pour la première fois sur Xiangjie S9 Le système de conduite intelligent Qiankun ADS3.0 de Huawei sera lancé en août et sera lancé pour la première fois sur Xiangjie S9 Jul 30, 2024 pm 02:17 PM

Le 29 juillet, lors de la cérémonie de lancement de la 400 000e nouvelle voiture d'AITO Wenjie, Yu Chengdong, directeur général de Huawei, président de Terminal BG et président de la BU Smart Car Solutions, a assisté et prononcé un discours et a annoncé que les modèles de la série Wenjie seraient sera lancé cette année En août, la version Huawei Qiankun ADS 3.0 a été lancée et il est prévu de pousser successivement les mises à niveau d'août à septembre. Le Xiangjie S9, qui sortira le 6 août, lancera le système de conduite intelligent ADS3.0 de Huawei. Avec l'aide du lidar, la version Huawei Qiankun ADS3.0 améliorera considérablement ses capacités de conduite intelligente, disposera de capacités intégrées de bout en bout et adoptera une nouvelle architecture de bout en bout de GOD (identification générale des obstacles)/PDP (prédictive prise de décision et contrôle), fournissant la fonction NCA de conduite intelligente d'une place de stationnement à l'autre et mettant à niveau CAS3.0

Huawei lancera le système de détection Xuanji dans le domaine des appareils portables intelligents, capable d'évaluer l'état émotionnel de l'utilisateur en fonction de la fréquence cardiaque Huawei lancera le système de détection Xuanji dans le domaine des appareils portables intelligents, capable d'évaluer l'état émotionnel de l'utilisateur en fonction de la fréquence cardiaque Aug 29, 2024 pm 03:30 PM

Récemment, Huawei a annoncé qu'il lancerait en septembre un nouveau produit portable intelligent équipé du système de détection Xuanji, qui devrait être la dernière montre intelligente de Huawei. Ce nouveau produit intégrera des fonctions avancées de surveillance de la santé émotionnelle. Le système de perception Xuanji fournit aux utilisateurs une évaluation complète de la santé avec ses six caractéristiques : précision, exhaustivité, rapidité, flexibilité, ouverture et évolutivité. Le système utilise un module de super-détection et optimise la technologie d'architecture de chemin optique multicanal, ce qui améliore considérablement la précision de surveillance des indicateurs de base tels que la fréquence cardiaque, l'oxygène dans le sang et la fréquence respiratoire. En outre, le système de détection Xuanji a également élargi la recherche sur les états émotionnels sur la base des données de fréquence cardiaque. Il ne se limite pas aux indicateurs physiologiques, mais peut également évaluer l'état émotionnel et le niveau de stress de l'utilisateur. Il prend en charge la surveillance de plus de 60 sports. indicateurs de santé, couvrant les domaines cardiovasculaire, respiratoire, neurologique, endocrinien,

Comment évaluer la rentabilité du support commercial des frameworks Java Comment évaluer la rentabilité du support commercial des frameworks Java Jun 05, 2024 pm 05:25 PM

L'évaluation du rapport coût/performance du support commercial pour un framework Java implique les étapes suivantes : Déterminer le niveau d'assurance requis et les garanties de l'accord de niveau de service (SLA). L’expérience et l’expertise de l’équipe d’appui à la recherche. Envisagez des services supplémentaires tels que les mises à niveau, le dépannage et l'optimisation des performances. Évaluez les coûts de support commercial par rapport à l’atténuation des risques et à une efficacité accrue.

Comment la courbe d'apprentissage des frameworks PHP se compare-t-elle à celle d'autres frameworks de langage ? Comment la courbe d'apprentissage des frameworks PHP se compare-t-elle à celle d'autres frameworks de langage ? Jun 06, 2024 pm 12:41 PM

La courbe d'apprentissage d'un framework PHP dépend de la maîtrise du langage, de la complexité du framework, de la qualité de la documentation et du support de la communauté. La courbe d'apprentissage des frameworks PHP est plus élevée par rapport aux frameworks Python et inférieure par rapport aux frameworks Ruby. Par rapport aux frameworks Java, les frameworks PHP ont une courbe d'apprentissage modérée mais un temps de démarrage plus court.

Comment les options légères des frameworks PHP affectent-elles les performances des applications ? Comment les options légères des frameworks PHP affectent-elles les performances des applications ? Jun 06, 2024 am 10:53 AM

Le framework PHP léger améliore les performances des applications grâce à une petite taille et une faible consommation de ressources. Ses fonctionnalités incluent : une petite taille, un démarrage rapide, une faible utilisation de la mémoire, une vitesse de réponse et un débit améliorés et une consommation de ressources réduite. Cas pratique : SlimFramework crée une API REST, seulement 500 Ko, une réactivité élevée et un débit élevé.

Xiaomi interdit aux appareils des banques nationales d'utiliser la version internationale du système ! Impossible d'entrer dans le système après avoir flashé Xiaomi interdit aux appareils des banques nationales d'utiliser la version internationale du système ! Impossible d'entrer dans le système après avoir flashé Jul 12, 2024 am 10:23 AM

Selon les informations du 9 juillet, les testeurs de Xiaomi.EU, une version officielle bien connue du système, ont récemment découvert que Xiaomi avait récemment pris de nouvelles mesures pour empêcher les appareils vendus en Chine continentale d'installer la version internationale de Xiaomi. Si un utilisateur tente d'installer la version internationale du système sur une version chinoise de l'appareil, l'appareil affichera un message non pris en charge lors du démarrage et ne pourra pas accéder au système. Ce mécanisme permet d'identifier la version du marché à laquelle appartient le matériel. Pour les téléphones mobiles Xiaomi vendus en Chine continentale, s'il est détecté que la version internationale du système est installée, il ne pourra pas démarrer normalement. Les résultats des tests montrent que le périphérique flashé affichera « Logiciel non pris en charge » (logiciel non pris en charge) dans l'assistant de démarrage et indiquera que l'utilisation de cette version peut entraîner des risques de sécurité. Actuellement, Xiaomi a

Comment choisir le meilleur framework Golang pour différents scénarios d'application Comment choisir le meilleur framework Golang pour différents scénarios d'application Jun 05, 2024 pm 04:05 PM

Choisissez le meilleur framework Go en fonction des scénarios d'application : tenez compte du type d'application, des fonctionnalités du langage, des exigences de performances et de l'écosystème. Frameworks Go courants : Gin (application Web), Echo (service Web), Fibre (haut débit), gorm (ORM), fasthttp (vitesse). Cas pratique : construction de l'API REST (Fiber) et interaction avec la base de données (gorm). Choisissez un framework : choisissez fasthttp pour les performances clés, Gin/Echo pour les applications Web flexibles et gorm pour l'interaction avec la base de données.

See all articles