-1

開始をクリックするとコードの実行が開始され、停止をクリックすると実行が停止され、実行されたものはすべて印刷されます。次のコードを実行すると機能しません実際に必要なのは、開始をクリックすると、その間に1から50までの数字の印刷が開始され、停止をクリックすると、実行された場所にまだ数字が印刷されるはずです

<form method="post">
   <input type="submit" value="start" id="start" name="start" />
   <input type="submit" value="stop" id="stop" name="stop" />
</form>

if ( isset( $_POST['start'] ) ) {
   for ( $i = 1; $i <= 50; $i++ ) {
      echo $i."<br/>";
      if ( isset( $_POST['stop'] ) ) {
         die( print_r( $i ) );   
      }
      sleep('1');
   }
}
4

3 に答える 3

2

使用する作業コピーjquery

<input type="button" value="start" id="start" name="start" />
<input type="button" value="stop" id="stop" name="stop" />

<div id='output'></div>

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js" 
                type="text/javascript"></script>

<script>
var timeOut = null;
var i = 0;
var printStuff = function() {
    if(i>=50) return;
    i++;
    $("#output").append(i+" ");
    timeOut = setTimeout(printStuff,1000);
};

$("#start").click(function() {
    timeOut = setTimeout(printStuff,1000);
});
$("#stop").click(function() {
    clearTimeout(timeOut);
});
</script>
于 2013-10-09T05:56:21.857 に答える
1

誰もが言ったように、これは php で行うべきではなく、javascript やその他のクライアント側言語で行うべきです。

しかし、このコードで php またはその一部を学習しようとしている場合は、このコードを使用できます。

<?php 
header( 'Content-type: text/html; charset=utf-8' );
?>

<form method="GET">
<input type="submit" value="start" id="start" name="start"/>
<input type="submit" value="stop" id="stop" name="stop" onclick="document.getElementById('trackback').value = document.getElementById('counter_port').innerHTML; return true;"/>
<input type="hidden" value="" id='trackback' name='trackback'/>
<span id='counter_port' name='counter_port'>
<?php               
   if(isset($_REQUEST['start'])){          

            echo "<br/>";
            for($i=1;$i<=50;$i++){
                echo $i."<br/>";
                if(sleep(1) != 0) {
                    echo 'sleep failed';
                    break;
                }
                flush();
                ob_flush();
            }

    } else {
        echo $_REQUEST['trackback'];
    }
?>
</span>
</form>

繰り返しますが、これはここで行ったことの間違った方法です。

于 2013-10-09T06:35:30.153 に答える
-1

次のコードを試してみてください。

if ( isset( $_POST['start'] ) ) {
   for ( $i = 1; $i <= 50; $i++ ) {
      echo $i."<br/>";
      sleep('1');
   }
}
  if ( isset( $_POST['stop'] ) ) {
     exit("Code is stopped");
  }
于 2013-10-09T05:49:38.517 に答える