【问题标题】:HTML PHP Progress BarHTML PHP 进度条
【发布时间】:2009-11-26 10:02:15
【问题描述】:

我有一个使用 PHP 发送表单数据的表单的网站。有没有办法在页面上创建一个看起来像是在运行的进度条,以便人们在单击按钮并发送 PHP 信息后不会多次单击该按钮。

谢谢。

【问题讨论】:

    标签: php html css


    【解决方案1】:

    进度条:简单文本版本:

    <?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);
    }
    ?>
    

    进度条:基于 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.
    ?>
    

    【讨论】:

    【解决方案2】:

    网络内容的进度条很难正确设置,因为您不知道该过程将花费的总时间,并且您没有该过程的进度指示器来让您知道何时更新您的进度条。您最好使用像ajaxload.com 上可用的旋转加载图像。

    您可以让一个隐藏的 div 覆盖整个页面,并在等待时在您的 javascript 中激活该 div。

    在您的 html 中:

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

    在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;
    }
    

    然后在你的 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
    

    【讨论】:

      【解决方案3】:

      你需要使用Javascript,我建议你看看JQuery's ProgressBar

      【讨论】:

      • 如何将它与 php 脚本一起使用?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多