简体   繁体   English

HTML PHP 进度条

[英]HTML PHP Progress Bar

I have a website with a form that uses PHP to send the form data.我有一个使用 PHP 发送表单数据的表单的网站。 Is there a way to create a progress bar on the page that looks like it is in action, so that people don't click the button more than once after it's clicked and sending the PHP information.有没有办法在页面上创建一个看起来像是在运行的进度条,这样人们在点击按钮并发送 PHP 信息后不会多次点击按钮。

Thanks.谢谢。

Progress Bar: Simple Text Version :进度条:简单文本版本:

<?php
// Output a 'waiting message'
echo 'Please wait while this task completes';

// Now while waiting for a certain task to
// complete, keep outputting .'s

while (true) {
  // Echo an extra dot, and flush the buffers
  // to ensure it gets displayed.
  echo ' .';
  flush();

  // Now sleep for 1 second and check again:
  sleep(1);
}
?>

Progress Bar: PHP-Based (grphical) :进度条:基于 PHP(图形):

<?php
// A function that will create the initial setup
// for the progress bar: You can modify this to
// your liking for visual purposes:
function create_progress() {
  // First create our basic CSS that will control
  // the look of this bar:
  echo "
<style>
#text {
  position: absolute;
  top: 100px;
  left: 50%;
  margin: 0px 0px 0px -150px;
  font-size: 18px;
  text-align: center;
  width: 300px;
}
  #barbox_a {
  position: absolute;
  top: 130px;
  left: 50%;
  margin: 0px 0px 0px -160px;
  width: 304px;
  height: 24px;
  background-color: black;
}
.per {
  position: absolute;
  top: 130px;
  font-size: 18px;
  left: 50%;
  margin: 1px 0px 0px 150px;
  background-color: #FFFFFF;
}

.bar {
  position: absolute;
  top: 132px;
  left: 50%;
  margin: 0px 0px 0px -158px;
  width: 0px;
  height: 20px;
  background-color: #0099FF;
}

.blank {
  background-color: white;
  width: 300px;
}
</style>
";

  // Now output the basic, initial, XHTML that
  // will be overwritten later:
  echo "
<div id='text'>Script Progress</div>
<div id='barbox_a'></div>
<div class='bar blank'></div>
<div class='per'>0%</div>
";

  // Ensure that this gets to the screen
  // immediately:
  flush();
}

// A function that you can pass a percentage as
// a whole number and it will generate the
// appropriate new div's to overlay the
// current ones:

function update_progress($percent) {
  // First let's recreate the percent with
  // the new one:
  echo "<div class='per'>{$percent}
    %</div>\n";

  // Now, output a new 'bar', forcing its width
  // to 3 times the percent, since we have
  // defined the percent bar to be at
  // 300 pixels wide.
  echo "<div class='bar' style='width: ",
    $percent * 3, "px'></div>\n";

  // Now, again, force this to be
  // immediately displayed:
  flush();
}

// Ok, now to use this, first create the
// initial bar info:
create_progress();

// Now, let's simulate doing some various
// amounts of work, and updating the progress
// bar as we go. The usleep commands will
// simulate multiple lines of code
// being executed.
usleep(350000);
update_progress(7);
usleep(1550000);
update_progress(28);
usleep(1000000);
update_progress(48);
usleep(1000000);
update_progress(68);
usleep(150000);
update_progress(71);
usleep(150000);
update_progress(74);
usleep(150000);
update_progress(77);
usleep(1150000);
update_progress(100);

// Now that you are done, you could also
// choose to output whatever final text that
// you might wish to, and/or to redirect
// the user to another page.
?>

Progress bars on web content are hard to get right because you don't know the total time the process will take and you don't have progress indicators from the process to let you know when to update your bar. Web 内容上的进度条很难正确设置,因为您不知道该过程将花费的总时间,并且您没有来自该过程的进度指示器来让您知道何时更新您的进度条。 You might be better off using a spinning loading image like the ones available on ajaxload.com .使用ajaxload.com 上提供的旋转加载图像可能会更好。

You can make a hidden div cover the whole page and activate the div in your javascript when you're waiting.您可以使隐藏的 div 覆盖整个页面,并在等待时激活 javascript 中的 div。

In your html:在你的 html 中:

<div style="display:none;" id="wait"></div>

in the css:在CSS中:

#wait {
   position:fixed;
   top:50%;
   left:50%;
   background-color:#dbf4f7;
   background-image:url('/images/wait.gif'); // path to your wait image
   background-repeat:no-repeat;
   z-index:100; // so this shows over the rest of your content

   /* alpha settings for browsers */
   opacity: 0.9;
   filter: alpha(opacity=90);
   -moz-opacity: 0.9;
}

And then in your JavaScript:然后在你的 JavaScript 中:

...
$("#wait").show(); // when you want to show the wait image
...
$("#wait").hide(); // when your process is done or don't worry about it if the page is refreshing

您需要使用 Javascript,我建议您查看JQuery 的 ProgressBar

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM