首先我们是PHP的初学者,我们正在学习多媒体设计,我们已经被指派用纯HTML制作一个网站。此外,我们还必须包含一些PHP(必须是面向对象的)。我们的想法是在我们的数据库中调用Youtube视频中的URL,每个视频都应附有一个投票按钮。
我们可以轻松地将视频发送到我们网站上div框中的特定页面。这是我们的video_class.php:
<?php class Video {
private $db;
public function insertVideo($videoId) {
$row = $this->db->query("SELECT url FROM video WHERE id = ".$videoId);
$ost = $this->db->loadRows($row);
echo '<iframe width="200" height="200" src="https://www.youtube.com/embed/' . $ost[0]['url'] . '" frameborder="0" allowfullscreen></iframe>';
}
public function setDatabaseConnection($db) {
$this->db = $db;
} } ?>
我们将页面加载到:
<?php // Create database connection
// Load Database class file
require_once 'db_class.php';
//Creating new object instance from Database class
$db = new event();
// Run initiate function and provide credentials.
$db->initiate("localhost","root","","event");
$db->connect(); // Connect to MySQL database
// Load Video class file
require_once 'video_class.php';
$video = new Video;
$video->setDatabaseConnection($db);
$row=$db->query("SELECT url FROM video WHERE id = 1");
$ost=$db->loadRows($row);
//var_dump($ost);
$row1=$db->query("SELECT url FROM video WHERE id = 2");
$ost1=$db->loadRows($row1);
//var_dump($ost1);
$row2=$db->query("SELECT url FROM video WHERE id = 3");
$ost2=$db->loadRows($row2);
//var_dump($ost2); ?>
HTML:
<center><div class="video_clip">
<?php echo '<iframe width="200" height="200" src="https://www.youtube.com/embed/' . $ost[0]['url'] . '" frameborder="0" allowfullscreen></iframe>'; ?>
<a href="events_vote.php?userid=1&videoid=1"><img src="images/vote.png"></a>
</div><!--video_clip end-->
但真正的问题是下一个:
我们有3个视频,您可以点击每个视频下的投票按钮进行投票。每个按钮必须计算点击次数并将其存储在我们的数据库中。我们完全不知道如何使这成为可能。我们的老师告诉我链接到一个子页面(例如,“vote.php”)。在那个页面上我们应该使用:
有人可以帮助我们吗?我们在论坛上找到了一些可能的解决方案,但仍然没有运气!很抱歉长篇文章和太多文字:)
数据库结构:
Table name: users Table comments: users Column Type Null Default Comments MIME id int(11) No videoId int(11) No Table name: video Table comments: video Column Type Null Default Comments MIME id int(11) No url varchar(50) No
答案 0 :(得分:1)
如果您想保持简单,可能需要跳过页面无法重新加载的部分。你可以制作一个按钮来做各种各样的javascript技巧(google jquery
和ajax
),但是没有必要这样做。
假设您的网址是yourfile.php
在您的代码中,在您显示页面之前,请检查是否正在投票
if(isset($_GET['voteid']){
//save vote!
}
现在你在同一个页面上,你检索了投票(一个比以前更高),你可以继续前进。
答案 1 :(得分:0)
这是非常开放的,所以我会添加一些线索让你前进。
首先,由于您的投票会影响数据库,因此您应该使用post
而不是get
(有关详细信息,请参阅here) 1 。一旦处理完操作,就可以进行重定向。
因此,在<iframe>
下,使用<form>
方法设置post
。在其中添加三个input
标记,每个标记的类型为submit
,每个标记都具有不同的name
属性。对于action
,如果您愿意,可以将其瞄准不同的页面,但由于它很简单,我会指出它自己。因此,暂时使用<?php echo $_SERVER[ 'PHP_SELF' ] ?>
。
好的,这样就会将帖子数据发送到同一页面。因此,在您的页面PHP中,在数据库初始化之后,像这样捕获post op:
// Your existing code
$db->connect(); // Connect to MySQL database
// New code
if ($_POST) {
print_r($_POST);
exit();
// @todo Parse the result in your POST array
// @todo Save the result in the database
// @todo Redirect to self
}
// Load Video class file
require_once 'video_class.php';
将要做的是将帖子数据转储到屏幕上,然后立即退出。这是一个很好的原型设计方法,可以确保您走在正确的轨道上。
添加@todo笔记也是一个非常好的方法 - 按顺序执行这些操作,并在编写和测试该文章时删除注释。如果合适,请不要忘记添加解释代码的新评论。
1 如果使用$_GET
数组是练习的重要组成部分,那么可以使用三个帖子表单,每个表单都有自己的按钮,并且包含将出现在$_GET
数组中的单独查询字符串的操作。但是我认为这有点令人费解,而且可能不是实践中实现这一目标的最佳方法。