2013-09-21 2 views
1

PHP 스크립트가 실행되는 동안 이미지로드 중을 표시하고 싶습니다. 나는 그것을하는 방법에 대한 다른 답변을 읽었지만, 그들 대부분은 별도의 PHP 페이지가 있어야한다고 말했다. 그러나 행을 표시하는 데 단일 페이지를 사용하고 있으므로 이미지를로드하는 방법을 표시하려면 어떻게해야합니까?PHP가 실행되는 동안 이미지로드하기

선택 쿼리의 예, 나는 데이터를 가져 오기 위해 사용하고 있습니다 :

$stmt = $mydb->prepare("select * from table where firstname = ? and id = ? "); 
$stmt->bind_param('ss', $firstname, $id); 
$stmt->execute(); 
$stmt->close(); 
+1

실제로이 쿼리는 시간이 걸리는 것처럼 보이지 않습니다. 그것이 전부입니까? –

+0

약 3-4 초 걸립니다. – Lmxc

+1

한 행을 쿼리 하시겠습니까? 그건 맞지 않아. –

답변

7

대부분의 경우 에 2 페이지가 있습니다. 첫 번째 페이지 인 클라이언트 쪽은 서버 쪽 다른 페이지로 전화를 걸고 기다리는 동안 꽤 돌아가는 것을 보여줍니다. 서버 측 페이지 로딩이 끝나면 (쿼리가 완료되면) 첫 번째 페이지가 응답을받은 다음 예쁜 스핀을 숨겨서 사용자에게 완료되었음을 알릴 수 있습니다.

순수한 자바 스크립트 또는 jQuery에서 더 간단한 AJAX를 사용하여 PHP 페이지의 일부 데이터를 동적으로로드하고 기다리는 동안 회전하는 것을 표시 할 수 있습니다. 여기 jQuery를 사용했습니다.

CSS

#loading_spinner { display:none; } 

HTML

<img id="loading_spinner" src="loading-spinner.gif"> 

<div class="my_update_panel"></div> 

jQuery를

$('#loading_spinner').show(); 

var post_data = "my_variable="+my_variable; 
$.ajax({ 
    url: 'ajax/my_php_page.php', 
    type: 'POST', 
    data: post_data, 
    dataType: 'html', 
    success: function(data) { 
     $('.my_update_panel').html(data); 
//Moved the hide event so it waits to run until the prior event completes 
//It hide the spinner immediately, without waiting, until I moved it here 
     $('#loading_spinner').hide(); 
    }, 
    error: function() { 
     alert("Something went wrong!"); 
    } 
}); 

PHP (my_php_page.php)

<?php 
// if this page was not called by AJAX, die 
if (!$_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest') die('Invalid request'); 

// get variable sent from client-side page 
$my_variable = isset($_POST['my_variable']) ? strip_tags($_POST['my_variable']) :null; 

//run some queries, printing some kind of result 
$SQL = "SELECT * FROM myTable"; 
// echo results 
?> 
1

당신은 정말 PHP 자체에서이 작업을 수행 할 수 없습니다, 당신이 자바 스크립트에서 뭔가를해야 할 것입니다. 따라서 JQuery에서 로딩 회 전자를 표시 한 다음 PHP 작업에 AJAX 요청을 실행하고 데이터를 다시 가져 오면 로딩 표시기를 숨길 수 있습니다.

+0

괜찮습니다. 나는 그렇게하려고 노력할 것이다. – Lmxc

+0

글쎄 이것은 완전히 진실한 것은 아닙니다. 프로그레시브 렌더링 (청크 인코딩)을 사용하는 PHP에서만 가능해야합니다. 그러나 그것은 추천 할만한 것이 아닙니다. –

관련 문제