-1

フェッチされた行に1つずつ対応する文字列の配列を返す方法はありますか?

基本的に、データベースからすべての行を取得したい場合は、次のようにします。

$.post('my_script.php', {id:id}, function(data){
  $('#container').html(data);
});

my_script.php

<?php
  $id = $_POST['id'];
  $query = "SELECT image_name FROM my_list WHERE id=$id";

  if($mysql_query = mysql_query($query)){
      while($mysql_fetch_assoc = mysql_fetch_assoc($mysql_query)){
           $mysql_result_name = $mysql_fetch_assoc['image_name'];
           echo "<img src='".$mysql_result_name."'/>";
}
}
?>

これに関する問題は、このステートメント (while($mysql_fetch_assoc = mysql_fetch_assoc($mysql_query))) が終了していない限り、数秒間空白のページが表示されることです。これは間違いなくユーザーにとって良くありません。表示する準備ができたら、少なくとも画像を1つずつ表示したいです。

4

1 に答える 1

1

PHP はサーバー側の言語であり、スクリプトが終了するとデータが利用可能になるため、基本的に不可能です。

したがって、そのようなことはできず、スクリプトが完了するまで待つ必要があります

または、行を 1 つずつ取得するように AJAX を設定することもできます。

編集:

より良い解決策として、準備ができたときに画像を印刷するようflush()に末尾に a を追加できますが、100% の解決策ではありません。whileサーバーと、PHP ページを呼び出しているメソッドによっては、機能する場合と機能しない場合があります。たとえば AJAX では、ページが完全にロードされたときに送信されるサーバーからの応答をsuccess受信するまで、関数は呼び出されません。200 OK

編集されたコード:

<?php
  $id = $_POST['id'];
  $query = "SELECT image_name FROM my_list WHERE id=id";

  if($mysql_query = mysql_query($query)){
      while($mysql_fetch_assoc = mysql_fetch_assoc($mysql_query)){
           $mysql_result_name = $mysql_fetch_assoc['image_name'];
           echo "<img src='".$mysql_result_name."'/>";
           flush();
}
}
?>
于 2013-06-02T14:05:57.230 に答える