Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 2 sur 2
  1. #1
    Membre chevronné Avatar de tigunn
    Homme Profil pro
    Développeur de bug
    Inscrit en
    janvier 2003
    Messages
    577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Développeur de bug

    Informations forums :
    Inscription : janvier 2003
    Messages : 577
    Points : 619
    Points
    619

    Par défaut problème de class

    Bonjour à tous,

    Je viens vous présenter un problème auquel malheureusement je n'entend rien ; alors si il était mal placé ne vous gêner pas pour le déplacer.
    Voici:
    J'ai un site décliné sur un serveur de développement et de production; la première version est bien sûr plus avancée. Lors d'une mise à jour en production d'un petit correctif, je me suis aperçu qu'une classe ne fonctionnait pas du tout de la même façon en dev et prod (configuré à l'identique).
    Sur les deux j'utilise ce bout de code pour afficher des transcriptions tei (xml) et cela fonctionne.
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    $xq = new xqueryBP();
    		$fragment = $xq->getFragmentSelonSaCoteEtSonNumero($ref_bib_doc, $ref_bib_num_frag);
    		if ($fragment=='') {
    			$fragment='<record><fragment></fragment></record>';
    			$affichage_possible=false;
    		}
    		$xml=new DOMDocument();
    		$xml->loadXML('<?xml version="1.0"?><?xml-stylesheet type="text/xsl" href="'.PATH_APPLICATION.'/affichage_fragment.xsl"?>'.$fragment);
    		$xsl=new DOMDocument();
    		$xsl->load(PATH_APPLICATION.'/affichage_fragment.xsl', LIBXML_NOCDATA);
    		$proc = new XSLTProcessor();
    		$proc->importStylesheet($xsl);	
    		unset($xq);
    Sur celle en dev j'avais rajouté dans une classe :
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    //	recup du numero de fragment dans la transcription
    		$xq = new xqueryBP();
    		$fragment = $xq->getNumeroDeFragment($row['cote'], $row['ID']);
    		if ($fragment=='') {
    			$fragment='<fragment></fragment>';
    		}
    		$dom = new DOMDocument;
    		$dom->loadXML($fragment);
    		$xPath = new DOMXPath($dom);
    		$no_frag = $xPath->query('/fragment/id_fragment')->item(0)->nodeValue;
    		if ($no_frag=='') {
    			$no_frag=1;
    		}
    		unset($xq);
    Cela fonctionne en dev mais pas en prod.
    Voici ma classe xqueryBP :
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    //	fichiers inclus
    require_once('../classes/exist_phpapi.inc');
     
     
    Class xqueryBP {
     
    	/**
    	 * @var ressource
    	 */
    	public $db;
     
     
    	/**
    	 * Constructeur vide
    	 *
    	 */
    	function __construct() {
     
    		//	création d'une instance EXIST
    		$db2 = new eXist (EXIST_PATH,EXIST_SERVER,EXIST_PORT);
    		$db2->setCredentials (EXIST_USER,EXIST_PASSWORD);
    		$db2->setParamIndent (false);
    		//$db2->setDebug(DEBUG);
     
    		$this->db=$db2;
     
    	}
    ...
    /**
    	 * Permet de recuperer le numéro de fragment dans la TEI
    	 *
    	 * @param 	string		$id_bibl		id de la ref biblio (mise en forme: "b{id}-3" ou "{id}-3" ou "b{id}" ou "{id}"
    	 * @param 	string		$ref_bib_doc	cote+"-ver3.xml"
    	 * @return 	unknown		xml				numéro de fragment
    	 */
    	public function getNumeroDeFragment($ref_bib_doc, $id_bibl) {
     
    		$_XQUERY1='declare namespace dbp="http://dossiers-flaubert.ish-lyon.cnrs.fr/ns/1.0";
    			let $doc := doc("'.EXIST_COLLECTION.'/'.$ref_bib_doc.'-ver3.xml")
    			for $fragment in $doc//*:div[@*:type="fragment"]|$doc//*:item[@*:type="fragment"]
    			let $id_fragment := data($fragment/@*:n)
    			let $bibl := data($fragment/*:cit/*:bibl/@*:id) where $fragment/*:cit/*:bibl[@*:id="b'.$id_bibl.'-3"] 
    								| $fragment/*:cit/*:bibl[@*:id="b'.$id_bibl.'"]  
    								| $fragment/*:cit/*:bibl[@*:id="'.$id_bibl.'-3"] 
    								| $fragment/*:cit/*:bibl[@*:id="'.$id_bibl.'"] 
    				return <fragment>
    							<id_fragment>{$id_fragment}</id_fragment>
    						</fragment>';
     
    		$result1 = $this->db->executeQuery($_XQUERY1);
    		return $this->db->retrieve($result1, 0);
     
    	}
    On dirait presque qu'il ne trouve pas ma méthode getNumeroDeFragment() que j'ai rajouté dans ma classe xqueryBP sur le serveur en prod. Cela fonctionne très bien sur le serveur de dev.

    Voila, j'espère sincérement que cela vous parle, vous avez peut-être rencontré ce problème. Merci de votre aide.
    "le rhume distillation - L’estomac est la cucurbite, le cerveau le chapiteau, & le nez le réfrigérant par lequel s’écoule goutte à goutte le produit de la distillation."
    de Avicenne

    Le monde se divise en deux: ceux qui utilisent le tag et les autres.

    Un problème? venez en découdre!

  2. #2
    Membre chevronné Avatar de tigunn
    Homme Profil pro
    Développeur de bug
    Inscrit en
    janvier 2003
    Messages
    577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Développeur de bug

    Informations forums :
    Inscription : janvier 2003
    Messages : 577
    Points : 619
    Points
    619

    Par défaut

    Je n'ai pas put éditer mon précédent message; alors :
    Après écrasement de l'intégralité du site, cela fonctionne -> mystère.
    La vérité est ailleurs, et je n'ai pas le temps d'aller la chercher, donc : Résolu.
    "le rhume distillation - L’estomac est la cucurbite, le cerveau le chapiteau, & le nez le réfrigérant par lequel s’écoule goutte à goutte le produit de la distillation."
    de Avicenne

    Le monde se divise en deux: ceux qui utilisent le tag et les autres.

    Un problème? venez en découdre!

+ Répondre à la discussion
Cette discussion est résolue.

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •