0

まず第一に、私の問題は、AJAX 呼び出しによってアクセスされる php ファイルによって呼び出される私の php クラスにあります。

問題は、戻り値が完全に間違っており、sybase_result 値と同じではないことです。それで、私は何が欠けていますか?

これが私のプログラムの手順です。

まず、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->getProprioDateInscription() の戻り値は日付であるはずです。しかし、日付の代わりに、この関数は別の 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;
    }
}

$this->setProprioDateInscription(sybase_result($result, 0, "d_date_inscr"));

sybase_result は日付を返します (データベースからはすべて問題なく、値も適切です)。しかし、問題はプライベート var prop_inscription のセッターとゲッターの間にあります。

手伝って頂けますか?どこから問題があるか知っていますか?

どうもありがとうございました。

4

1 に答える 1

0

これを解決するには、

この行を変更してください

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

$this->setProprioDateInscription(utf8_encode(strtr(trim(sybase_result($result, $cpt,"d_date_inscr")),"’","'")));
于 2013-02-22T15:20:43.033 に答える