1

我是一名自学成才的编码员,所以我可能会忽略一些我在课堂上没有学到的非常简单的答案,但是......

我有一个充满不同业务的数据库,它们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始终是被选中的那个。

此外,当我在 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>

希望这是足够的信息,非常感谢您的帮助!

4

1 回答 1

1

确保您的“views”列设置为类型“int”而不是“char”或“varchar”,否则它不会按预期排序。

于 2012-07-06T20:23:48.757 回答