Dima83
Новичок
С помощью ajax, при нажатии кнопки происходит загрузка фото. В каждой статье много картинок, фото выбирается из статьи случайным образом.
Картинка будет использоваться как “превью” к статье.
Для выбора картинки сначала статью следует распарсить для этого я использую библиотеку simple_html_dom.php.
Случайная картинка загружается с помощь.
Сейчас для загрузки картинки я использую в списке кнопку. При нажатии на кнопке картинка загружается и список вывода сокращается.
Как сделать так, чтобы загрузка картинки происходила автоматически по порядку (по списку) с помощью setInterval (без нажатии на кнопке)?
Например загрузки картинки завершилось и вывелось сообщение в ajax “Выполнено”, потом начался процесс следующей картинки. Вот пример возвращаемого результата

Мой код, сохранение картинки при нажатии кнопки.
Главный файл index.php
Ссылка на файл ajax - action.php
Картинка будет использоваться как “превью” к статье.
Для выбора картинки сначала статью следует распарсить для этого я использую библиотеку simple_html_dom.php.
Случайная картинка загружается с помощь.
PHP:
file_put_contents($path, file_get_contents($url));
Как сделать так, чтобы загрузка картинки происходила автоматически по порядку (по списку) с помощью setInterval (без нажатии на кнопке)?
Например загрузки картинки завершилось и вывелось сообщение в ajax “Выполнено”, потом начался процесс следующей картинки. Вот пример возвращаемого результата

Мой код, сохранение картинки при нажатии кнопки.
Главный файл index.php
PHP:
<script src="https://mysite5.su/js/jquery-1.9.1.js"></script>
<link rel="StyleSheet" type="text/css" href="style.css">
<div id="message"></div>
<div id="loader"></div>
<script language='JavaScript1.1' type='text/javascript'>
<!--
//Сохранение картинки
$(document).on('click','button.btn', function(event){
event.preventDefault();
str = $(this).attr("id");
arr = str.split("_");
id = arr[1];
let btn = document.querySelector("#"+str);
btn.setAttribute('disabled', true);
$.ajax({
type: "POST",
url: "/action.php",
data: "action=save_file&id="+id,
dataType: 'json',
success: function(response)
{
if(response.result=="success")
{
//Результат выполнен
console.log(response.html_content);
document.getElementById("message").innerHTML = response.err1;
showMessage();
}
}
})
});
//Вывод списка с помощью ajax
function showMessage()
{
$.ajax({
type: "POST",
url: "/action.php",
data: "action=view_all",
dataType: 'json',
success: function(response)
{
if(response.result=="success")
{
document.getElementById("loader").innerHTML = response.html_content
}
}
});
}
showMessage();
</script>
PHP:
<?php
include "config.php";
include('simple_html_dom.php'); // подключаем библиотеку
if($_POST["action"]=="save_file")
{
$id = $_POST["id"];
$err1 = "";
$date1 = date("d-m-Y");
$fullpath = "./images/".$date1;
if( !is_dir( $fullpath ) ) {
mkdir( $fullpath, 0777 );
chmod( $fullpath, 0777 );
}
try
{
$query = "SELECT * FROM smallposts WHERE id=".$id;
$stmt = $dbh->prepare($query);
$stmt->execute();
}
catch (\PDOException $e) {
echo "Обнаружена ошибка. Напишите администратору. $email<br>";
file_put_contents('PDOErrors.txt', $e->getMessage(), FILE_APPEND);
}
$item = $stmt->fetch(PDO::FETCH_ASSOC);
$id = $item["id"];
if($item["icon"]!='')
{
$html = str_get_html($item["icon"]);
$tmp = [];
foreach($html->find('a') as $key=>$element){
$tmp[$key]["big"] = $element->href;
}
$path = $item["preview"];
if(!file_exists($path))
{
$rand_keys = array_rand($tmp, 1);
$url = $tmp[$rand_keys]["big"];
$path = $fullpath.'/'.time().".jpg";
file_put_contents($path, file_get_contents($url));
try {
$query = "UPDATE smallposts SET preview=:review WHERE id=:id_position";
$stmt = $dbh->prepare($query);
$stmt->bindValue(':review', $path);
$stmt->bindValue(':id_position', $id);
$stmt->execute();
}
catch(PDOException $e) {
echo "Обнаружена ошибка. Напишите администратору. $email<br>";
file_put_contents('PDOErrors.txt', $e->getMessage(), FILE_APPEND);
}
$mess = "Выполнено";
}
else
{
$mess = "Файл существует";
}
}
else
{
$err1 = "Файлы отсутсвуют";
}
echo json_encode(array(
'result' => 'success',
'html_content' => $mess,
'err1' => $err1
));
}
if($_POST["action"]=="view_all")
{
try {
$query = "SELECT * FROM smallposts WHERE preview=''";
$STH = $dbh->prepare($query);
$STH->execute();
}
catch(PDOException $e) {
echo "6 Обнаружена ошибка. Напишите администратору. $email<br>";
file_put_contents('PDOErrors.txt', $e->getMessage(), FILE_APPEND);
}
$news = $STH->fetchAll();
$messData = array();
foreach($news as $n)
{
$messData[] = $n;
}
$html = "<table width=\"100%\" class=\"table\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\">
<tbody><tr class=\"header\" align=\"center\">
<td width=\"150\">Описание</td>
<td width=\"100\">Действия</td>
</tr>";
foreach($messData as $message)
{
$html .= "<tr><td>".$message["text"]."</td>
<td>
<button id=\"id_".$message["id"]."\" class=\"btn\">Добавить фото</button><br>
</td>
</tr>";
}
$html .="</tbody></table>";
echo json_encode(array(
'result' => 'success',
'html_content' => $html
));
}
?>