我是一个自学成才的程序员,所以我可能会忽略一些我在类里面没有学到的非常简单的答案,但是......
我有一个充满不同业务的数据库,其中它们的唯一 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
现在回答我的问题 - 这一直有效,直到所有 View 都达到“9”,然后它似乎只选择了两个广告(每个尺寸各一个)来始终显示。因此,在示例中,您可能希望选择 Business 4
,但由于某种原因,始终选择 business 3
。
此外,当我在 PhpMyAdmin 中进行调查并单击列名 views
以按 View 排序时,这两个业务始终位于顶部或底部(分别为 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>
希望这些信息足够了,非常感谢您的帮助!
最佳答案
确保您的“views”列设置为类型“int”而不是“char”或“varchar”,否则它不会按您预期的方式排序。
关于php - 在 mysql 中,一行总是在最上面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11369157/