我想要一个简单的非MySQL PHP脚本,允许观众投票或投票。如果它必须是MySQL数据库驱动的,那就是它必须如何。理想情况下,不是。
所以基本上如果你要在网页浏览器中查看这个页面的来源,它看起来像这样:
<h2>Stack Overflow Is Cool</h2>
<span id="author-info-etc">Written by Ben Dover on 01-01-2012 (+12) | (-3) Total Rank: +9</span>
<p>Once upon a time there was this really cool website called Stack Overflow where amazing people would help answer questions asked by people who destroyed their keyboards by throwing them against their computer screen in an act of utter frustration and despair.</p>
源文件如下所示:
<span id="author-info-etc">Written by <?php echo $authorname; ?> on <?php echo $pubDate; ?> <?php include ('pagevotescript.php'); ?></span>
有人可以帮我创建这个PHP脚本吗?
答案 0 :(得分:2)
如果您想拥有一个可靠的投票系统,您需要使用MySQL等数据库来存储投票。否则,您的网络应用程序将如何知道页面收到多少票?
您的数据库结构可能如下所示:
信息页强>
page_id | page_name
-------------------
1 | My Page
2 | Test
用户强>
user_id | user_name
-------------------
1 | John
2 | Sara
3 | Tom
<强>投票强>
vote_id | user_id | page_id | vote_weight
-----------------------------------------
1 | 1 | 1 | 1
2 | 1 | 2 | -1
3 | 2 | 2 | 1
4 | 3 | 1 | 1
当用户投票时:
答案 1 :(得分:1)
最简单的方法是将页面数据存储在MySQL中,并且只有一个名为votes的列。通过这种方式,您可以显示页面并同时拉入投票,并且可以在用户进行交互时轻松上/下投票。
如果没有MySQL,您需要将值存储在某个文件中。您可以使用about-us.php然后about-us.php.txt,其中txt文件将是一个简单的#,可以检索然后更改和重置。像这样:
// Open file for reading and writing
$fp = fopen('about-us.php.txt', 'w+');
//Retrieve contents of file as integar
$count = (int) fread($fp, filesize('about-us.php.txt'));
// Take the count and up it by 1
$count++;
// Write the changes
fwrite($fp, $count);
// Close the file
fclose($fp);
答案 2 :(得分:0)
你需要一种在会话之间坚持你的数据的方法,所以你需要一个数据库,如果你不想安装mysql,我认为PHP的最新版本附带sqlite内置支持。
答案 3 :(得分:0)
您希望拥有一个包含用户和帖子的数据库。用户应该能够对帖子进行投票,增加或减少用户的“声誉”计数。要存储所有这些信息,您已经需要一个数据库。
如果您仍想将“投票”信息存储在mysql数据库中,那么有很多选项。 text file,NoSQL,Couchdb以及许多其他选项。
您将更容易学习如何与数据库进行通信,然后执行诸如将信息存储在文件中之类的操作。由于mysql是最常用的数据库,因此它将是一个相当明智的选择。
PS: 如果你开始学习mysql,你肯定不会开始使用PHP mysql_
函数,而是{{3} },to circumenvent PDO
答案 4 :(得分:0)
低技术方法是使用带有PHP的键值存储来存储您的值。一个例子是PHP中的dba_*
函数,如dba_open,它创建一个单文件数据库,其行为类似于任何常规文件,不需要服务器。
示例:
$db = dba_open("stats", "r", "gdbm");
$count = dba_fetch("/page/path", $db);
dba_insert("/page/path", $count + 1, $db);
作为一个注释,这将受到微妙的竞争条件的影响,其中两个或多个同时请求将获取并保存相同的递增值。使用适当的数据库,甚至the embedded SQLite,将是一个更好的主意。