这是我的分页脚本:
<?php
/***********************************
* PhpMyCoder Paginator *
* Created By PhpMyCoder *
* 2010 PhpMyCoder *
* ------------------------------- *
* You may use this code as long *
* as this notice stays intact and *
* the proper credit is given to *
* the author. *
***********************************/
?>
<head>
<title> Pagination Test - Created By PhpMyCoder</title>
<style type="text/css">
#nav { font: normal 13px/14px Arial, Helvetica, sans-serif; margin: 2px 0; }
#nav a { background: #EEE; border: 1px solid #DDD; color: #000080; padding: 1px 7px; text-decoration: none; }
#nav strong { background: #000080; border: 1px solid #DDD; color: #FFF; font-weight: normal; padding: 1px 7px; }
#nav span { background: #FFF; border: 1px solid #DDD; color: #999; padding: 1px 7px; }
</style>
</head>
<?php
//Require the file that contains the required classes
include("pmcPagination.php");
//PhpMyCoder Paginator
$paginator = new pmcPagination(20, "page");
//Connect to the database
mysql_connect("localhost","root","PASSWORD");
//Select DB
mysql_select_db("tvguide");
//Select only results for today and future
$result = mysql_query("SELECT programme, channel, airdate, expiration, episode, setreminder FROM epdata1 where airdate >= now() order by expiration GROUP BY airdate");
//You can also add reuslts to paginate here
mysql_data_seek($queryresult,0) ;
while($row = mysql_fetch_array($result))
{
$paginator->add(new paginationData($row['programme'],
$row['channel'],
$row['airdate'],
$row['expiration'],
$row['episode'],
$row['setreminder']));
}
?>
<?php
//Show the paginated results
$paginator->paginate ();
?><? include("pca-footer1.php"); ?>
<?php
//Show the navigation
$paginator->navigation();
?>
但是,我有两个表,它们是epdata1(我的节目主持人的播出时间是这里)和housemdep加上setreminder表。
如何使用与此相关的外键?我不确定这是否适用于我的脚本,但我愿意尝试。
我想要做的是从表housemdep中选择某些剧集 (节目的剧集)如果选择任何节目,则将其显示为:
House M.D. showing on Channel 1 June 6th - 8:00pm "Wilson" Set Reminder
House M.D. showing on Channel 1 June 7th - 1:30am "Wilson" Set Reminder
House M.D. showing on Channel 1 June 7th - 12:55pm "House's Head" Set Reminder
或者像这样,如果我没有从行中选择一集:
House M.D. showing on Channel 1 June 7th - 8:00pm "House's Head" Set Reminder
House M.D. showing on Channel 1 June 8th - 9:00pm Set Reminder
House M.D. showing on Channel 1 June 9th - 2:30pm Set Reminder
House M.D. showing on Channel 1 June 7th - 8:00pm "Que Sera Sera" Set Reminder
外键和相互关联的表的关系对我来说是新的,如果有人可以提供帮助,我会很感激。
另外,我正试图为我的程序设置这个(如果你在浏览器中点击View Source,这就是代码的呈现方式):
<tr><td><b><a href="housemd.php">House M.D.</a></b></td><td>showing on <a href="channel/1"><i>Channel 1</i></a></td><td>June 9th - 7:00pm</td><td><b>"<a href="episodes/714790">House's Head</a>"</b></td><td><img src="reminder.gif" height="16" width="22"> <a href="reminder.php" alt="Set a reminder" target="_top">Set Reminder</a></td></tr>
House M.D。于6月10日 - 12:25在第1频道上露面“House's Head”设置提醒 House M.D。于6月10日下午12:55在第1频道上展示设置提醒 House M.D。在第1频道 6月10日 - 晚上9:00 “Wilson”设置提醒 House M.D。 6月11日 - 1:30在第1频道上露面“Wilson”设置提醒 House M.D。在第1频道 6月11日 - 晚上8:00 “生活在梦中”设置提醒 House M.D。在第1频道 6月12日 - 晚上7:00展示设置提醒
我已经尝试了谷歌在另一个版本的脚本中建议外键的一些内容(这是我运行Apache和PHP 5.28 / MySQL的localhost服务器上的原始克隆),但我不知道如何实现这个
感谢。
答案 0 :(得分:0)
如果我理解你在说什么,那么你希望让SQL查询连接两个表,并根据数据库的响应,根据是否在一个表或另一个表中找到行来显示行的方式有所不同。
你是正确的联接是你正在寻找的,它只是听起来你需要了解联接的类型。 INNER JOIN用于以下情况:您希望一个表中的行始终对应于另一个表中的行(如果没有相应的行,则永远不返回行)。 LEFT JOIN适用于您从一个表查询数据的情况,但您可能在另一个表中有或没有相应的行。
例如:一个人总是有父母(INNER JOIN)。
SELECT
person.id,
relative.id
FROM
person
INNER JOIN
relative
ON
person.biological_mother_id = relative.id
在此示例中,将返回行,其中person.id和relative.id都将具有值,否则,数据库将不返回行,因为这些行与INNER JOIN条件不匹配。
但是,一个人不会总是有宠物(LEFT JOIN)。
SELECT
person.id,
pet.id
FROM
person
LEFT JOIN
pets
ON
person.id = pets.owner_id
在这种情况下,可以返回行,其中person.id具有值,但pet.id没有值(在某些情况下为NULL值)。这是因为LEFT JOIN没有像INNER JOIN那样对返回的行设置约束,而是说“left”或“primary”表可以返回行值,但对于“right”或“secondary”它是可选的“表返回值。
通过这种方式,我们使用关系数据库来询问有关表之间关系的问题。如果您执行上述宠物查询,并且pet.id返回null,则表示该人没有宠物。