我是一名自学成才的编码员,所以我可能会忽略一些我在课堂上没有提到的非常简单的答案,但是...
我的数据库中有很多不同的商家,他们的Unique ID
与我服务器上的图片名称相对应。每当我的网站上的页面加载时,我希望php以最少的视图获取业务(以及后续广告)。如果它是相关的,我也有两种不同的广告尺寸。我会试着说明一下。
表:
Business Name | Unique ID | Views | Size
--------------+-----------+-------+------
Business 1 | 1 | 50 | Small
Business 2 | 2 | 9 | Small
Business 3 | 3 | 67 | Large
Business 4 | 4 | 9 | Large
所以我使用这个脚本来检索具有最低视图的业务
SELECT * FROM ads WHERE size='Large' ORDER BY views ASC
现在我的问题 - 这一切都有效,直到所有观看到“9”,然后看起来它只是选择两个广告(每个尺寸中的一个)来始终显示。因此,在示例中,您希望选择Business 4
,但出于某种原因,business 3
始终是所选择的。{/ p>
此外,当我在PhpMyAdmin中进行调查并点击列名views
以按视图排序时,两个业务总是位于顶部或底部(分别为ASC和DESC),从不混入列表。现在,当我对ASC进行排序时,我得到了:
Views
50
67
9
9
9
9
50和67显然不是正确的顺序,它们是总是显示在网页上的两个。似乎在“9”之后这两个被分配了某种优先级,我无法弄清楚。
我还应该提到在特定网页调用时处理表的方式:
$result = mysql_query("SELECT * FROM ads WHERE size='Large' ORDER BY views ASC") or die(mysql_error());
$productCount = mysql_num_rows($result); // count the output amount
if ($productCount > 0) {
if($row = mysql_fetch_array($result)){
$id = $row["id"];
$url = $row["url"];
$views = $row["views"];
$businessName = $row["businessName"];
}
}
$views = $views + 1;
$sql = mysql_query("UPDATE ads SET views='$views' WHERE id='$id'");
这是我网站上每个页面的php代码。
广告以此HTML代码显示:
<div id="ad1">
<a href="<?php echo $url; ?>" target="_blank"> <img src="inventory_images/<?php echo $id; ?>.jpg" alt="<?php echo $businessName; ?>" height="144" width="216"/></a>
</div>
希望这是足够的信息,非常感谢您的帮助!
答案 0 :(得分:1)
确保您的“views”列设置为“int”而不是“char”或“varchar”,否则它将不会按预期排序。