如何在MySQL数据库中更新数据后显示加载图像

时间:2013-10-10 13:40:47

标签: javascript php jquery mysql ajax

在我的索引页面中,我使用combobox将用户状态更新为mysql db,然后显示用户在组合框中选择的值。这些都完美地工作(更新到mysql,显示它们被选中的值)。我想使用loading(gif)图像。例如,如果用户选择一个选项,当他们单击更新按钮时,我需要显示加载页面符号(2到3秒),然后在该位置显示他们选择的值。如何显示加载程序图像选项?

主页代码:

while($a_row = mysql_fetch_array($sql))
{
    if ( $a_row['status'] != '' ) {
        if ( $a_row['status'] == 'Confirm' ) {
    echo "\t<td><font color=\"green\"><b>" . $a_row['status'] . "</b></font></td>\n";
        }
        else if ( $a_row['status'] == 'Processing' ) {
            echo "\t<td><font color=\"blue\"><b>" . $a_row['status'] . "</b></font></td>\n";
        }
        else if ( $a_row['status'] == 'Pending' ) {
            echo "\t<td><font color=\"orange\"><b>" . $a_row['status'] . "</b></font></td>\n";
        }
        else if( $a_row['status'] == 'Cancelled' ) {
            echo "\t<td><font color=\"red\"><b>" . $a_row['status'] . "</b></font></td>\n";
        }
}
else {
    echo "\t<td width=166><form method=post>
    <select name=update><option></option><option value=Confirm>Confirm</option><option value=Processing>Processing</option><option value=Pending>Pending</option><option value=Cancelled>Cancelled</option></select>
    <input name=id type=hidden value='".$a_row['slno']."';>
    <input type=submit name=submit value=Update>
    </form>";

更新状态代码:

if($_SERVER['REQUEST_METHOD'] == "POST")
{
if(isset($_POST['id']))
{
$id = mysql_real_escape_string($_POST['id']);
$update= mysql_real_escape_string($_POST['update']);
$sql = mysql_query("UPDATE guest_details SET status = '$update' WHERE slno = '$id'");
if(!$sql)
{
    echo ("Could not update to database" .mysql_error());
}
}
}

2 个答案:

答案 0 :(得分:0)

我不知道为什么你会想要人工制作过程更长,但你可以在你的echo语句中替换这部分:

" . $a_row['status'] . "

用这个:

<img
  src='loading.gif'
  onload='setTimeout(\"$(this).after(" . $a_row['status'] . "); $(this).remove();\", 2500)'
>

此外,你所有的if-else块都可以像这样重写:

switch ($a_row['status']) {
    case '': $color = 1; break;
    case 'Confirm': $color = "orange"; break
    case 'Cancelled': $color = "blue"; break;
    ...
    default: $color = null;
}
if ($color == 1)
    echo //output your form
elseif ($color)
    echo "\t<td><font color='$color'><b><img src='loading.bmp' onload='setTimeout(\"...

答案 1 :(得分:0)

使用ajax更新内容: 调用ajaxfunction更新包含加载图标,如下面的函数:

ajax功能:

function ajaxUpdate()
{
    var def = '<img src="./images/loader.gif" />';
    $('#loading').html(def);
    $('#loading').show();
    jQuery.post('update_page.php');?>", {
      id : $('#id').val(),
      update : $('#update').val()
    },
    function(response)
    {
       if(response==1)
       {
          //success area
          $('#loading').hide();
       }
       else
       {
          // failure area
       }
    });
}

<div id="loading"></div>

调用此函数时,加载图片会显示在ID为 loading 的div上 在ajax调用成功后,它将被隐藏。