Un peu d'animation dans du XML ?
Posté : 05 sept. 2005, 21:56
Ca y est, je me mets au XML/XSL !
Hola ! Sous une apparence simple, c'est coton !
Ramenant un XML issu d'une base MYSQL, mon vendeur de vélo
(qui connait le PHP
)
affiche la liste des pièces de ses vélos (phpfrance.xml)
Pour cela il utilise un vieux HTML tout poussiéreux mais qui connait (quand même le JAVASCRIPT Twisted Evil ) nommé phpfrance.htm
Afficher la liste des différentes pièces est très simple
Mais l'affaire m'a rendu gourmand !
Si c'est pour faire cela, j'aurais pu utiliser XMLHTTPRequest avec une sortie texte qui me générait du JAVASCRIPT !
Maintenant, je voudrais afficher selon la sélection du SELECT (notez le caractère bégueillant de l'affaire )
la description de la pièce en cours de sélection (sic)
J'ai lu chez un de mes pottes de forum (h2o) une possibilité d'ajouter derrière le </select> un truc du genre
Mais quel est le magicien qui va récuperer et comment le $matricule ???
J'avoue mon ignorance la plus crasse
Si quelqu'un a une suggestion (constructive ! pas de revendre ma boutique de vélos
) ?
Hola ! Sous une apparence simple, c'est coton !
Ramenant un XML issu d'une base MYSQL, mon vendeur de vélo
(qui connait le PHP
affiche la liste des pièces de ses vélos (phpfrance.xml)
Code : Tout sélectionner
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!-- C'est l'histoire d'un magasin de vélo -->
<pieces>
<piece>
<matricule>1234</matricule>
<description>Rayon</description>
<prix>1.25</prix>
</piece>
<piece>
<matricule>6532</matricule>
<description>Pneu rouge</description>
<prix>3.75</prix>
</piece>
<piece>
<matricule>6534</matricule>
<description>Pneu vert</description>
<prix>3.85</prix>
</piece>
</pieces>
Code : Tout sélectionner
<html>
<header>
<script type="text/javascript">
var Cible = "<div id='Cible' style:'background-color:#00EEFF;'>Cible<br><input name='Cible' value='Cible' size=10></div>";
function AfficheXML(FormeXSL,Cible) {
// chargement du fichier XML
var xmlObj = new ActiveXObject("Microsoft.XMLDOM");
xmlObj.async = false;
xmlObj.load("phpfrance.xml");
// chargement du fichier XSL
var xslObj = new ActiveXObject("Microsoft.XMLDOM");
xslObj.async = false;
xslObj.load(FormeXSL);
// transformation en Html
var htmObj = xmlObj.transformNode(xslObj);
document.getElementById(Cible).innerHTML = htmObj;
}
function EffaceXML() {
document.getElementById('Cible').innerHTML = Cible;
}
</script>
</header>
<body onload="EffaceXML()">
<div id='Début' onclick="AfficheXML('phpfrance.xsl','Cible')">cliquez moi pour afficher le XML<br>
<input name='Début' value='Début' size=10>
</div>
<div id='Cible'></div>
<div id='Suite' style:'background-color:#FF00FF;'
onclick="EffaceXML()">cliquez moi pour effacer le XML et remettre le input du début<br>
<input name='Suite' value='Suite' size=10>
</div>
</body>
</html>
Code : Tout sélectionner
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
<xsl:template match="/">
<span>
Matricule
<br />
<select name="matricule">
<xsl:for-each select="pieces/piece">
<option><xsl:value-of select="matricule" /></option>
</xsl:for-each>
</select>
</span>
</xsl:template>
</xsl:stylesheet>
Si c'est pour faire cela, j'aurais pu utiliser XMLHTTPRequest avec une sortie texte qui me générait du JAVASCRIPT !
Maintenant, je voudrais afficher selon la sélection du SELECT (notez le caractère bégueillant de l'affaire )
la description de la pièce en cours de sélection (sic)
J'ai lu chez un de mes pottes de forum (h2o) une possibilité d'ajouter derrière le </select> un truc du genre
Code : Tout sélectionner
<br/> Description : <br/>
<input name="description" type="text">
<xsl:attribute name="value">
<xsl:value-of select="pieces/piece[matricule= $matricule]/matricule"/>
</xsl:attribute>
</input>
<br/> Prix: <br/>
<input name="prix" type="text">
<xsl:attribute name="value">
<xsl:value-of select="pieces/piece[matricule= $matricule]/prix"/>
</xsl:attribute>
</input>
J'avoue mon ignorance la plus crasse
Si quelqu'un a une suggestion (constructive ! pas de revendre ma boutique de vélos