Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/250.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_Javascript_Jquery_Class_Private Methods - Fatal编程技术网

PHP类私有变量的错误定向值

PHP类私有变量的错误定向值,php,javascript,jquery,class,private-methods,Php,Javascript,Jquery,Class,Private Methods,首先,我的问题来自一个php文件调用的php类,该文件通过AJAX调用进行访问 问题是返回值完全错误,并且与sybase_结果值不同。那么我错过了什么 以下是我的程序步骤 首先,我们进行AJAX调用: $.ajax( { type: "POST", url: "ajax/load_fiche_resume.php", timeout:5000, dataType: 'json', data: ({matricule:matricule, id_mun:id

首先,我的问题来自一个php文件调用的php类,该文件通过AJAX调用进行访问

问题是返回值完全错误,并且与sybase_结果值不同。那么我错过了什么

以下是我的程序步骤

首先,我们进行AJAX调用:

$.ajax(
{
    type: "POST",
    url: "ajax/load_fiche_resume.php",
    timeout:5000,
    dataType: 'json',
    data: ({matricule:matricule, id_mun:id_mun}),
    beforeSend: function()
    {
        // Handle the beforeSend event
        $('#loading-bar').show("slow");
    },
    complete: function()
    {
        // Handle the complete event
        $('#loading-bar').hide("slow");

    },
    success: function(data)
    {

        console.dir(data);

        $('#tab-role').html(formatData(data));
    },
    error: function () 
    {
        alert("Oops! Une erreur c'est produite.\nVeuiller rafraichir la page. \nSi cela se reproduit, veuiller contacter le propriétaire du site.");
    }
});
然后,我们进入php文件load_fiche_resume.php

include('../class/class_role.php');

$oRole = new Role("42025", "2036-94-5034");


$ar_step2 = array(
                array("Propriétaire(s)"),
                array("Nom(s) : ", $oRole->getProprioNoms() ),
                array("Adresse postale : ", $oRole->getProprioAdresse() ),
                array("Condition particulière d'inscription : ", $oRole->getProprioCondition() ),
                array("Date d'inscription au rôle : ", $oRole->getProprioDateInscription() )
            );
如果我们仔细看上面的代码,函数$oRole->getProprioDateDirthing()的返回值应该是一个日期。但是这个函数不是日期,而是从另一个get函数返回一个字符串(即:它将显示$oRole->getProprioNoms的值),这是完全错误的

如果我们进入$oRole类,我们有:

class Role
{
    private $prop_inscription;
    public function getInfoProprio()
    {
        $qry = "SELECT 
                    p.nom_form AS nom_form,
                    p.t_typos AS t_typos,
                    substr(p.d_date_inscr,1,10) AS d_date_inscr,
                    pga.adr_form AS adr_form,
                    p.id_adr AS id_adr,
                    p.id AS id
                FROM 
                    ev_dossiers d,
                    ro_b75 p,
                    pg_adresses pga
                WHERE 
                    d.id_dossiers = ".$this->getIdDossier()." AND
                    d.typ_donnees = 11 AND
                    d.id_donnees = p.id AND
                    p.id_adr = pga.id_adr order by p.id, p.id_adr, p.ordre;";
        $this->prop_qry = $qry;
        $result = sybase_query($qry, $this->getLinkDB());
        $nbr = sybase_num_rows($result);
        $typos = sybase_result($result, 0, "t_typos");

        if($nbr>0)
        {
            for($cpt=0; $cpt<$nbr; $cpt++)
            {
                if($cpt===0)
                {
                    $this->setProprioNoms(utf8_encode(strtr(trim(sybase_result($result, $cpt, "nom_form")),"’","'")));
                    $this->setProprioAdresse(utf8_encode(strtr(trim(sybase_result($result, $cpt, "adr_form")),"’","'")));
                    $this->setProprioCondition($this->getConditionInscription(sybase_result($result, $cpt, "t_typos")));

// THIS IS PROBLEMATIC                       
$this->setProprioDateInscription(sybase_result($result, 0, "d_date_inscr"));
                }
                else 
                {
                    $this->setProprioNoms(", ".utf8_encode(strtr(trim(sybase_result($result, $cpt, "nom_form")),"’","'")));
                }
            }
        }
    }   

    ...

        public function getProprioDateInscription()
    {
        return $this->prop_inscription;
    }
    private function setProprioDateInscription($date)
    {
        $this->prop_inscription = $date;
    }
}
类角色
{
私人$prop_铭文;
公共函数getInfoProprio()
{
$qry=“选择
p、 名称形式作为名称形式,
p、 t_错别字作为t_错别字,
子项(p.d_日期检查,1,10)作为d_日期检查,
pga.adr表格作为adr表格,
p、 id_adr作为id_adr,
p、 身份证
从…起
ev_档案d,
ro_b75 p,
pg_地址为pga
哪里
d、 id_档案=“.this->getIdDossier()”和
d、 典型值=11和
d、 id_donnees=p.id和
p、 id_adr=p.id的pga.id_adr订单,p.id_adr,p.ordre;“;
$this->prop_qry=$qry;
$result=sybase_查询($qry,$this->getLinkDB());
$nbr=sybase\u num\u行($result);
$typos=sybase_result($result,0,“t_typos”);
如果($nbr>0)
{
对于($cpt=0;$cptsetproprionms)(utf8_编码(strtr(trim(sybase_结果($result,$cpt,“nom_form”)),“,”,“”));
$this->setpropioadresse(utf8_编码(strtr(trim(sybase_结果($result,$cpt,“adr_形式”),“,”,“”));
$this->setProprioCondition($this->getconditionedition(sybase_result($result,$cpt,“t_typos”));
//这是有问题的
$this->setProprioDate铭文(sybase_result($result,0,“d_date_inscr”);
}
其他的
{
$this->setProprioNoms(“,”.utf8_encode(strtr(trim(sybase_result($result,$cpt,“nom_form”),“,”));
}
}
}
}   
...
公共函数getProprioDateIngration()
{
返回$this->prop_铭文;
}
私有函数setProprioDate铭文($date)
{
$this->prop_铭文=$date;
}
}
如果我们看一下这一行:$this->setProprioDate铭文(sybase_result($result,0,“d_date_inscr”)

sybase_结果返回一个日期(从数据库中一切正常,值良好)。但问题在于私有var prop_铭文的Setter和Getter之间

你能帮我吗?你知道问题出在哪里吗

非常感谢。

要解决此问题

只要换这条线就行了

// THIS IS PROBLEMATIC                       
$this->setProprioDateInscription(sybase_result($result, 0, "d_date_inscr"));


您好,首先,我认为您应该获得$this->setProprioDateIngrating(sybase_result($result,$cpt,“d_date_inscr”);而不是$this->setProprioDateIngrating(sybase_result($result,0,“d_date_inscr”));您希望从该sql查询中获得多少行?在else中,您将覆盖Procronoms。这意味着如果您从sql查询中获得两行,您将从第一行设置日期,然后在下一个循环中,您将覆盖专有名称。一个建议是,以json格式返回数据。您可以将php数组转换为json格式,如s:echo json_encode($ar_step2);感谢您的回复。对于您的第一条评论,我们只需要返回的第一行。
$this->setProprioDateInscription(utf8_encode(strtr(trim(sybase_result($result, $cpt,"d_date_inscr")),"’","'")));