mysql 中计数器_PHP和MySQL中的简单投票计数

mysql 中计数器

Popularity Can Be Measured

人气可以衡量

Sometimes we deal with questions of popularity, and we need a way to collect opinions from our clients.  This article shows a simple teaching example of how we might elect a favorite color by letting our clients vote for it.  Once our tables are created, our entire process is contained in a single PHP script that collects the votes and shows the aggregate results.

有时,我们会处理受欢迎程度的问题,因此我们需要一种收集客户意见的方法。 本文显示了一个简单的教学示例,该示例说明了如何让客户投票选择喜欢的颜色。 创建表格后,整个过程将包含在一个PHP脚本中,该脚本收集投票并显示汇总结果。

Setting Up Our Data Base Tables

设置我们的数据库表

The first thing we need to do is create two tables.  One table will contain the color choices.  There will be one row for each color.  The other table will contain the votes.  There will be one row for each vote.  You might be wondering why we don't just add a counter to the color table and accumulate the sum of votes directly in the color row.  We certainly could do that, but data base storage is cheap and we might be interested in knowing more than just how many votes each color received.  If we have each vote recorded separately along with a little information about our client (we keep just the IP address in this example) we would be able to do popularity trend analysis over time or use an IP-to-location service to answer questions like, "Which color is most popular in New York?"  With a little creativity you might extend these concepts to cover other questions and other answers.

我们需要做的第一件事是创建两个表。 一张桌子将包含颜色选择。 每种颜色将有一行。 另一个表将包含投票。 每一票将有一行。 您可能想知道为什么我们不只是在颜色表中添加一个计数器并直接在颜色行中累积票数之和。 我们当然可以这样做,但是数据库存储很便宜,我们可能想知道的不仅仅是每种颜色获得多少票。 如果我们分别记录了每个投票以及关于客户的一些信息(在此示例中仅保留IP地址),我们将能够进行一段时间的流行趋势分析或使用IP定位服务来回答诸如,“哪种颜色在纽约最受欢迎?” 稍加创造力,您就可以将这些概念扩展到其他问题和其他答案。

Our first script creates these tables.  We connect and select the data base and once we have gotten to line 28 of our script, we know the data base is ready for our use.  When we are testing a script like this, it is useful to be able to wipe out our data base tables and start over each time with a clean test data set.  The code on lines 31-33 provides for that option.  We create the color table (line 36) and the votes table (line 49) and we add the color choices to the color table (line 64).  And we are done with the setup.

我们的第一个脚本创建这些表。 我们连接并选择了数据库,一旦到达脚本的第28行,我们就知道该数据库已经可以使用。 当我们测试这样的脚本时,能够擦除数据库表并每次使用干净的测试数据集重新开始都是很有用的。 第31-33行的代码提供了该选项。 我们创建颜色表(第36行)和投票表(第49行),并将颜色选择添加到颜色表(第64行)。 设置完成。

<?php // RAY_EE_voting_create.php
/**
 * https://www.experts-exchange.com/articles/5256/Simple-Vote-Counting-in-PHP-and-MySQL.html
 * Demonstrate the voting algorithm -- Create the Tables
 */
error_reporting(E_ALL);

// CONNECTION AND SELECTION VARIABLES FOR THE DATABASE
$db_host = "localhost"; // PROBABLY THIS IS OK
$db_name = "??";        // GET THESE FROM YOUR HOSTING COMPANY
$db_user = "??";
$db_word = "??";

// OPEN A CONNECTION TO THE DATA BASE SERVER AND SELECT THE DB
$mysqli = new mysqli($db_host, $db_user, $db_word, $db_name);

// DID THE CONNECT/SELECT WORK OR FAIL?
if ($mysqli->connect_errno)
{
   
    $err
    = "CONNECT FAIL: "
    . $mysqli->connect_errno
    . ' '
    . $mysqli->connect_error
    ;
    trigger_error($err, E_USER_ERROR);
}
// IF WE GOT THIS FAR WE CAN DO QUERIES


// THESE LINES REMOVE EXISTING VERSIONS OF THE TABLES
$mysqli->query("DROP TABLE EE_vote_colors");
$mysqli->query("DROP TABLE EE_vote_votes");


// CREATE THE COLOR TABLE
$sql
=
"
CREATE TABLE EE_vote_colors
( _key  INT         NOT NULL AUTO_INCREMENT PRIMARY KEY
, color VARCHAR(10) NOT NULL DEFAULT ''
)
"
;
$res = $mysqli->query($sql) or trigger_error( "$sql<br/>" . $mysqli->error, E_USER_WARNING );


// CREATE THE VOTES TABLE
$sql
=
"
CREATE TABLE EE_vote_votes
( _key       INT         NOT NULL AUTO_INCREMENT PRIMARY KEY
, color      VARCHAR(10) NOT NULL DEFAULT ''
, ip_address VARCHAR(16) NOT NULL DEFAULT 'unknown'
, when_voted TIMESTAMP
)
"
;
$res = $mysqli->query($sql) or trigger_error( "$sql<br/>" . $mysqli->error, E_USER_WARNING );


