如果从MySql获取的数据小于* number *,请显示此信息,否则显示其他内容?

时间:2009-09-15 13:54:48

标签: php mysql fetch

您好网络编程硕士。 我有这个代码:

<?PHP

$db_user = 'user';
$db_pass = 'password';
$db_name = 'dbname';
$db_host = 'localhost';
if(mysql_connect($db_host,$db_user,$db_pass)) {
    mysql_select_db($db_name);
    mysql_query("CREATE TABLE IF NOT EXISTS smsads(id bigint unsigned primary key auto_increment, link varchar(255), fromnum varchar(60))");
    $res = mysql_query("SELECT * FROM smsads ORDER BY id DESC LIMIT 36");
    while($row = mysql_fetch_object($res)) {

        if ($res>=36){

        $http_link = $row->link;
        $root_link = strpos($http_link, '/');
            if ($root_link !== false) {
            $before = substr($http_link, 0, $root_link);
        }

        echo "<div id=\"banner\"><a href=\"http://{$before}\" alt=\"{$before}\" title=\"{$before}\" target=\"_blank\"><img src=\"http://{$http_link}\" /></a></div>";
    }
        else {
            echo $res . "<div id=\"banner\"></div>";
        }
    }
}
?>
</div>

正如我们所看到的,获取的行数限制为36.如果行小于36,如何显示现有的行,再添加其他内容直到36? 例如,这是一个像素广告的脚本,我想要显示现有的像素(例如,我有20个插入的像素),并将空盒子显示为其他空白的地方(共36个地方 ​​- 已放置20个项目= 16个空位)直到计数达到36个盒子。

正如你所看到的,我试过“If”,“else”,但它总是只显示空盒子(因为我不知道如何告诉它显示结果+空盒子)......

3 个答案:

答案 0 :(得分:2)

将所有内容重写为for循环,它也使一切变得更容易理解:

for($cnt = 0; $cnt < 36; $cnt++){
    if($row = mysql_fetch_object($res)){
        // In here you should have the code for the boxes to be filled.
        $http_link = $row->link;
        $root_link = strpos($http_link, '/');
        if ($root_link !== false) {
            $before = substr($http_link, 0, $root_link);
        }
        echo "<div id=\"banner\"><a href=\"http://{$before}\" alt=\"{$before}\" title=\"{$before}\" target=\"_blank\"><img src=\"http://{$http_link}\" /></a></div>";
    }else{
        // In here you should have the code for the empty boxes
        echo "<div id=\"banner\"></div>";
    }
}

这将总是遍历循环36次,那些时候它会找到一行它将打印行,否则它将打印空的横幅标记。

答案 1 :(得分:0)

使用mysql_num_rows

if (mysql_num_rows($res) >= 36) {
    // ...
}

答案 2 :(得分:0)

如果if语句为true,您是否测试了执行的代码?