tasks.push(data); // тут вставили очередной элемент
let task_index = tasks.length - 1; // узнаем его индекс по длине массива, так как он в текущей ситуации последний
// несколько строк спустя
b1.addEventListener("click",
(function(inner_task_index) // функция-обертка для изоляции контекста, сюда передается значение task_index, я специально выделил его другим именем inner_task_index, чтобы видеть контекст функции-обертки
{
// обертка возвращает функцию-обработчик события для addEventListener
return function delFromLocalSt() {
task.removeChild(li);
let array = JSON.parse(localStorage.getItem('task'));
array.splice(inner_task_index, 1); // удаляем элемент по известному индексу используя механизм замыкания, используя контекст функции обертки
localStorage.setItem('task', JSON.stringify(array));
}
})(task_index) // вызываем хитрую обертку, чтобы обеспечить изоляцию переменной от контекста функции createEl
);
$need_count = 10; // сколько требуется файлов для выборки
$alive_count = 0; // сколько живых файлов
$is_need_repeat = true; // требуется повторить попытку получить живые файлы
$death_list = []; // сюда накапливаем список id мертвых файлов
$alive_list = []; // сюда накапливаем список id живых файлов
while($is_need_repeat) // Если можно делать итерационную попытку и пока не набрали нужное количество живых файлов
{
// Этот запрос, чтобы прощупать целостность файлов, достаточно получить только те атрибуты, которые позволяют проверить его путь и запомнить id.
$database->setQuery("
SELECT id
from блаблабла
WHERE блаблабла
".(count($depth_list) > 0 ? : ' and id not in ('.join(',',$death_list).') ' : '')." -- отсеиваем мертвые файлы из запроса, они нам не нужны
".(count($alive_list) > 0 ? : ' and id not in ('.join(',',$alive_list).') ' : '')." -- отсеиваем живые файлы из запроса, мы их уже проверяли
ORDER блаблабла
limit 0,".($need_count - $alive_count)); // делаем лимит по оптимистичному сценарию, как будто можем получить список файлов, и все они будут живые, но только то кол-во, которое недостает
while($row = mysql_fetch_assoc($request))
{
if(file_exists('/www/ПУТЬ/'.$row['id'].'_100.jpg'))
{
$alive_list[] = $row['id']; // файл живой, заносим его id в список
}
else
{
$death_list[] = $row['id']; // файл мертвый, заносим его id в список
}
$curr_alive_count = count($alive_list);
$is_need_repeat = $curr_alive_count > 0 && $curr_alive_count > $alive_count && $curr_alive_count < $need_count; // необходимо продолжить попытки, если на текущей итерации получили хоть один живой файл, живых файлов на этой итерации оказалось больше, чем на предыдущей, и их кол-во не достаточно до необходимого
$alive_count = $curr_alive_count; // вписываем кол-во живых файлов на текущей итерации для проверки в будущем цикле (чтобы сравнить результаты двух циклов)
}
}
// теперь можно сделать нормальный запрос, исключив мертвые файлы:
$database->setQuery("
SELECT *
from блаблабла
WHERE блаблабла
".(count($depth_list) > 0 ? : ' and id not in ('.join(',',$death_list).') ' : '')." -- отсеиваем мертвые файлы из запроса
ORDER блаблабла
limit 0,".$need_count);
$database->setQuery("
SELECT *
from блаблабла
WHERE блаблабла
and is_del is null -- или нулю, в зависимости, что будет по умолчанию
ORDER блаблабла
limit 0,".$need_count);
<a href="?id=1">см. запись</a>
if(isset($_GET['id']))
{
// тут код или вызов функции для работы с одной записью
}
else
{
// тут код или вызов функции для вывода всего списка
}
msqli_prepare("текст запроса ... where id = ?"); // ставим в нужное место запроса параметрические метки
msqli_bind_param("i", $_GET["id"]); // передаем параметр на место меток-вопросов, в каком порядке они идут
msqi_execute();
// msqli_fetch функция и форматированный вывод сведений
Console.WriteLine("\nЭлементы нового массива: ");
for (int i = 0; i < n /* тут заменить на k */; i++)
{
Console.Write(n_numbers[i] + " ");
}
Console.WriteLine("\nЗначение среднего арифметического нового массива: " + SearchAverage(n_numbers, n /* тут заменить на k */));
<style>
div.container
{
display: flex;
flex-wrap: wrap;
width: 770px;
height: 90px;
background-color: green;
overflow: hidden;
}
div.container > div
{
width: 60px;
height: 25px;
background-color: #df1245;
text-align: center;
margin: 5px;
padding: 5px 0;
}
div.container > div:nth-child(n + 22) /*этим селекторам задаем свойство сортировки элементам, которые идут после кнопки "показать еще" если контейнер будет адаптивным, придется прописывать кучу вариантов nth-child */
{
order: 2;
}
div.container > label.more
{
display: block;
width: 130px;
height: 25px;
margin: 5px;
padding: 5px 0;
text-align: center;
order: 1; /* У кнопки стоит такой индекс сортировки чтобы оказаться между видимыми и невидимыми элементами */
background-color: #78d412;
}
div.container label.more span.less
{
display: none;
}
#show-more-state
{
display: none;
}
#show-more-state:checked ~ div.container
{
height: auto;
}
#show-more-state:checked ~ div.container label.more
{
order: 3;
margin-left: auto;
}
#show-more-state:checked ~ div.container label.more span.more
{
display: none;
}
#show-more-state:checked ~ div.container label.more span.less
{
display: initial;
}
</style>
<input id="show-more-state" type="checkbox"/> <!-- Этим чекбоксом запонимаем состояние кнопки, чтобы можно было оттолкнуться стилями от превдокласса :checked -->
<div class="container">
<label class="more" for="show-more-state"><span class="more">ПОКАЗАТЬ ЕЩЕ</span><span class="less">СВЕРНУТЬ</span></label>
<div>ITEM</div>
<div>ITEM</div>
<div>ITEM</div>
<div>ITEM</div>
<div>ITEM</div>
<div>ITEM</div>
<div>ITEM</div>
<div>ITEM</div>
<div>ITEM</div>
<div>ITEM</div>
<div>ITEM</div>
<div>ITEM</div>
<div>ITEM</div>
<div>ITEM</div>
<div>ITEM</div>
<div>ITEM</div>
<div>ITEM</div>
<div>ITEM</div>
<div>ITEM</div>
<div>ITEM</div>
<div>ITEM</div>
<div>ITEM</div>
<div>ITEM</div>
<div>ITEM</div>
<div>ITEM</div>
<div>ITEM</div>
<div>ITEM</div>
</div>
$value = '<form method="post">
<button type="submit" onclick="return confirm(\'Вы уверены, что хотите сменить статус на \\\'Доставлен\\\' ?\')">Доставить</button>
</form>';
$value = <<<ANY_RANDOM_SYMBOLS_FOR_BORDER
<form method="post">
<button type="submit" onclick="return confirm('Вы уверены, что хотите сменить статус на \'Доставлен\' ?')">Доставить</button>
</form>
ANY_RANDOM_SYMBOLS_FOR_BORDER;
0 мс: начало скрипта
12 мс: начало чтения файла
24 мс: конец чтения файла
30 мс: запрос единицы товара
34 мс: обновление цены единицы товара
35 мс: запрос единицы товара
36 мс: обновление цены единицы товара
....
12345 мс: конец скрипта.
let elem_count = elems.length;
for(let i = 0; i < elem_count; i++)
{
let elem = elems[i];
// что-то сделать с elem
}