0

我有一个查询,它会提取新闻故事,然后附加与特定故事相关的任何照片。这一切都很好,但我最近添加了一个功能来提取与故事相关的视频,它会导致显示重复的图像或视频链接。

例如,我有一个包含 3 张图片和 1 个视频的新闻报道。目前它会在每张图片旁边发布一个视频,因此它会显示 3 次。我真正想要展示的是新闻报道,然后是任何图片,然后是任何视频。

这是php

$sLastStory = '';
foreach ($result AS $row)
{
    $sStory = $row['headline'] . $row['story'];
    if (strcasecmp($sStory, $sLastStory) != 0)
    {
        if (!empty($sLastStory))
        {
            print('<hr>' . PHP_EOL);
        }
        $sLastStory = $sStory;


        printf('<h2>%s</h2>' . PHP_EOL, $row['headline']);

        printf('<a href="parknews.php?park_id=%s">
        <h3>%s</a> - %s</h3>' . PHP_EOL, $row['park_id'], $row['name'], $row['Displaydate']);

        printf('<p>%s</p>' . PHP_EOL, $row['story']);
    }

if(!empty($row['url'])){   
printf('
<a href="/images/%s%s.jpg" rel="lightbox[%s]" title="%s - Credit - %s" >
<img src="/images/%s%s-thumb.jpg" style="min-height: 200px; min-width: 200px" alt="%s"/></a>' . PHP_EOL, $row['url'], $row['alt'], $row['headline'],  $row['description'],$row['credit'], $row['url'], $row['alt'], $row['alt'] );
}

if(!empty($row['location'])){   
printf('<iframe width="640" height="360" src="%s" frameborder="0" allowfullscreen></iframe>' . PHP_EOL, $row['location'] );
}

}

我对 PHP 不是很好,只是复制了这一部分:

if(!empty($row['url'])){   
printf('
<a href="/images/%s%s.jpg" rel="lightbox[%s]" title="%s - Credit - %s" >
<img src="/images/%s%s-thumb.jpg" style="min-height: 200px; min-width: 200px" alt="%s"/></a>' . PHP_EOL, $row['url'], $row['alt'], $row['headline'],  $row['description'],$row['credit'], $row['url'], $row['alt'], $row['alt'] );
}

然后将其粘贴在下面,但将其更改为视频查询而不是图像。任何想法如何修复它以正确显示?谢谢

编辑:这是查询

try
{
$sql = 'SELECT headline, story, DATE_FORMAT(date, "%d-%M-%Y") AS Displaydate, name, logo, tpf_parks.park_id, url, alt, description, credit, location
FROM tpf_news
INNER JOIN tpf_parks ON tpf_news.park_id = tpf_parks.park_id 
LEFT JOIN tpf_images ON tpf_news.news_id = tpf_images.news_id 
LEFT JOIN tpf_videos ON tpf_news.news_id = tpf_videos.news_id 
ORDER BY date DESC' ;
$result = $pdo->query($sql);
}
4

2 回答 2

0

很难说不做一些实际测试,但我会尝试处理你的$resultarray_unique($result)看看是否不能消除重复。

正如上面其他人所说,看看你是否可以print_r($result)为我们服务,也许我们可以弄清楚发生了什么。如果可以的话,还要发布 SQL 提取行。

于 2013-06-19T18:32:05.070 回答
0

SQL 的编写方式是为每张照片或视频返回一行,但视频行还包含指向照片的链接,反之亦然。你真正想要的是一个UNION,它表达了你展示照片和视频总和的意图。我建议使用两个查询。第一个只会得到故事的细节。

第二个会得到照片和视频。然后,您可以根据 news_id 合并数据结构。

 SELECT tpf_news_id, ... FROM tpf_images JOIN tpf_news ON tpf_news.news_id = tpf_images.news_id
 UNION
 SELECT tpf_news_id, ... FROM tpf_videos JOIN tpf_news ON tpf_news.news_id = tpf_videos.news_id;

使用 时UNION,您需要确保在两个查询中输出相同的名称和列数。

在您的代码中,您可以遍历新闻项目,然后为照片和视频创建一个内部循环,而无需重复检查该新闻故事是否与上一个新闻故事重复。

于 2013-06-19T19:21:12.417 回答