Я не могу заставить свой PHP-скрипт повторять второй оператор else, если первый результат пуст.

В настоящее время мой скрипт работает так: «Печатать адреса (из другого массива) > Список комментариев», однако, даже если комментарий пуст для адреса, он либо печатает комментарии, либо ничего, я не могу заставить скрипт повторять слово «Без комментариев». ".

if(!empty($row['id']))
        {
        echo "$row[comment]<br/>";
        }
        else
        {
            echo "no comment<br/>";
        }

Любая помощь приветствуется. Спасибо.

0
liveman 3 Янв 2012 в 02:45
Попробуйте var_dump($row), чтобы увидеть, что именно содержит ваш массив. Сопоставьте его с таблицами сравнения типов, чтобы увидеть, что происходит.
 – 
cmbuckley
3 Янв 2012 в 02:47

1 ответ

Предполагая, что это исходит из базы данных и каждая строка имеет id, это будет всегда верно:

if(!empty($row['id']))

Пытаться:

if(!empty($row['comment']))

Если id является чем-то другим, применяется та же логика: проверьте значение, которое вы собираетесь напечатать:

if (!empty($row['id']) && !empty($row['comment']))
{
    echo $row['comment'].'<br/>';
}
else
{
    echo "no comment<br/>";
}

РЕДАКТИРОВАТЬ: Если этот код перебирает все комментарии, прикрепленные к сообщению или что-то в этом роде, то никогда не будет никакого вывода, если нет комментариев для перебора. В этом случае попробуйте что-то вроде этого:

if (count($comments) === 0)
{
    echo "no comments<br />";
}
else
{
    foreach ($comments as $row)
    {
        if (!empty($row['comment']))
        {
            echo $row['comment'].'<br />';
        }
        else
        {
            echo "no comment<br />";
        }
    }
}

ИЛИ ЖЕ:

$comment_count = 0;

foreach ($comments as $row)
{
    if (!empty($row['comment']))
    {
        echo $row['comment'].'<br />';
        $comment_count++; // We have at least one comment
    }
    else
    {
        echo "no comment<br />";
    }
}

if ($comment_count === 0) echo 'no comments<br />';
4
Wesley Murch 3 Янв 2012 в 03:12
Привет, я пробовал это, однако он по-прежнему повторяет то же самое, что и раньше. Чтобы дать вам лучшее представление о том, что я пытаюсь сделать, я приложил скриншот ссылка[/link] IT сначала просматривает свойства, а затем отображает соответствующие комментарии. Я просто не могу понять, почему он не скрывает пустые записи. На приложенном снимке экрана они отображаются в виде желтых линий по всей странице (где css должен обернуть результат). Спасибо за вашу помощь до сих пор ...
 – 
liveman
3 Янв 2012 в 02:56
Я предположил, в чем ваша проблема, если это не поможет, вам нужно будет добавить свой полный соответствующий код в свой пост.
 – 
Wesley Murch
3 Янв 2012 в 03:12
Ну комментарий печатается без проблем. Результаты извлекаются из базы данных, а комментарии извлекаются (и перечисляются). Если идентификатор дома совпадает с домом комментария, то комментарий отображается (и печатается по порядку) с использованием массива.
 – 
liveman
3 Янв 2012 в 03:19
Я не понимаю, что должен делать if(!empty($row['houseid'])), когда ваш SQL-запрос включает where houseid = ".$row['id'].". Вы пробовали любой метод в моем редактировании? Я не видел этого в пасти (которую вы должны вставить прямо в свой пост здесь, используйте инструменты форматирования кода). Попробуйте проверить if (mysql_num_rows($result2) === 0), а затем напечатать текст "Без комментариев".
 – 
Wesley Murch
3 Янв 2012 в 08:55