Page 1 sur 1

Trie sur les souscategorie boitiers

Posté : 01 févr. 2012, 13:46
par xez7082
bonjour,

voilà je souhaiterai effectuer un trie des souscategorie.
ce que je suis entrain d'essayer de faire a cette adresse, sauf que quand je clic sur la souscategorie, j'ai tout le catalogue qui s'affiche.
http://dinosaures.biz/test.php

extrait de mon fichier xml

Code : Tout sélectionner

<?xml version="1.0" encoding="ISO-8859-1"?> <?DOCTYPE catalogue_informatique SYSTEM "catalogue.dtd"?> <?xml-stylesheet type="text/xsl" href="tablehtml.xsl"?> <catalogue_informatique date="05/01/2012 08:50:21" client="[email protected]"> <product> <categorie><![CDATA[BOITIERS]]></categorie> <souscategorie><![CDATA[Boitiers PC]]></souscategorie> <marque><![CDATA[GIGABYTE]]></marque> <merchantid>29646</merchantid> <modele><![CDATA[GIGABYTE BOITIER GZ-MK01 BLACK GZ-MK1DBM-F00]]></modele> <ref>109480</ref> <code_ean><![CDATA[4719331104290]]></code_ean> <ref_constructeur><![CDATA[GZ-MK1DBM-F00]]></ref_constructeur> <creation>14/01/2011</creation> <descriptif_court><![CDATA[Gigabyte GZ-MK01 - Tour - micro ATX - pas d'alimentation - noir - USB/Audio]]></descriptif_court> <descriptif><![CDATA[Description du produit Gigabyte GZ-MK01 - tour - micro ATX Facteur de forme Tour Dimensions (LxPxH) 18 cm x 43.5 cm x 36 cm Poids 3.9 kg Couleur Noir Connecteurs E/S 2 x Hi-Speed USB 2 x audio Cartes mère prises en charge microATX Fonctionnalités du boîtier système TAC2.0 (Thermally advantaged chassis version 2.0) Périphérique d'alimentation Pas d'alimentation ]]></descriptif> <prix base="EUR HT">25.61</prix> <taxes_gouv base="EUR HT">0</taxes_gouv> <taux_tva>19.6</taux_tva> <net_ttc base="EUR TTC">30.63</net_ttc> <fraislivraison base="EUR TTC">9.90</fraislivraison> <en_stock>oui</en_stock> <stock_actuel>83</stock_actuel> <stock_en_cours_livraison>0</stock_en_cours_livraison> <disponibilite>31/01/2012</disponibilite> <photo><![CDATA[http://www.rs-distribution.fr/images_produit/00029646.jpg]]></photo> <link><![CDATA[http://www.rs-distribution.fr/produit.php?PDT_ID=29646]]></link> <poids base="KG">4.27</poids> </product> <product> <categorie><![CDATA[BOITIERS]]></categorie> <souscategorie><![CDATA[Boitiers PC]]></souscategorie> <marque><![CDATA[GIGABYTE]]></marque> <merchantid>29648</merchantid> <modele><![CDATA[GIGABYTE BOITIER SETTO II 142 GZ-E2BSDX-M00]]></modele> <ref>109481</ref> <code_ean><![CDATA[4719331104474]]></code_ean> <ref_constructeur><![CDATA[GZ-E2BSDX-M00]]></ref_constructeur> <creation>14/01/2011</creation> <descriptif_court><![CDATA[Gigabyte Setto II 142 - Tour - ATX - pas d'alimentation - noir - USB/Audio]]></descriptif_court> <descriptif><![CDATA[Description du produit Gigabyte Setto II 142 tour - ATX Facteur de forme Tour Dimensions (LxPxH) 18.5 cm x 48 cm x 41 cm Poids 5.8 kg Couleur Noir Connecteurs E/S 2 x Hi-Speed USB 2 x audio Cartes mère prises en charge ATX, microATX Fonctionnalités du boîtier système Baies pour lecteur sans vis, canal de la soufflante, Chassis Air Guide (CAG) 1.1, trous passe-câble Périphérique d'alimentation Pas d'alimentation ]]></descriptif> <prix base="EUR HT">39.56</prix> <taxes_gouv base="EUR HT">0</taxes_gouv> <taux_tva>19.6</taux_tva> <net_ttc base="EUR TTC">47.31</net_ttc> <fraislivraison base="EUR TTC">9.90</fraislivraison> <en_stock>oui</en_stock> <stock_actuel>2</stock_actuel> <stock_en_cours_livraison>0</stock_en_cours_livraison> <disponibilite>31/01/2012</disponibilite> <photo><![CDATA[http://www.rs-distribution.fr/images_produit/00029648.jpg]]></photo> <link><![CDATA[http://www.rs-distribution.fr/produit.php?PDT_ID=29648]]></link> <poids base="KG">6.8</poids> </product> <product> <categorie><![CDATA[BOITIERS]]></categorie> <souscategorie><![CDATA[Boitiers PC]]></souscategorie> <marque><![CDATA[GIGABYTE]]></marque> <merchantid>33747</merchantid> <modele><![CDATA[GIGABYTE BOITIER SETTO 1020 BLACK GZ-AX2CBS-SNB]]></modele> <ref>109482</ref> <code_ean><![CDATA[4719331183448]]></code_ean> <ref_constructeur><![CDATA[GZ-AXICBS-SNB]]></ref_constructeur> <creation>22/07/2011</creation> <descriptif_court><![CDATA[Gigabyte Setto 1000 GZ-AX1CBS-SNB - Tour - ATX - pas d'alimentation - noir - USB/FireWire/Audio]]></descriptif_court> <descriptif><![CDATA[Description du produit Gigabyte Setto 1000 GZ-AX1CBS-SNB - tour - ATX Facteur de forme Tour Dimensions (LxPxH) 18.5 cm x 48 cm x 41 cm Couleur Noir Connecteurs E/S 2 x Hi-Speed USB 2 x audio 1 x IEEE 1394 (FireWire) Nombre de ventilateurs installés 2 Cartes mère prises en charge ATX, microATX Fonctionnalités du boîtier système Dispositifs de retenue de carte PCI sans vis, baies pour lecteur sans vis, canal de la soufflante, Chassis Air Guide (CAG) 1.1 ]]></descriptif> <prix base="EUR HT">44.37</prix> <taxes_gouv base="EUR HT">0</taxes_gouv> <taux_tva>19.6</taux_tva> <net_ttc base="EUR TTC">53.07</net_ttc> <fraislivraison base="EUR TTC">9.90</fraislivraison> <en_stock>oui</en_stock> <stock_actuel>6</stock_actuel> <stock_en_cours_livraison>0</stock_en_cours_livraison> <disponibilite>31/01/2012</disponibilite> <photo><![CDATA[http://www.rs-distribution.fr/images_produit/00033747.jpg]]></photo> <link><![CDATA[http://www.rs-distribution.fr/produit.php?PDT_ID=33747]]></link> <poids base="KG">5.6</poids> </product> <product> <categorie><![CDATA[BOITIERS]]></categorie> <souscategorie><![CDATA[Boitiers PC]]></souscategorie> <marque><![CDATA[GIGABYTE]]></marque> <merchantid>33748</merchantid> <modele><![CDATA[GIGABYTE BOITIER SETTO 1024 GZ-AXBS11-CNB]]></modele> <ref>109483</ref> <code_ean><![CDATA[4719331193003]]></code_ean> <ref_constructeur><![CDATA[GZ-AXBS11-CNB]]></ref_constructeur> <creation>22/07/2011</creation> <descriptif_court><![CDATA[Gigabyte Setto 1024 GZ-AXBS11-CNB - Tour - ATX - noir - USB/Audio]]></descriptif_court> <descriptif><![CDATA[Description du produit Gigabyte Setto 1024 GZ-AXBS11-CNB - tour - ATX Facteur de forme Tour Dimensions (LxPxH) 20.2 cm x 50.3 cm x 42.5 cm Poids 5.7 kg Couleur Noir Connecteurs E/S 2 x Hi-Speed USB 1 x audio Nombre de ventilateurs installés 2 Cartes mère prises en charge ATX, microATX Fonctionnalités du boîtier système Dispositifs de retenue de carte PCI sans vis, baies pour lecteur sans vis, canal de la soufflante, Chassis Air Guide (CAG) 1.1 ]]></descriptif> <prix base="EUR HT">44.37</prix> <taxes_gouv base="EUR HT">0</taxes_gouv> <taux_tva>19.6</taux_tva> <net_ttc base="EUR TTC">53.07</net_ttc> <fraislivraison base="EUR TTC">9.90</fraislivraison> <en_stock>oui</en_stock> <stock_actuel>4</stock_actuel> <stock_en_cours_livraison>0</stock_en_cours_livraison> <disponibilite>31/01/2012</disponibilite> <photo><![CDATA[http://www.rs-distribution.fr/images_produit/00033748.jpg]]></photo> <link><![CDATA[http://www.rs-distribution.fr/produit.php?PDT_ID=33748]]></link> <poids base="KG">6.3</poids> </product> <product> <categorie><![CDATA[BOITIERS]]></categorie> <souscategorie><![CDATA[Boitiers PC]]></souscategorie> <marque><![CDATA[GIGABYTE]]></marque> <merchantid>33749</merchantid> <modele><![CDATA[GIGABYTE BOITIER SETTO 1200 GZ-AXBS12-CNB]]></modele> <ref>109484</ref> <code_ean><![CDATA[4719331193010]]></code_ean> <ref_constructeur><![CDATA[GZ-AXBS12-CNB]]></ref_constructeur> <creation>22/07/2011</creation> <descriptif_court><![CDATA[Gigabyte Setto 1200 GZ-AXBS12-CNB - Tour - ATX - pas d'alimentation - noir - USB/Audio]]></descriptif_court> <descriptif><![CDATA[Description du produit Gigabyte Setto 1200 GZ-AXBS12-CNB - tour - ATX Facteur de forme Tour Dimensions (LxPxH) 20.5 cm x 51 cm x 43.5 cm Poids 5.9 kg Couleur Noir Connecteurs E/S 2 x Hi-Speed USB 2 x audio Nombre de ventilateurs installés 2 Cartes mère prises en charge ATX, microATX Fonctionnalités du boîtier système Canal de la soufflante, Chassis Air Guide (CAG) 1.1 Périphérique d'alimentation Pas d'alimentation ]]></descriptif> <prix base="EUR HT">43.13</prix> <taxes_gouv base="EUR HT">0</taxes_gouv> <taux_tva>19.6</taux_tva> <net_ttc base="EUR TTC">51.58</net_ttc> <fraislivraison base="EUR TTC">9.90</fraislivraison> <en_stock>oui</en_stock> <stock_actuel>4</stock_actuel> <stock_en_cours_livraison>0</stock_en_cours_livraison> <disponibilite>31/01/2012</disponibilite> <photo><![CDATA[http://www.rs-distribution.fr/images_produit/00033749.jpg]]></photo> <link><![CDATA[http://www.rs-distribution.fr/produit.php?PDT_ID=33749]]></link> <poids base="KG">5.85</poids> </product> <product> <categorie><![CDATA[BOITIERS]]></categorie> <souscategorie><![CDATA[Alimentation pour boitier]]></souscategorie> <marque><![CDATA[GIGABYTE]]></marque> <merchantid>21754</merchantid> <modele><![CDATA[GIGABYTE SuperB 460 GE-R460-V1 - Alim. 460W]]></modele> <ref>109547</ref> <code_ean/> <ref_constructeur/> <creation>26/01/2010</creation> <descriptif_court><![CDATA[Alimentation ( interne ) - ATX12V 2.3 - CA 200-240 V - 460 Watt - PFC active]]></descriptif_court> <descriptif><![CDATA[ Performante, efficace et stable, l'alimentation Gigabyte SUPERB 460W bénéficie d'une qualité de fabrication irréprochable et sera parfaitement adaptée pour équiper les configurations de dernière génération. Connectique complète, fonctionnement silencieux, haute capacité de dissipation thermique, circuit Active PFC, ventilateur 120 mm, protection contre les surtensions sont au menu pour des résultats probants en toute circonstance. Puissance de l'alimentation :  460 Watt(s) Norme alimentation :  ATX 2.2 Connecteurs :  +12V (Alimentation P4), 4x Alimentation Serial ATA, ATX 24 Broches, 2x Disquette (Molex 4 Broches Femelle), 4x Molex (4 broches) Femelle, PCI Express 6 broches Modulaire :  non Silencieux(se) :  oui Multi-GPU :  Aucun Taille de ventilateur :  120 mm Certification 80 PLUS :  non ]]></descriptif> <prix base="EUR HT">31.86</prix> <taxes_gouv base="EUR HT">0</taxes_gouv> <taux_tva>19.6</taux_tva> <net_ttc base="EUR TTC">38.10</net_ttc> <fraislivraison base="EUR TTC">9.90</fraislivraison> <en_stock>oui</en_stock> <stock_actuel>225</stock_actuel> <stock_en_cours_livraison>0</stock_en_cours_livraison> <disponibilite>31/01/2012</disponibilite> <photo><![CDATA[http://www.rs-distribution.fr/images_produit/00021754.jpg]]></photo> <link><![CDATA[http://www.rs-distribution.fr/produit.php?PDT_ID=21754]]></link> <poids base="KG">1.82</poids> </product> </catalogue_informatique>
et voilà le code que j'ai du completement foiré.
<html xmlns="http://www.w3.org/1999/xhtml">
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
		<title>Test avec sélection de la catégorie</title>
		</head>
	<body>	
<?php
	// On récupère la code de la souscatégorie sélectionnée :
	if (isset($_POST["selBOITIERS"]))
		$BOITIERS = $_POST["selBOITIERS"];
	else
		$BOITIERS = "";
		
	function addOptionBOITIERS($value, $text) {
		// Cette fonction permet d'ajouter un élément à une Combo
		// $value : valeur de l'élément à ajouter
		// $text  : Texte (valeur affichée) de l'élément
		
		// On référence la variable globale $categorie, afin de pouvoir
		// l'utiliser à l'intérieur de la fonction
		global $BOITIERS;	
		
		// On ajoute le texte <option value="..."
		echo '<option value="'.$value.'"';
		
		// Si l'élément à ajouter correspond à la catégorie sélectionnée, on ajoute
		// selected="selected", afin de maintenir l'état sélectionné :
		if ($value == $BOITIERS)
			echo ' selected="selected"';
		
		// Et on termine la balise option en y ajoutant le texte :
		echo '>'.$text."</option>";
	}
	
	function getProductsHtml()	{
		// Cette fonction permet d'afficher le catalogue XML, en appliquant
		// une feuille de style XSLT
		
		// On référence la variable globale $souscategorie, afin de pouvoir
		// l'utiliser à l'intérieur de la fonction
		global $BOITIERS;	
		
		// Si aucune catégorie n'est sélectionnée, on renvoie une chaine vide... 
		// (inutile de traiter le XSL...)
		if ($BOITIERS == "") return "";

		// On définit un nouveau processeur XSLT :
		$xsltProc = new XSLTProcessor();
		
		// On charge le catalogue
		$xml = new DOMDocument();
		$xml->load("catalogue_rsd.xml");	// URL du fichier XML
		
		// On charge la feuille de style
		$xsl = new DOMDocument();
		$xsl->load("tablehtml.xsl");	// URL du fichier XSL
		
		// On fournit la feuille de style au processeur XSLT :
		$xsltProc->importStylesheet($xsl);
		
		// On passe la catégorie en paramètre. myCategory est définie dans la feuille de 
		// style, on lui donne la valeur de la catégorie sélectionnée :
		$xsltProc->setParameter("", "myCategory", $BOITIERS);
		
		// Et on applique la feuille de style au catalogue :
		$html = $xsltProc->transformToXML($xml);
		
		return $html;

	}
		
?>		
	
	
		<form name="formulaire_test" method="POST">
			Catégorie : <select id="selBOITIERS" name="selBOITIERS" onChange="this.form.submit();">
			<?php
				addOptionBOITIERS("", "BOITIER");
				addOptionBOITIERS("-", "");	
				addOptionBOITIERS("Accessoires pour alimentation", "Accessoires pour alimentation");
				addOptionBOITIERS("Alimentation pour boitier", "Alimentation pour boitier");
				addOptionBOITIERS("Boitier montage en rack", "Boitier montage en rack");
				addOptionBOITIERS("Boitiers PC", "Boitiers PC");
				addOptionBOITIERS("Ventilateur pour boitier", "Ventilateur pour boitier");
 
			?>				
			</select>
		</form>
	
		<div>
			<?php echo getProductsHtml(); ?>
		</div>
		
merci pour votre aide