Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 为什么可以';除非我刷新页面,否则我看不到数据库更新吗?_Php_Xml Rpc - Fatal编程技术网

Php 为什么可以';除非我刷新页面,否则我看不到数据库更新吗?

Php 为什么可以';除非我刷新页面,否则我看不到数据库更新吗?,php,xml-rpc,Php,Xml Rpc,嗯,我编写了一些PHP代码,从我的供应商那里提取库存水平,并根据产品的SKU将库存水平插入数据库。我已经将其插入class.product.php文件中,该文件包含用于单个产品页面的所有代码。我遇到的问题是,当产品页面加载时,除非点击刷新,否则它不会显示更新的库存水平。我已经将代码移到了所有地方,无法让它更新数据库并在显示页面之前加载更新的编号 即使放在所有其他代码之前,我仍然必须刷新页面才能看到更新。我不知道该怎么办。我觉得也许,我并不真正理解PHP是如何加载代码的。几周来我每天都在做这个。我

嗯,我编写了一些PHP代码,从我的供应商那里提取库存水平,并根据产品的SKU将库存水平插入数据库。我已经将其插入class.product.php文件中,该文件包含用于单个产品页面的所有代码。我遇到的问题是,当产品页面加载时,除非点击刷新,否则它不会显示更新的库存水平。我已经将代码移到了所有地方,无法让它更新数据库并在显示页面之前加载更新的编号

即使放在所有其他代码之前,我仍然必须刷新页面才能看到更新。我不知道该怎么办。我觉得也许,我并不真正理解PHP是如何加载代码的。几周来我每天都在做这个。我试着把它作为一个包含文件,在一个单独的页面上,在顶部,在中间,在整个地方。

在类文件中,在调用代码以显示库存水平之前,我似乎已经有了代码,这就是为什么我如此困惑,以至于无法加载更新

有没有想过为什么我在刷新页面之前无法看到更改


谢谢

PHP在您请求时加载内容, 所以打开一个页面只会得到一次内容

要更新数据,您需要对返回JSON或XML格式数据的php函数进行AJAX调用
在这里,您可以看到一些,但考虑Google围绕更详细的例子。

< P>问题是,直到代码获得和显示产品数据之后,我的代码才运行,因为我使用的是只被调用一次的产品数据的信息。因此,必须首先调用产品数据才能运行我的代码。因此,为了解决这个问题,我必须创建一个新函数来获取sku,并在调用产品数据的代码显示在页面上之前将其传递给我的代码。我复制了现有函数以获取产品数据,将其重命名为GetRealTimeStockLevel,并将代码添加到其底部。我把对函数的调用放在对产品数据的调用之上,它按照我想要的方式工作。我很高兴我解决了这个问题,现在我可以在结帐页面上添加相同的功能

下面是页面开头的函数调用,然后是我为运行更新代码而创建的函数

    public function __construct($productid=0)
    {
        // Get the stock level from supplier and update the database
        $this->_GetRealtimeStockLevels($productid);

        // Load the data for this product
        $this->_SetProductData($productid);

    public function _GetRealtimeStockLevels($productid=0)
    {

        if ($productid == 0) {
            // Retrieve the query string variables. Can't use the $_GET array
            // because of SEO friendly links in the URL
            SetPGQVariablesManually();
            if (isset($_REQUEST['product'])) {
                $product = $_REQUEST['product'];
            }
            else if(isset($GLOBALS['PathInfo'][1])) {
                $product = preg_replace('#\.html$#i', '', $GLOBALS['PathInfo'][1]);
            }
            else {
                $product = '';
            }


            $product = $GLOBALS['ISC_CLASS_DB']->Quote(MakeURLNormal($product));
            $productSQL = sprintf("p.prodname='%s'", $product);
        }
        else {
            $productSQL = sprintf("p.productid='%s'", (int)$productid);

        }

        $query = "
            SELECT p.*, FLOOR(prodratingtotal/prodnumratings) AS prodavgrating, pi.*, ".GetProdCustomerGroupPriceSQL().",
            (SELECT COUNT(fieldid) FROM [|PREFIX|]product_customfields WHERE fieldprodid=p.productid) AS numcustomfields,
            (SELECT COUNT(reviewid) FROM [|PREFIX|]reviews WHERE revstatus='1' AND revproductid=p.productid AND revstatus='1') AS numreviews,
            (SELECT brandname FROM [|PREFIX|]brands WHERE brandid=p.prodbrandid) AS prodbrandname,
            (SELECT COUNT(imageid) FROM [|PREFIX|]product_images WHERE imageprodid=p.productid) AS numimages,
            (SELECT COUNT(discountid) FROM [|PREFIX|]product_discounts WHERE discountprodid=p.productid) AS numbulkdiscounts
            FROM [|PREFIX|]products p
            LEFT JOIN [|PREFIX|]product_images pi ON (pi.imageisthumb=1 AND p.productid=pi.imageprodid)
            WHERE ".$productSQL;

        if(!isset($_COOKIE['STORESUITE_CP_TOKEN'])) {
            // ISC-1073: don't check visibility if we are on control panel
            $query .= " AND p.prodvisible='1'";
        }

        $result = $GLOBALS['ISC_CLASS_DB']->Query($query);
        $row = $GLOBALS['ISC_CLASS_DB']->Fetch($result);

        if (!$row) {
            return;
        }

        $this->_product = $row;
        $this->_prodid = $row['productid'];
        $this->_prodname = $row['prodname'];
        $this->_prodsku = $row['prodcode'];


        $GLOBALS['CurrentProductLink'] = ProdLink($this->_prodname);


                   $server_url = "http://ms.com/fgy/webservices/index.php";

                   $request = xmlrpc_encode_request("catalog.getStockQuantity", array($this->_prodsku));
                   $context = stream_context_create(array('http' => array(
                   'method' => "POST",
                   'header' => "Content-Type: text/xml",
                   'content' => $request
                    )));
                   $file = file_get_contents($server_url, false, $context);
                   $response = xmlrpc_decode($file);

                   $query = sprintf("UPDATE [|PREFIX|]products SET prodcurrentinv='$response' where prodcode='%s'",    $GLOBALS['ISC_CLASS_DB']->Quote($this->_prodsku)); 
                   $result = $GLOBALS['ISC_CLASS_DB']->Query($query);


    }

我能想到的唯一问题是缓存。特别是IE。我们需要看一些代码来真正提供帮助。谢谢。现在我将发布一些代码,我想我会得到一些类似Aviatrix的东西,其中提到了PHP如何访问内容谢谢我已经修好了。我将发布我问题的答案。谢谢你的信息。我不知道它只处理代码一次,这就是我无法让它工作的原因。