- $ref_system = $pdo->prepare("SELECT * FROM `db_ref_system` GROUP BY `rs_type` ORDER BY `id` ASC");
+ $ref_system = $pdo->prepare("SELECT * FROM `db_ref_system` ORDER BY `id` ASC");
<?php
$all = $ref_system->fetchAll();
$plc = array_filter($all, fn ($fields) => $fields['rs_type'] === 'plc');
$deposit = array_filter($all, fn ($fields) => $fields['rs_type'] === 'deposit');
$offer = array_filter($all, fn ($fields) => $fields['rs_type'] === 'offer');
?>
<?php foreach ([$plc, $deposit, $offer] as $level => $data): ?>
<div class="col-md-4 col-12 mb-lg-0 mb-4">
<div class="fw-bold h5 mb-3">
<?= $level + 1 ?>-й уровень
</div>
<?php foreach($data as $ref) : ?>
<div class="mb-4">
<span class="text-muted fw-semibold"><?=$ref['rs_type']?></span>
<div>
<div class="d-flex align-items-center pt-2">
<div class="progress w-100">
<div class="progress-bar bg-warning" role="progressbar" style="width: 100%;" aria-valuenow="100" aria-valuemin="0" aria-valuemax="100"></div>
</div>
<span class="ms-3 fw-bold text-warning"><?=$ref['rs_percent']?>%</span>
</div>
</div>
</div>
<?php endforeach; ?>
</div>
<?php endforeach; ?>
<img(?![^>]*\balt=)[^>]*>
const blocks = ref(Array.from({ length: 5 }, (_, i) => (-~i) ** 2));
const active = ref(0);
function next() {
active.value = (active.value + 1 + blocks.value.length) % blocks.value.length;
}
let intervalId = null;
onMounted(() => intervalId = setInterval(next, 500));
onUnmounted(() => clearInterval(intervalId));
<div
v-for="(n, i) in blocks"
v-text="n"
:class="[ 'box-item', { active: i === active } ]"
></div>
:nth-child
- не круто. Лучше сделать компонент, принимающий массив цветов и создающий блоки на его основе. Соответственно, вместо класса будет назначаться цвет фона напрямую, как-то так:<div
v-for="(n, i) in colors"
:style="{ backgroundColor: i === active ? n : '' }"
...
// Получаем массив $res
// Формируем массив дат
$list = [];
$minDate = strtotime('-7 days');
$maxDate = strtotime(date());
for($date = $minDate; $date <= $maxDate; $date += 24*60*60) {
$list[date('Y-m-d', $date)] = 0;
}
// Заполняем данными
foreach ($res as $row) {
$list[date('d.m.Y', strtotime($row['stat_day']))] = $row['count'];
}
$list_date[] = array_keys($list);
$list_count[] = array_values($list);
//template.php
<!DOCTYPE html>
<html lang="ru">
<?php
include_once 'header.php';
?>
<body>
<?php
include_once 'content.php';
include_once 'footer.php';
?>
</body>
</html>
//index.php
$data = [
'title' => 'Главная страница',
'content' => 'Содержимое главной страницы',
];
include_once 'template.php';
//header.php
<head>
<title><?=$data['title']?></title>
</head>
//content.php
<div>
<p><?=$data['content']?></p>
</div>
//footer.php
<footer>
<p>Подвал сайта</p>
</footer>
increment
и decrement
для изменеия балансаpublic function updateBalance($bet_amount): void
{
$this->decrement('balance', $bet_amount);
}
UPDATE `users` SET `balance` = `balance` - $bet_amount WHERE id = ...
lockForUpdate()
чтобы исключить любые конфликты на уровне БД и тогда redis-локи в принципе можно убрать. file_put_contents(APP_PATH . '/conf/uniq_id.txt', $numb);
//логируем стек вызовов
ob_start();
debug_print_backtrace();
$trace = ob_get_contents();
ob_end_clean();
file_put_contents(APP_PATH . '/conf/backtrace.txt', $trace, FILE_APPEND);