// LOAD THE STANDARD ROY-G-BIV DATA INTO THE COLOR TABLE
$res = $mysqli->query( "INSERT INTO EE_vote_colors ( color ) VALUES ( 'Red'    )" );
$res = $mysqli->query( "INSERT INTO EE_vote_colors ( color ) VALUES ( 'Orange' )" );
$res = $mysqli->query( "INSERT INTO EE_vote_colors ( color ) VALUES ( 'Yellow' )" );
$res = $mysqli->query( "INSERT INTO EE_vote_colors ( color ) VALUES ( 'Green'  )" );
$res = $mysqli->query( "INSERT INTO EE_vote_colors ( color ) VALUES ( &#
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
安装 MySQL或File DB安装 编辑反.php文件并将设置修改为所需的设置。 编辑mysql_config.php或filedb_config.php(取决于您希望使用的是什么)。 上传所有.php文件和图像文件(如果使用图形计数器)。 放在所有页面的html。 访问浏览器的comp.php文件。注意:如果使用filedb,您的计数器将出现。如果使用MySQL,您的计数器将首先安装,然后您可以刷新页面,您的计数器将显示出来。注2:记得删除安装文件夹。 高级用户安装 编辑计数器和配置文件。 如果使用MySQL,则将dbtables.sql加载到数据库PHP-Nuke w/MySQL 将整个计数器文件夹上传到php-nuke根文件夹(其安装了php-nuke)。 将/extras/PHP-Nuke/blocks/block-EP-Dev_Counter.php上传到PHP-Nuke的/块/文件夹。 进入PHP-Nuke的管理,单击块,然后添加块“EP-Dev计数器”。 (可选)Edit comp.php注意:您的计数器将首先安装,然后您可以刷新页面,您的计数器就会显示出来。 升级 备份数据库或数据文件! Upgrading from 3.x --> 3.x 编辑反.php文件并将设置修改为所需的设置。 编辑mysql_config.php或filedb_config.php(取决于您希望使用的是什么)。 上传所有.php文件和图像文件(如果使用图形计数器)。 (可选:访问新/stats/页面查看旧的统计数据!) Upgrading from 1.x or 2.x --> 3.x 编辑反.php文件并将设置修改为所需的设置。 编辑mysql_config.php或filedb_config.php(取决于您希望使用的是什么)。 上传所有.php文件和图像文件(如果使用图形计数器)。 访问浏览器的安装/升级-v3.php,并遵循屏幕上的任何说明。注意:您的旧文件数据库文件/表将升级为新格式,不会丢失任何数据。 特征列表 在线访客/每日访客/访客总数/点击数总数 文件数据库MySQL数据库都支持。 容易编辑计数器显示文件. 自动数据库裁剪(文件和MySQL) 可配置在线时间 可配置TRIM数据库时间 自动存档选项 点击/访问偏移功能 逗号开/关 图形或文本 可配置数长度 IP忽略 IP阻塞 许多其他特性(我无法再跟上它们了) 故障排除 问题:我的统计页面总是显示我有0名在线访问者。我启用了时间偏移。 解决方案:目前还没有解决这个问题的办法。这是脚本检查服务器时间与数据库的时间值的结果。如果你想在网上查看你的访问者,只需访问你的实际反.php文件;) 问题:计数器告诉我,我的“绝对路径”设置不正确!? 解决方案:您可以在comp.php找到绝对路径设置。如果您不知道您的绝对路径,您可以访问Web浏览器的文件/install/abus.php(包括在此计数器)。php文件将显示计数器所需的绝对路径。 问题:我的柜台没有出现,而是显示为。 解决方案:确保您的页面是php页面(.php),并且您的服务器上有php。 问题:我不知道如何编辑计数器的布局。 解决方案:编辑-display.html文件。包括以下内容以反映不同的统计数据: 在线访问者-!反-ONPAGE! 今天的访客-!反-今天! 游客总数-!回访! 总命-!反击! 问题:我不知道MySQL数据库是什么,或者我是否有一个数据库!解决方案:MySQL数据库是存储数据的简单方式和位置。您可以询问您的网站主机是否有(如果有,您的用户名、密码和数据库名称是什么)。如果您没有MySQL数据库,则可以将计数器设置为在comp.php文件使用文件数据库。 问题:我收到“分析错误:解析错误,意外‘,’.行#”。解决方案:您的HITS_偏移量可能有逗号,请删除它们。 问题:我的柜台没有正确显示访客!它总是保持在1或0。 解决方案:问题的出现与您包含文件的方式有关。这是一个已知的问题,如果您是: (A)通过域链接到脚本 (B)让服务器以其他方式拉出脚本,而不是EP-dev所建议的方式。 修复:只需包含服务器上有绝对路径的浏览器(通常用于CGI脚本)。因此,您的包含看起来类似于:。如果域名是mydomain.com,那么包含的内容可能是这样的:

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值