@TechNOIR

PHP. Как реализовать ожидание выполнения функции?

Добрый день. Подскажите пожалуйста как реализовать ожидание выполнения функции?
Есть код:
тут код
<?php
require 'ex/vendor/autoload.php';

use PhpOffice\PhpSpreadsheet\IOFactory;
$i = 2;
do {
$url1 = 'https://img1.goodfon.com/original/1920x1080/b/c9/pole-nebo-gorizont-peyzazh.jpg';
$url2 = 'https://get.wallhere.com/photo/1920x1200-px-nature-1054070.jpg';
$url3 = 'https://cdn.wallpapersafari.com/70/76/AnNVBR.jpg';


if (isset($_GET['test'])) {
    echo 'Вы нажали на кнопку: ' . $_GET['test'];
    $cell = 'F'.$i;
	$url = $_GET['test'];

	$inputFileName = './ex/e.xlsx';
	$spreadsheet = IOFactory::load($inputFileName);
	$spreadsheet->getActiveSheet()->setCellValue($cell, $url);


	$writer = new \PhpOffice\PhpSpreadsheet\Writer\Xlsx($spreadsheet);
	$writer->save("./ex/e.xlsx");

	echo "Я внёс!";
	$i=$i+1;
}

	echo <<<HTML
<html>
<head>
<style>
img {
    height: 100px;
    width: 100px;
}
</style>
<script type="text/javascript" src="js/jquery-3.2.1.js"></script>
</head>
<button onclick="set_mode_view(this)"><img src="$url1" alt="Кнопка «button»"></button>
<button onclick="set_mode_view(this)"><img src="$url2" alt="Кнопка «button»"></button>
<button onclick="set_mode_view(this)"><img src="$url3" alt="Кнопка «button»"></button>
<br/><br/>
<div id="test_value"></div>
<script>
function set_mode_view(element)
{
    $.ajax({
        url:'test4.php',
        data:{test:element.firstChild.currentSrc},
        success:function(data){
            $('#test_value').text(data);
        }
    });
	$(".current-msg").html("");
}
</script>

</html>

HTML;

} while ($i < 10);
?>



HTML код рисует 3 картинки. Кликаю по одной из них и это заносится в эксель таблицу.
Если без цикла, единовременное выполнение, то все ОК. Но для дальнейшего развития надо добавить цикл.
И тут начались проблемы. В зависимости от того где я поставлю $i=$i+1; код то рисует $i количество раз html код,то и вовсе зацикливается.

Можно ли как-то сделать чтобы выдавался html код, ожидал клика соответственно и только потом выдавал опять html код. Тоесть появляются картинки, кликаем, заносятся данные и появляется опять html код и пока цикл не закончится соответственно..

Спасибо заранее!
  • Вопрос задан
  • 1209 просмотров
Пригласить эксперта
Ответы на вопрос 2
GTRxShock
@GTRxShock
Full-stack developer (Symfony, Angular)
Комментировать
@nimayoleynik
Нужно четко разделить на клиентскую и серверную часть. "Цикл" должен быть на клиентской... на серверной тоже возможно но это костыль.

Серверная должна принимать запросы - пустой, с выбранной картинкой и id позиции.
При пустом запросе выдает клиентскую оболочку со скриптами и картинки (позиция берется по умолчанию как 1, те выдаются картинки с 1 по 3), при запросе с аргументами вносит изменения в exel файл и выдает следующие картинки с учетом текущей позиции, если картинок больше нет выдает ваш текст что картинок больше нет.

Клиентская должна содержать div для картинок (по умолчанию загрузятся картинки используя 1 позицию, на серверной стороне), js переменную текущей позиции (по умолчанию 1, задается на серверной при отправке клиентской оболочки), jq событие выбора картинки и ajax функцию его обработки (при выборе ajax отправляет выбранную картинку и текущую позицию в замен получает картинки которые нужно записать в div для картинок с заменой содержимого).
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