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
         ));
  }
?>
	
	            