Пробовал через join, но получается множество дублей задач, так как призов к одной задаче множество.
select task_id, ......, prize_id, .......
from (сложный join)
$out = [];
foreach($rows as $row)
{
$task = &$out[row['task_id']];
$task['id'] = row['task_id'];
$task['name'] = row['name_task'];
.... // другие свойства задачи
if(!array_key_exists('prizes', $task))
{
$task['prizes'] = [];
}
if(!is_null($row['prize_id']))
{
$prize = &$task['prizes'][$row['prize_id']];
$prize['id'] = $row['prize_id'];
..... // другие свойства приза
unset($prize);
}
unset($task);
}
var_dump($out);
SELECT du.*, (
SELECT COUNT(dm."receiverRead") "unreadMessages"
FROM dialogs_messages dm
WHERE
dm."dialogId" = du."dialogId"
AND dm."receiverRead" = false
AND dm."senderUserId" NOT IN ('69e56a68-edbd-4f8b-8ccd-cb8031c5c865')
AND dm.id NOT IN (
SELECT dmd."messageId" FROM dialogs_messages_deleted dmd
WHERE dmd."userId" = '69e56a68-edbd-4f8b-8ccd-cb8031c5c865'
)
GROUP BY dm."receiverRead"
)
FROM (
SELECT
DISTINCT ON (du."dialogId") du."dialogId",
SUBSTRING(dm."message", 1, 60),
du."joinedDateTime",
users."avatarUrl",
users.username
FROM dialogs_users du
LEFT JOIN dialogs_messages dm ON dm."dialogId" = du."dialogId"
LEFT JOIN users on users.id = dm."senderUserId"
WHERE
du."userId" = '69e56a68-edbd-4f8b-8ccd-cb8031c5c865'
AND dm.id NOT IN (
SELECT dmd."messageId" FROM dialogs_messages_deleted dmd
WHERE dmd."userId" = '69e56a68-edbd-4f8b-8ccd-cb8031c5c865'
)
ORDER BY du."dialogId", dm."message" DESC
) du
ORDER BY du."joinedDateTime" DESC;
PDO не использует абстрактные слои для подключения к БД, наподобие ODBC, а использует для разных БД их «родные» драйверы, что позволяет добиться высокой производительности. В настоящее время для PDO существуют драйверы практически ко всем общеизвестным СУБД и интерфейсам. Также PDO позволяет работать одновременно с несколькими базами данных.
но может быть есть уже готовая библиотека которая позволяет с выбранных строк отправить данные на сервер для их удаления,
P.S. еще одна проблема заключается в том что все примеры Datatables используют на стороне сервера PHP, который я не использую да и к тому же не знаю.
=ЕСЛИОШИБКА(ИНДЕКС(Лист1!A$1:A$99;НАИМЕНЬШИЙ(ЕСЛИ(Лист1!A$1:A$99<>"";СТРОКА(Лист1!A$1:A$99));СТРОКА(B1)));"")
foreach ($model as $massiv)
{
echo $massiv[1] . "<br>";
}
foreach ($model as $massiv)
{
$massiv_new = array_values($massiv);
echo $massiv_new [1] . "<br>";
}
v-for="(item, index) in items"
v-bind:style="index == 0 ? {стили для первого элемента} : {}"
var n_random = 2 * randomEvenInt((min + 1) / 2, (max + 1) / 2) - 1;
var block_show = []; // начальный массив, можно не инициировать null-ами
function scrollTracking(){
var wt = $(window).scrollTop();
var wh = $(window).height();
var elems = $(); // тут пишем селектор для выбора коллекции элементов, позиции которых нужно отследить
var elem_count = elems.length;
// перебираем элементы, и выводим что появилось на экране, что нет.
var et = null, eh = null;
for (var i = 0; i < elem_count; i++)
{
et = elems[i].offset().top; // тут уже получаем параметр от i-ого элемента
eh = elems[i].outerHeight(); // тут уже получаем параметр от i-ого элемента
if (wt + wh >= et && wt + wh - eh * 2 <= et + (wh - eh)){
if (block_show[i] === undefined || block_show[i] === null || block_show[i] === false) { // анализ block_show тоже от i-ого элемента
console.log('Блок ' + i + ' в области видимости');
}
block_show[i] = true; // установка block_show тоже от i-ого элемента
} else {
if (block_show[i] === undefined || block_show[i] === null || block_show[i] === true) { // анализ block_show тоже от i-ого элемента
console.log('Блок ' + i + ' скрыт');
}
block_show[i] = false; // установка block_show тоже от i-ого элемента
}
} // конец цикла обхода отслеживаемых элементов
}
update checkanaliz set id_napravlenie = 1 where id_napravlenie = 2
delete from napravlenie where id = 2
Делать отдельный файловый менеджер для загрузки не подходит - можно загрузить лишние файлы, появляются трудности в редактировании/обновлении записей. AJAX валидация формы решит проблему частично - если один из файлов не пройдет, то придется загружать все файлы заново.
return $current($context, function ($context) use ($this, $next) {
return $this($context, $next);