【发布时间】:2012-05-26 00:26:30
【问题描述】:
我有这个查询,它在动态表中显示我的“页面”,但是它显示所有页面,我想限制“页面”仅在其“campaignid”列与当前“campaign”列匹配时显示",有没有人有什么想法。
这是显示数据的查询:
$counter=1; $userID=PageDB::getInstance()->get_user_id_by_name($_SESSION['user']); $result=PageDB::getInstance()->get_pages_by_campaign_id($campaignID);
$i=0;
while ($row = mysqli_fetch_array($result)):
$style = "";
if($i%2==0)
{
$style = ' style="background-color: #EFEFEF"';
}
echo "<tr".$style.">";
echo "<td>" . htmlentities($row['pid']) . "</td>";
echo "<td>". htmlentities($row['id']) . "</td>";
?>
<td>
<form style="display:none;"></form>
<form name="editPage" action="editPage.php" method="GET">
<input type="hidden" name="pageID" value="<?php echo $pageID = $row['pid']; ?>" />
<input type="submit" name="editPage" value="<?php echo "Page " . $counter; ?>" style="padding-top:4px; padding-bottom:6px;background:none;border:none; cursor:pointer"/>
</form>
</td>
<?php
$pageID = $row['pid'];
$counter++;
$i++;
echo "</tr>\n";
endwhile;
mysqli_free_result($result);
?>
这就是我查询数据库的方式。
public function get_pages_by_campaign_id($campaignID) {
$campaignID = $this->real_escape_string($campaignID);
return $this->query("SELECT pid,campaignid,id,campaign_name FROM pages,campaigns WHERE pages.campaignid = campaigns.id ORDER BY campaigns.id LIMIT 1,10");
}
正如我所说,它返回的是正确的数据,但我只想在以下位置显示数据: pages.campaignid =campaign.id [1] 或 pages.campaignid =campaign.id [r] 等等...
【问题讨论】:
-
Campaigns 表是否有一个列来指定哪个是当前的营销活动,或者甚至是一个用于将以前的营销活动标记为完成的列?我要做的是,在添加新广告系列时,您将更新该用户/页面的先前广告系列以将其设置为已过期,这将允许您使用
where campaigns.expired = 0仅显示当前广告系列。 -
我想我发现了我的问题,指向此页面/表单的页面没有解析整个广告系列 ID,因此表单无法引用广告系列 ID。有人对此有什么建议吗?
-
查看您的功能
get_pages_by_campaign_id您没有使用where来选择广告系列。试试$this->query("SELECT pid,campaignid,id,campaign_name FROM pages,campaigns WHERE pages.campaignid = campaigns.id where pages.campaignID = $campaignID ORDER BY campaigns.id LIMIT 1,10")