【问题标题】:Pagination script - getting data from two tables分页脚本 - 从两个表中获取数据
【发布时间】:2010-07-28 20:36:21
【问题描述】:

我有一个分页脚本,可以在这里看到: http://www.automotori6282.tk/phpsandbox/

这是源代码:

http://pastebin.com/raw.php?i=63dCvfxD(PmcPagination.php)

http://pastebin.com/raw.php?i=3k4nqwRB(demo.php,代码在的页面)

http://www.automotori6282.tk/phpsandbox/ 的 index.php 只是使用 PHP 的 include() 函数来显示 demo.php

我要做的是从两个表中提取分页。

这是我当前的数据库结构:


programme   varchar(255)    
channel     varchar(255)    
episode     varchar(255)
series  varchar(255)            
setreminder     varchar(255)    

但是,我将剧集存储在单独的表中,并且想进行查询,从 epdata167 和剧集表中提取(剧集表只有剧集、系列号、剧集号和描述作为其字段)。

我在分页脚本中犯的一个错误显示在这里:

TV Show showing on Channel 1 August 3rd - 12:30pm "" Set Reminder
TV Show showing on Channel 1 August 3rd - 8:30pm "Episode 1" Set Reminder

事件发生后它仍然存在很长时间。

它应该是这样工作的:

 TV Show showing on Channel 1 August 3rd - 12:30pm  
 TV Show showing on Channel 1 August 3rd - 2:45pm Set Reminder
TV Show showing on Channel 1 August 3rd - 8:30pm "Episode 1" Set Reminder

注意设置提醒字段在事件发生时不显示,如果未选择剧集,则没有引号。

(setreminder 字段基本上是一个链接,用户单击该链接以向他们发送提醒,说“电视节目正在第 1 频道播出,8 月 3 日 - 晚上 8:30 第 1 集”或“电视节目今天 8 点播出:30pm 第 1 集”。但是,现在正在播放的节目不会显示,它会显示如下:

    TV Show showing on Channel 1 August 3rd - 12:30pm 

)

这是导致麻烦的分页代码:

$result = mysql_query("SELECT program, channel, airdate, expiration, episode, series, setreminder FROM epdata167 where airdate > curdate() GROUP by airdate");

这是我编辑的分页代码的一部分,试图使用 ifelse 语句,但不知道该怎么做:

class paginationData {
private $program;
private $channel;
private $airdate;
private $exiration;
private $episode;
private $series;
private $setReminder;

public function __construct($program, $channel, $airdate, $expiration, $episode, $setReminder)
{
    $this->program = $program;
    $this->channel = $channel;
  $this->airdate = strtotime($airdate);
    $this->expiration = $expiration;
    $this->episode = $episode;
    $this->setReminder = $setReminder;
}

//This function shows the data
public function display()
{
    if(date('Y-m-d') == date('Y-m-d', $this->airdate)) $dateFormat = 'g:ia';
    elseif(date('Y') == date('Y', $this->airdate)) $dateFormat = 'F jS - g:ia';
    else $dateFormat = 'F jS, Y - g:ia';

    echo '<tr>'."\n".
         '  <td><strong>'.$this->program.'</strong></td>'."\n".
         '  <td>showing on '.$this->channel.'</td>'."\n".
         '  <td>'.date($dateFormat, $this->airdate).'</td>'."\n".
         '  <td><b>"'.$this->episode.'"</b><br></td>'. "\n".
         '  <td>'.$this->setReminder.'</td>'."\n".
         '</tr>'."\n";
}

}

基本上,我在我的项目中尝试获取这样的数据时遇到了麻烦:

     TV Show showing on Channel 1 August 3rd - 12:30pm  
 TV Show showing on Channel 1 August 3rd - 2:45pm Set Reminder
TV Show showing on Channel 1 August 3rd - 8:30pm "Episode 1"
                                                  Series 1, episode 1 Set Reminder

(如果这一集是带有系列编号的系列的一部分)

不确定要使用什么 JOIN 以及在哪里使用,感谢所有帮助,因为我已经让分页工作了;只是试图让更精细的细节发挥作用!

我不是要求人们为我做这件事,我一直在学习自己,并且已经完成了我的研究。

对不起,如果这看起来有点长,但我希望我已经解释了一切。

谢谢。

【问题讨论】:

  • 老兄,这是一个完整的代码。尝试将您的问题分解为一个或多个合理长度的问题。分而治之是你的朋友!
  • 我不想用大量问题向网站发送垃圾邮件,我已经解决了分页的基本问题。

标签: php mysql apache pagination


【解决方案1】:

您需要使用 UNION 才能使其工作。

【讨论】:

  • 这是我应该在分页脚本中使用的查询类型吗?:plus2net.com/sql_tutorial/sql_union.php 另外,至于通过电子邮件发送的提醒,我将如何让它工作(并且不显示当事件发生时)。
猜你喜欢
  • 2020-05-01
  • 2019-05-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-14
相关资源
最近更新 更多