Bom sou iniciante no php e estou começando fazer alguns cógidos para ir treinando devagar.
tenho aqui um código simples, porém não está comportando da maneira como gostaria.
O código simplesmente imprime um nome, dá um sleep de 1 segundo e imprime o próximo nome, assim até terminar.
Meu problema é que, eu gostaria de ver os nomes sendo impressos em tempo real, do jeito que tá, o cógido processa tudo pra só no final mostrar o resultado. gostaria que os nomes fossem sendo impressos em tempo real, como se fosse um programinha em C ou shell script.
mas não faço a menor idéia de como fazer isso.
segue o código:
index.php
<!DOCTYPE html>
<html>
<head>
<meta charset=utf-8 />
<title>Testando php...</title>
<!-- ==teste de css== -->
<style type="text/css" media="screen">
body {
width: 800px;
margin: 0 auto;
}
h1 {
text-align: center;
font-size: 26px;
font-family: Arial;
}
textarea {
width: 50%;
height: 500px;
text-align: center;
float: left;
background-color: #ffffff;
border: 1px solid #cccccc;
-webkit-border-radius: 3px;
-moz-border-radius: 3px;
border-radius: 3px;
-webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-webkit-transition: border linear 0.2s, box-shadow linear 0.2s;
-moz-transition: border linear 0.2s, box-shadow linear 0.2s;
-ms-transition: border linear 0.2s, box-shadow linear 0.2s;
-o-transition: border linear 0.2s, box-shadow linear 0.2s;
transition: border linear 0.2s, box-shadow linear 0.2s;
}
input[type=text] {
background-color: #ffffff;
width: 40%;
height: 20px;
margin-left: 15px;
margin-bottom: 10px;
border: 1px solid #cccccc;
-webkit-border-radius: 3px;
-moz-border-radius: 3px;
border-radius: 3px;
-webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-webkit-transition: border linear 0.2s, box-shadow linear 0.2s;
-moz-transition: border linear 0.2s, box-shadow linear 0.2s;
-ms-transition: border linear 0.2s, box-shadow linear 0.2s;
-o-transition: border linear 0.2s, box-shadow linear 0.2s;
transition: border linear 0.2s, box-shadow linear 0.2s;
}
textarea:focus, input[type=text]:focus {
border-color: rgba(82, 168, 236, 0.8);
outline: 0;
outline: thin dotted \9;
/* IE6-9 */
-webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6);
-moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6);
box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6);
}
input[type=submit] {
margin-left: 125px;
}
div {
float: right;
width: 40%;
margin-top: 20px;
margin-right: 50px;
font-family: Arial;
}
</style>
</head>
<body>
<h1>Imprime nomes (php iniciante)</h1>
<form method="post" action="final.php">
<textarea name="data" required id="data">ze
antonio
maria
joao
pedro
joaquim
bruno</textarea>
<input type="submit" value="Iniciar">
<div>Teste de impressão de nomes e resultados em tempo real.</div>
</form>
</body>
</html>
Pergunta
Doctor X
Olá Pessoal,
Bom sou iniciante no php e estou começando fazer alguns cógidos para ir treinando devagar.
tenho aqui um código simples, porém não está comportando da maneira como gostaria.
O código simplesmente imprime um nome, dá um sleep de 1 segundo e imprime o próximo nome, assim até terminar.
Meu problema é que, eu gostaria de ver os nomes sendo impressos em tempo real, do jeito que tá, o cógido processa tudo pra só no final mostrar o resultado. gostaria que os nomes fossem sendo impressos em tempo real, como se fosse um programinha em C ou shell script.
mas não faço a menor idéia de como fazer isso.
segue o código:
index.php
<!DOCTYPE html> <html> <head> <meta charset=utf-8 /> <title>Testando php...</title> <!-- ==teste de css== --> <style type="text/css" media="screen"> body { width: 800px; margin: 0 auto; } h1 { text-align: center; font-size: 26px; font-family: Arial; } textarea { width: 50%; height: 500px; text-align: center; float: left; background-color: #ffffff; border: 1px solid #cccccc; -webkit-border-radius: 3px; -moz-border-radius: 3px; border-radius: 3px; -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); -webkit-transition: border linear 0.2s, box-shadow linear 0.2s; -moz-transition: border linear 0.2s, box-shadow linear 0.2s; -ms-transition: border linear 0.2s, box-shadow linear 0.2s; -o-transition: border linear 0.2s, box-shadow linear 0.2s; transition: border linear 0.2s, box-shadow linear 0.2s; } input[type=text] { background-color: #ffffff; width: 40%; height: 20px; margin-left: 15px; margin-bottom: 10px; border: 1px solid #cccccc; -webkit-border-radius: 3px; -moz-border-radius: 3px; border-radius: 3px; -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); -webkit-transition: border linear 0.2s, box-shadow linear 0.2s; -moz-transition: border linear 0.2s, box-shadow linear 0.2s; -ms-transition: border linear 0.2s, box-shadow linear 0.2s; -o-transition: border linear 0.2s, box-shadow linear 0.2s; transition: border linear 0.2s, box-shadow linear 0.2s; } textarea:focus, input[type=text]:focus { border-color: rgba(82, 168, 236, 0.8); outline: 0; outline: thin dotted \9; /* IE6-9 */ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6); -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6); box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6); } input[type=submit] { margin-left: 125px; } div { float: right; width: 40%; margin-top: 20px; margin-right: 50px; font-family: Arial; } </style> </head> <body> <h1>Imprime nomes (php iniciante)</h1> <form method="post" action="final.php"> <textarea name="data" required id="data">ze antonio maria joao pedro joaquim bruno</textarea> <input type="submit" value="Iniciar"> <div>Teste de impressão de nomes e resultados em tempo real.</div> </form> </body> </html>final.php<?php error_reporting(-1); set_time_limit(0); ignore_user_abort(true); if(trim($_POST['data']) == "") { echo "Sem dados."; exit(); } $data = trim($_POST['data']); $info = explode("\n", $data); foreach ($info as $key => $value) { echo "Nome: $value <br>"; sleep(1); }Como podem ver, o código é todo processado pra só no final ser mostrado. eu gostaria de acompanhar
a impressão dos nomes em tempo real na página. apenas isso.
Bom, pode ser algo fácil, mas pra quem tá começando ainda é um mistério, por isso conto com a ajuda da galera.
Desde já agradeço!
Link para o comentário
Compartilhar em outros sites
3 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.