[plugin]ixePaf
paysan hardi
Member
dans Plugins
Bonjour les pluxiens,
je viens de chercher Xpath sur le forum et personne ne semble avoir évoqué la possibilité de faire un plugin de gestion de BDD (tables, formulaires génériques,etc.) sur la base de requêtes Xpath
spxData est un beau bébé, sauf que les gueux hébergés par Free (dont je fais partie) n'ont pas accès aux fonction JSON, array_fill_keys... et mémoire à gogo.
j'ai donc pondu une classe sans prétention dont la fonction getData a surtout le mérite de filtrer dans le fichier xml uniquement les éléments dont j'ai besoin
(avec limit par défaut). En gros, le tableau de retour est bien expurgé par Xpath avant d'être constitué (choix des champs,etc)
L'air de rien, j'arrive à interroger une table de 4Mo(format spx) en 1.467 s et un peak qui reste à 8,5mo (au lieu de 35 pour la même page sous spx, mais j'ai fait moins de fonctions :P )
J'en suis au stade de me rendre compte que ces heures de boulot buttent sur qq problèmes ballots du style :
(je ne laisse rien en ligne, c'est une appli perso, les variables ne sont pas encore protégées, néanmoins adieu le fatal_error_memory_size ]:D )
D'où la question que je pose : est-ce que ça vaut la peine de continuer ou Xpath est une voie sans issue ?
je viens de chercher Xpath sur le forum et personne ne semble avoir évoqué la possibilité de faire un plugin de gestion de BDD (tables, formulaires génériques,etc.) sur la base de requêtes Xpath
spxData est un beau bébé, sauf que les gueux hébergés par Free (dont je fais partie) n'ont pas accès aux fonction JSON, array_fill_keys... et mémoire à gogo.
j'ai donc pondu une classe sans prétention dont la fonction getData a surtout le mérite de filtrer dans le fichier xml uniquement les éléments dont j'ai besoin
(avec limit par défaut). En gros, le tableau de retour est bien expurgé par Xpath avant d'être constitué (choix des champs,etc)
L'air de rien, j'arrive à interroger une table de 4Mo(format spx) en 1.467 s et un peak qui reste à 8,5mo (au lieu de 35 pour la même page sous spx, mais j'ai fait moins de fonctions :P )
J'en suis au stade de me rendre compte que ces heures de boulot buttent sur qq problèmes ballots du style :
[== PHP ==]
if ($x['inputsearch']!="") {$xpaf='//data[column/parameter[contains(text(),"'.htmlentities($x['inputsearch']).'")]]';} #OK mais !case-sensitive
ou encore qq pb de croisement de filtres
[== PHP ==]
# 2.3. $x['filtres']='select1=275 and select2=224' ou 'bolan=1'
# bug contacts.php : $x['filtres']='select1=310 and bolan=1'; pb cdata ?
if ($x['filtres']!=""){ //
if( stristr($x['filtres'], " and ")!=false) {
$filtres = explode( " and " , $x['filtres'] );
}else { $filtres[0] = $x['filtres']; }
$i=0;
foreach ($filtres as $filtre){
if( stristr($filtre,'=')!=false){$filtre=explode('=',$filtre);
}else { $filtre[0] = $filtre; }
$conditions[$i]= array($filtre[0], $filtre[1]);
++$i;
}
$xpaf="//data";
foreach ($filtres as $filtre){
if( stristr($filtre,"=")!=false) { $filtre=explode("=",$filtre); }
$xpaf .= '[column/parameter[@name="'.$filtre[0].'" and text()="'.$filtre[1].'"]]';
}
unset($filtres);
}
(je ne laisse rien en ligne, c'est une appli perso, les variables ne sont pas encore protégées, néanmoins adieu le fatal_error_memory_size ]:D )
D'où la question que je pose : est-ce que ça vaut la peine de continuer ou Xpath est une voie sans issue ?
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Bien sûr que je vais continuer !!!!
D'une, parce que taper du code me plait et j'aime avoir ce que je veux
Deusse, parce que tous les manuels sont dispos sur le réseau
Troisse, parce que j'en apprends tous les jours sur les subtilités de votre métier de devs ^^
Je vous dis donc @ bientôt avec un code bien propre téléchargeable à soumettre à vos avis
Aucune idée de "l'évolution de la synthaxe xPath", et je dois admettre que je ne comprends pas trop ta question, ce qui explique peut-être que personne ne t'ait répondu ?
Tu as raison, mettre des extraits de code pour illustrer mon propos n'a servi qu'à brouiller la question finale.
Je voulais illustrer l'inconvénient de la recherche text() case-sensitive...chose que j'ai découverte à une étape bien avancée, rien de rédhibitoire, ça rajoute juste des lignes pour contourner
Mon message avait pour but de savoir si d'autres surprises m'attendaient, comme une dépréciation programmée que je n'aurais pas trouvé dans mes recherches mais dont qq'un ici aurait eu connaissance.
J'attendais juste un retour d'expérience comme le tien pour ne pas bosser dans le vide, rien de plus.
Avec le même esprit, j'ose une question supplémentaire :
- l'administration du plugin permet l'écriture des paramêtres des tables dans base.php (je ne parle pas des params du plugin avec $plxPlugin)
- j'include base.php dans la fonction initialisation{} pour récupérer sa variable $aTables qui contient droits,label,champs,etc.
- avec $this->aTables = $aTables; je peut l'utiliser partout dans la classe, sans solliciter aucune fonction de lecture (gain de tps, de calcul, de code,etc.)
- en écriture je passe par quelques foreach puis file_put_contents...comme si j'updatais un .xml ou un .txt
Tu ferais pareil que moi ou tu stockerai un .xml, avec une fonction pour l'écriture et autant pour la lecture ?
Il faudrait qu'on puisse jeter un oeil à la source pour comprendre ce que tu veux dire.
je maintiens que je repasserai qd se sera testable en ligne