使用MYSQL,PHP和AJAX的慢代码

时间:2012-11-11 14:48:55

标签: php html mysql ajax

我目前正在尝试学习HTML,AJAX,PHP和MYSQL。我目前正在构建一个仅供内部使用的webapp。它似乎工作但现在我在使用MYSQL函数的代码中遇到了一些延迟。

以下是发生的事情:

首先,我从sql数据库创建一些“profile images”。像这样的PHP:

   <?php
    $price = 30;
    $con = mysql_connect('localhost', 'root', 'root');
    if (!$con)
      {
      die('Could not connect: ' . mysql_error());
      }
    mysql_select_db("Og297", $con);
    $result = mysql_query("SELECT * FROM Og297.Drinkers");

    while($row = mysql_fetch_array($result))
        {
        $picture = $row['Picture'];
        $name = $row['Name'];
        $nameup= $name."up";
        $namep= $name."p";

        $Onbetaaldresult = mysql_query("SELECT COUNT(Betaald) AS ob FROM Og297.Bierlijst
        WHERE Betaald='1' AND Name='$name'");
        $Onbetaaldarray= mysql_fetch_array($Onbetaaldresult);
        $Onbetaald= $Onbetaaldarray['ob'];


        $Betaaldresult = mysql_query("SELECT COUNT(Betaald) AS b FROM Og297.Bierlijst
        WHERE Betaald='0' AND Name='$name'");
        $Betaaldarray= mysql_fetch_array($Betaaldresult);
        $Betaald= $Betaaldarray['b'];

    echo "<div onclick=\"addBeer('$name','$price');\" class= 'thumbnail'><img src= $picture height= '90' width= '90' alt= $name title= $name><div class= 'overlay'><span id=$nameup  class='unpaid'>$Onbetaald</span><span id= $namep class='paid'>/$Betaald</span></div></div>";
        }
    mysql_close($con);

    ?>

因此,这为每个用户显示了一个图片div,最重要的是它显示的是带有ID的付费和未付款(该应用程序用于跟踪我们已经支付了多少啤酒以及还需要支付多少钱) 。这一切都有效:)

接下来我有一些功能;

On是addBeer,它会在桌面上刊登啤酒,包括该人的姓名。这是通过Ajax完成的。

function addBeer (n,p)
{
$.post("AddBeer.php",{naam: n, price: p});
updateBeer(n);
} 

因此,在将啤酒插入数据库之后,我希望它能够更新付费和未付费的范围。我这样做是通过使用updateBeer。

function updateBeer (n) 
{
$.post("UpdateBeer.php",{naam: n},function(data) {
changeInfo(n,data.betaald,data.onbetaald);
},"json");
}

这将返回Json对象中的已付款和未付款金额。那些值(包括人的名字然后被赋予changeInfo函数,将更新跨度如下:

function changeInfo(n,b,ob)
{
window.alert("ja");
document.getElementById(n + "up").innerHTML=ob;
document.getElementById(n + "p").innerHTML="/" + b;
}

但是,每次单击图像时信息都不会更新..它会滞后,啤酒插入很难,但是跨度的更新才会发生。怎么样?

非常感谢您阅读这个大问题!

1 个答案:

答案 0 :(得分:0)

我的代码中的问题是AJAX请求在哪里异步。因此,在AJAX请求完成之前执行其余脚本时会导致问题。诀窍是设置AJAX请求以将Async设置为false!

谢谢!