Я создал код, в котором я получаю все числа за месяц, а затем добавляю события из своей базы данных. Мне нужно, чтобы числа поступали из базы данных в $ sqldates. Теперь я получаю только массив, как когда я повторяю $ sqldates. У меня сейчас в базе 4, 10, 22 и 26.
Вот что я сейчас получаю, посмотри на картинку введите описание изображения здесь
Это результат, который я хочу посмотреть на эту картинку.
введите описание изображения здесь
Как мне получить результаты из моей базы данных, как показано на рисунке 2? Пожалуйста, помогите, как получить числа из массива.
<table>
<?php
//database connent
include 'con.php';
//get day from event
$sql = "SELECT day, color FROM events";
$result = mysqli_query($con, $sql);
$sqldates = array(array('day', 'color_value'), array('date_value', 'color_value'), array('date_value', color_value));
while($row=mysqli_fetch_array($result)){
array_push($sqldates, $row['day'], $row['color'] );
echo $row['day'];
}
$counter = 0;
//first day
$firstday = '1';
$two = cal_days_in_month(CAL_GREGORIAN, 8, 2018); // 31
//for loop get all day in month
for ($number = $firstday; $number <= $two; $number++)
if (in_array($number , $sqldates)) {
echo "<td width=50 bgcolor='#{$sqldates[$counter][1]}'>$sqldates[$counter][0]</td>";
$counter++;
} else {
echo"<td width=50 bgcolor='#1e8e8e'>$number</td>";
}
?>
</table>
Нет, число $ дает мне результат от php. Мне нужно получить числа из базы данных. $ Sqldates var.
Верно, но $sqldates - это массив чисел, который вы хотите выделить красным, а $number - это само число ..






Вы пытаетесь отобразить массив. Вместо этого вы должны вывести значение из этого массива с указанным индексом. Если я не ошибаюсь, это должно сработать:
//first day
$firstday = '1';
$two = cal_days_in_month(CAL_GREGORIAN, 8, 2018); // 31
//for loop get all day in month
$counter = 0;
for ($number = $firstday; $number <= $two; $number++)
if (in_array($number , $sqldates)) {
echo"<td width=50 bgcolor='#f44242'>$sqldates[$counter]</td>";
$counter++;
} else {
echo"<td width=50 bgcolor='#1e8e8e'>$number</td>";
}
Он находится внутри цикла for, когда я добавляю ваш код, я получаю только одну зеленую ячейку с 32 в ней. Думаю, петля повлияет на ваш ответ. Это почти работает, когда я эхо "<td width = 50 bgcolor = '# f44242'> $ sqldates [0] </td>"; но все равно ошибаюсь, я получаю по 4 в каждой красной ячейке.
Просто положите $ counter = 0; перед циклом for, и он будет работать :)
Хорошо, это сработало. Если я хочу добавить вторую строку в свой массив, чтобы получить цвет из моей базы данных, это большое изменение? Добавьте строку $ row ['color'])
Это зависит от вашего подхода ... Вы можете использовать многомерный массив. Таким образом, вы получите что-то вроде этого: $ sqldates = array (array ('date_value', 'color_value'), array ('date_value', 'color_value'), array ('date_value', color_value)); и т.д. И когда вы читаете из этого массива: echo "<td width = 50 bgcolor = '{$ sqldates [$ counter] [1]}'> $ sqldates [$ counter] [0] </ t d>"; Но первая версия намного чище и проще для понимания. Я надеюсь, что это было полезно :)
Я обновил свой код, не получил куда мне поместить строку $ row ['color']?
Для вашего обновленного вопроса это должно быть хорошим руководством:
<table>
<?php
//database connect
include 'con.php';
//get day from event
$sql = "SELECT day, color FROM events";
$result = mysqli_query($con, $sql);
$sqldates = array();
$colors = array();
while($row=mysqli_fetch_array($result)){
array_push($sqldates, $row['day']);
array_push($colors, $row['color']);
}
//first day
$firstday = '1';
$two = cal_days_in_month(CAL_GREGORIAN, 8, 2018); // 31
//for loop get all day in month
$counter = 0;
for ($number = $firstday; $number <= $two; $number++)
if (in_array($number , $sqldates)) {
echo "<td width=50 bgcolor='$colors[$counter]'>$sqldates[$counter]</td>";
$counter++;
} else {
echo"<td width=50 bgcolor='#1e8e8e'>$number</td>";
}
?>
</table>
Обратите внимание, что вам необходимо определить цвет для каждого дня, иначе вы получите уведомление «Неопределенное смещение».
В этом решении вы фактически храните значение в одном массиве, а цвет - в другом (массивы должны быть одинакового размера). Используя это, вы можете иметь разные цвета для каждого дня, хранящегося в вашей базе данных.
Просто эхо
$numberвместо$sqldates...?