Уважаемые посетители. Есть вопрос. Суть ситуации - необходимо вывести данные из базы в таблицу на странице. Если запись в БД есть, выводить содержимое в ячейку, если нет - отрисовывать пустую клетку в таблице.
Сейчас данные отрисовываются только те, которые возвращает запрос, т.е. данные по которым есть в БД, остальное - игнорируется. Пробовал несколько вариантов вывода.
Есть еще особенность - количество дней, которое показывает соответствует данным из БД, и если смотреть исходный код страницы, то данные о конкретном дне добавились в с нужным id, но опять же пустых клеток нет.
Понял в чем проблема: массив arr - многомерный, ассоциативный. Не той функцией перебираю его и ищу значение $id в нем. Теперь другая сложность, как найти динамично изменяющийся $id в многомерном ассоциативном массиве. Нашел несколько статей на эту тему, но увы...
Прилагаю скрин.
$id = strtoupper($info[$i]['id'])."-".$gluing_date; // делаю уникальный id для каждого элемента <td>, чтобы записывать данные в нужную ячейку
$sql = "SELECT id, work_date, cause
FROM month_detail
WHERE id = '".strtoupper($info[$i]['id'])."'
AND work_date = '".$gluing_date."'
";
$query = mysqli_query($connect,$sql); //Выполнение запроса в БД;
// цикл отрисовки ячеек таблицы
$t=0;
while ($row = mysqli_fetch_assoc($query))
{
$arr[$t]['cause'] = $row['cause'];
$arr[$t]['concat'] = $row['id']."-".$row['work_date'];
if (in_array($id,$arr)){ //проверка $id клетки <td> в получаемом массиве, чтобы записать конкретную запись именно в этот id
echo "<td class='day'; id='".$id."'> ".$arr[$t]['cause']." </td>"; // если $id есть в массиве $arr, то отрисовать <td> с содержимым из БД
} else {
echo "<td class='day'; id='".$id."'> </td>"; // если нет - рисовать пустую клетку
}
$t++;
}
Вы смотрели исходник страницы, которая выводится? Если там есть
<td></td>
то пустые ячейки выводятся, просто их не видно в браузере.
Попробуйте подставить вместо неразрывного пробела какую-нибудь букву и посмотреть, выводится ли она.
Задайте ячейкам ширину и высоту с помощью css, можно задать радиус. И будет работать
<td style="border: 1px solid red; width: 50px; height: 50px;"> </td>
Железно рисует ячейку
Выбор, присвоение и логика составлено логически правильно. Некорректно подобрана функция, которая осуществляет поиск значения в массиве.
В условии
if (in_array($id,$arr)){ //проверка $id клетки <td> в получаемом массиве, чтобы записать конкретную запись именно в этот id
echo "<td class='day'; id='".$id."'> ".$arr[$t]['cause']." </td>"; // если $id есть в массиве $arr, то отрисовать <td> с содержимым из БД
} else {
echo "<td class='day'; id='".$id."'> </td>"; // если нет - рисовать пустую клетку
}
Использовать функцию in_array - недопустимо, так как поиск осуществляется в многомерном ассоциативном массиве. По-этому описанное условие не выполняется.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Здравствуйте, имеется файл импорта (неизвестно как сгенерирован) xlsx (2007)Файл в принципе читается, но сыпется ошибка на Excel2007
Имеется база из 6000 элементов(и это не предел), в ней 35 полей из которых половина обновляется чуть ли не каждые 5 минут(а у некоторых записей...
Нужно прибавить к текущей дате разницу между часовыми поясамиВ чем суть, у меня часовой пояс GMT +2, необходимо выводить время пользователей