Определение наличия содержимого столбца, состоящего из нескольких строк, и динамическое создание столбцов таблицы

Я пытаюсь создать столбцы таблицы столько раз, сколько есть содержимого в определенных столбцах таблицы sql, а затем заполнить эти столбцы содержимым таким же образом. Приведенный ниже код используется для определения того, какие столбцы не пусты, и тем самым добавляет дополнительное значение к $n, которое будет использоваться для создания столбцов $n раз.

Хотя контент есть только в первых четырех столбцах, приведенный ниже код добавляется к $n, как если бы в пустых столбцах был контент. Как я могу проверить, есть ли содержимое у всего столбца с, возможно, несколькими строками?

$query = "
SELECT * 
  FROM analysis_database a
  JOIN microbiology_analysis_database m
    ON a.m_analysis_id = m.id 
 WHERE order_id = $order_id 
   AND a.analysis_type = 'Microbiological' 
   AND m.analysis_type = 'Microbiological';
";
    $result = mysqli_query($conn, $query);
    $fetch = mysqli_fetch_array($result);

$n = 0;
if (!is_null($fetch['step_1'])) {
    $n++;
} 
if (!is_null($fetch['step_2'])) {
    $n++;
} 
if (!is_null($fetch['step_3'])) {
    $n++;
} 
if (!is_null($fetch['step_4'])) {
    $n++;
} 
if (!is_null($fetch['step_5'])) {
    $n++;
} 
if (!is_null($fetch['step_6'])) {
    $n++;
} 
if (!is_null($fetch['step_7'])) {
    $n++;
} 
if (!is_null($fetch['step_8'])) {
    $n++;
} 
if (!is_null($fetch['step_9'])) {
    $n++;
}

Эта часть используется для динамического создания заголовков таблицы:

for ($k = 1 ; $k < $n; $k++) { 
    $output .= '<th>Step '.$k.'</th>';
}

А это для содержимого соответствующего заголовка:

for ($k = 1 ; $k < $n; $k++) { 
    <td>Column Content</td>;
}

Возможно ли заполнить более высокий шаг, когда более низкий шаг равен нулю?

Barmar 09.03.2019 22:05

Если вы хотите остановить подсчет на первом нулевом столбце, используйте elseif вместо if.

Barmar 09.03.2019 22:08
Предупреждение: Вы широко открыты для SQL-инъекции и действительно должны использовать параметризованный подготовленные заявления вместо создания запросов вручную. Они предоставляются ЗОП или MySQLi. Никогда не доверяйте никаким данным, особенно тем, которые исходят от клиента. Даже если ваши запросы выполняются только доверенными пользователями, вы все еще рискуете повредить свои данные.
Dharman 09.03.2019 22:44

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

Strawberry 10.03.2019 11:25

@Strawberry, если это работает, это не глупо, ха-ха! Это просто вопрос, основанный на сценарии, поэтому я предполагаю, что люди пытаются решить эту проблему, а не то, как они будут писать весь вопрос.

Roelof Coertze 10.03.2019 21:01
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
5
36
1

Ответы 1

Я думаю, проблема может заключаться в том, что msyqli_fetch_array() будет устанавливать значения null только в том случае, если их фактическое значение базы данных равно NULL. Из руководства по PHP:

Note: This function sets NULL fields to the PHP NULL value.

Таким образом, $fetch будет содержать первую строку, соответствующую вашему запросу, а $fetch['step_5'] будет нулевым, только если он равен NULL в базе данных. Может быть, это пустые строки?

Согласно комментарию Бармара, возможно, вы попытаетесь использовать empty() вместо is_null().

Вы должны объяснить, как это сделать лучше, например. использовать if (!empty($fetch['step_5']))

Barmar 09.03.2019 22:07

Спасибо за этот отзыв!

jferina 09.03.2019 22:08

Хм, действительные значения в базе данных NULL?

jferina 10.03.2019 01:52

Другие вопросы по теме