Если извлеченные данные из MySql меньше чем * число *, покажите это, иначе покажите что-нибудь еще? - PullRequest
0 голосов
/ 15 сентября 2009

Привет мастера веб-программирования. У меня есть этот код:

<?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 ]

2 голосов
/ 15 сентября 2009

Переписать все в цикл 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 раз, в тех случаях, когда он найдет строку, он напечатает строку, иначе он напечатает пустой тег баннера.

0 голосов
/ 15 сентября 2009

Вы проверяли код, который выполняется, если оператор if истинен?

0 голосов
/ 15 сентября 2009

Использование mysql_num_rows :

if (mysql_num_rows($res) >= 36) {
    // ...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...