Вывод в while кроме одного значения

274
23 января 2017, 21:41

Есть запрос в бд на вывод всех строк Потом в цикле мы получаем все ид Как сделать, чтобы он выводил все ид, кроме, например первого ид

while($row = $db->get_row($sql_cat))
{
    $cat .= $row['id'];
}
Answer 1

Ну в самом простом случае:

while($row = $db->get_row($sql_cat))
{
    if($row['id'] == 15) {
       continue;
    }
    $cat .= $row['id'];
}

Документация: http://php.net/manual/ru/control-structures.continue.php

Обратите внимание: напрямую так делать в реальных приложениях не всегда хорошо, т.к. фактически хардкодится некоторая константа и не всегда вывод начинается с id =1 или id = 15, более правильно будет привести код к следующему виду:

$is_first_row = true;
while($row = $db->get_row($sql_cat))
{
    if($is_first_row) {
       $is_first_row = false;
       continue;
    }
    $cat .= $row['id'];
}

Также если вы работаете с базой -- то вы могли бы и на более раннем этапе (при составлении запроса к базе) отфильтровать это значение. Оно вряд ли бы сильно сэкономило бы ресурсы, просто для общего понимания. Вы же работаете с MySql? Почитайте про LIMIT и OFFSET.

Вариант с if помогает пропустить любую строку (в начале, в середине) или несколько строк с любым условием. Используя LIMIT+OFFSET вы сможете пропустить первую строку, в середине не получится. Плюс, я подозреваю, что вы хотите вывести "все, кроме первой" -- а для этого нужно задать заведомо большое число. Вообще это "все" в реальных приложениях редко нужно, обычно ставят пагинацию...

Плюс, почитайте для общего понимания вот этот вопрос: Пропустить первую запись в цикле foreach - там описаны варианты для других циклов.

READ ALSO
Чтение txt документа и выгрузка в mysql

Чтение txt документа и выгрузка в mysql

Доброго времени суток! Есть txt файл с большим количеством строк, размер документа 15 - 30 мб

298