Тернарный оператор в цикле PHP

Рейтинг: 2Ответов: 1Опубликовано: 11.04.2011

Здравствуйте. Интересует тернарный оператор в php. Написал такую вот функцию:

function links()
{
    if ($qname = mysql_query("SELECT * FROM guestbook"))
    {
        $qnum = mysql_num_rows($qname);

        for ($i = 1; $i < ($qnum < 10 ? 1 : $qnum / 10) ; $i++)
        {
             echo "<div class='links'>"."<a href='/testphp/guestbook/guestbook.php?id=".$i."'>".$i."</a>"."</div>";
        }
     echo "<br />";
    }
}

php ругается "Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource..." так нельзя?

Ответы

▲ 4Принят

Я давно на PHP не писал, но, насколько помню - правильно. И проблема где-то в другом месте.

Заодно позволю себе посмотреть на Ваш код с другой стороны ;) Предположим, у Вас в гостевой записей пара миллионов - спасибо спамботу. Может, стоит тогда на уровне SQL-запроса выбрать количество "не более чем"? Например вот такой всевдо-SQL-код:

SELECT * FROM guestbook WHERE (какое-то условие)
    ORDER BY timestamp DESC
    LIMIT 10
    OFFSET 10*(page-1)

где page - номер текущей страницы.

Для выяснения же общего количества записей лучше использовать отдельный запрос, например: SELECT COUNT(id) FROM guestbook

Еще маленький совет: используйте наиболее свежие библиотеки доступа к MySQL, а еще лучше - используйте ORM.