Я пытаюсь создать столбцы таблицы столько раз, сколько есть содержимого в определенных столбцах таблицы 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>;
}
Если вы хотите остановить подсчет на первом нулевом столбце, используйте elseif вместо if.
Такого рода проблемы являются симптомом плохой конструкции. Подумайте о пересмотре вашей схемы, хотя я озадачен, почему никто не упомянул об этом раньше.
@Strawberry, если это работает, это не глупо, ха-ха! Это просто вопрос, основанный на сценарии, поэтому я предполагаю, что люди пытаются решить эту проблему, а не то, как они будут писать весь вопрос.






Я думаю, проблема может заключаться в том, что 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']))
Спасибо за этот отзыв!
Хм, действительные значения в базе данных NULL?
Возможно ли заполнить более высокий шаг, когда более низкий шаг равен нулю?