Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks > XML > DOM
DOM Forum d'entraide pour l'extension DOM permettant de manipuler des documents XML en PHP 5 (approche DOM). Avant de poster -> tutoriels DOM
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 04/07/2007, 08h53   #1
Futur Membre du Club
 
Inscription : mars 2004
Messages : 97
Détails du profil
Informations forums :
Inscription : mars 2004
Messages : 97
Points : 15
Points : 15
Par défaut [DOM] Compter le nombre de titre

Bonjour à tous,
J'ai un fichier xml qui contient des titres de livres et en début de ce fichier il y a la balise <ENOTICE COUNT="12"> qui indique le nombre de livre au total et et je voudrai afficher ce nombre .
Pourriez-vous m'aider ? merci beaucoup

voici mon fichier xml

Code XML :
1
2
3
4
5
6
7
 
<?xml version="1.0" encoding="UTF-8"?>
<ENOTICE COUNT="2">
<RECORD><TITRE TYPTITRE="TP1">Photographie numérique médicale</TITRE><AUTEUR SOURCE="Electre" SOURCEID="0">Ben Slama, Lotfi</AUTEUR><AUTEUR SOURCE="Electre" SOURCEID="0">Chossegros, Cyrille</AUTEUR><RESPONSABLE>Lotfi Ben Slama, Cyrille Chossegros</RESPONSABLE><ARTICLE><RELIURE>Broché</RELIURE><ISBN>2-294-02130-4</ISBN><EAN>9782294021305</EAN><PRIX>25,00</PRIX><DEVISE>EUR</DEVISE><TVA ID="4" SOURCE="Electre">5,50</TVA><DATE>12/09/2007</DATE><DISPO ID="2" SOURCE="Electre">A paraître</DISPO></ARTICLE><EDITEUR SOURCE="Electre" SOURCEID="0"><NOM>Masson</NOM><LIEU>Issy-les-Moulineaux (Hauts-de-Seine)</LIEU></EDITEUR><COLLECTION SOURCE="Electre" SOURCEID="0"><COLLTITRE>Abrégés de médecine</COLLTITRE></COLLECTION><DESCRIPTION><PAGE>128 p.</PAGE><FORMAT>21 x 14 cm</FORMAT><ILLUSTRATION>illustrations en noir et blanc</ILLUSTRATION></DESCRIPTION><THEME SOURCE="Electre">610 Médecine</THEME><THEMGENR><THEME CODE="T160010">Médecine Médecine</THEME></THEMGENR></RECORD>
<RECORD><TITRE TYPTITRE="TP1">Comment réussir ses pratiques au DEMERM ? : diplôme d'Etat de manipulateur en électro-radiologie médicale</TITRE><AUTEUR SOURCE="Electre" SOURCEID="0">Bordas, Ludovic</AUTEUR><AUTEUR SOURCE="Electre" SOURCEID="0">Vissio, Guillaume</AUTEUR><RESPONSABLE>Ludovic Bordas, Guillaume Vissio</RESPONSABLE><ARTICLE><RELIURE>Broché</RELIURE><ISBN>978-2-85385-298-2</ISBN><EAN>9782853852982</EAN><PRIX>11,00</PRIX><DEVISE>EUR</DEVISE><TVA ID="4" SOURCE="Electre">5,50</TVA><DATE>19/02/2007</DATE><DISPO ID="1" SOURCE="Electre">Disponible</DISPO></ARTICLE><EDITEUR SOURCE="Electre" SOURCEID="0"><NOM>Heures de France</NOM><LIEU>Paris</LIEU></EDITEUR><COLLECTION SOURCE="Electre" SOURCEID="0"><COLLTITRE>Bureau des étudiants en radiologie</COLLTITRE></COLLECTION><DESCRIPTION><PAGE>62 p.</PAGE><FORMAT>20 x 12 cm</FORMAT></DESCRIPTION><THEME SOURCE="Electre">610 Médecine</THEME><THEMGENR><THEME CODE="T160010">Médecine Médecine</THEME></THEMGENR></RECORD>
 
</ENOTICE>
et voici mon code pour récupérer le titre dans un select (et ca marche)

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
 
 
<select name="COUNT" class="formulaire7" id="COUNT" onChange="theme.value=this.value;txtTitreDeterminant.value=this.value;numcollection.value=this.value;ean.value=this.value;annee.value=this.value;editeur.value=this.value;collection.value=this.value;auteur.value=this.value; titre.value=this.value; isbn.value=this.value;updateTitreXML();"  onclick="InitModif(this)">
          <?php
		  ///////////////////////////AFFICHAGE DU PRIX DANS UN SELECT///////////////////////////////
 
	$k=1;
    $enotice = $xml["ENOTICE"]["#"]["RECORD"]; 
    $nom_prix = array();
    for($i = 0; $i < sizeof($enotice); $i++) {      
        $entree = $enotice[$i];   
        $k++;
        // affichage d'EDITEUR (element compos&eacute;) 
        $record = $entree["#"]["ARTICLE"];
		if (array_key_exists ("ARTICLE", $entree["#"])){ 
            $prix = $entree["#"]["ARTICLE"][0]["#"]; 
            $nom = $prix["PRIX"][0]["#"];
			$nom_prix = $nom;
        } 
        else {
		   $nom_prix = " "; 
        }
	   $nom_prix = number_format($nom_prix * 2,2);
	   echo("<option value=$k>$nom_prix</option>");            
     } 
 
?>
                </select>
iomega est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/07/2007, 11h20   #2
Membre Expert
 
Avatar de Bidouille
 
Inscription : mars 2003
Messages : 1 158
Détails du profil
Informations forums :
Inscription : mars 2003
Messages : 1 158
Points : 1 054
Points : 1 054
Tu extraits la chaîne entre tes balises <ENOTICE> et tu comptes les occurrences de <RECORD>
__________________
Rédacteur PHP / Delphi ADO / Novell / OpenOffice.org

Inutile de m'envoyer vos questions par MP, je ne réponds que par le forum.
Bidouille est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/07/2007, 11h22   #3
Futur Membre du Club
 
Inscription : mars 2004
Messages : 97
Détails du profil
Informations forums :
Inscription : mars 2004
Messages : 97
Points : 15
Points : 15
Par défaut Extraire

Merci beaucoup de ta réponse.
Il faudrait juste extraire le "<ENOTICE COUNT="2">" mais je ne sais pas comment pourrais-tu m'aider ou me donner un exemple ?
Merci beaucoup
iomega est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/07/2007, 14h41   #4
Membre régulier
 
Développeur Web
Inscription : janvier 2007
Messages : 83
Détails du profil
Informations personnelles :
Âge : 30

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : janvier 2007
Messages : 83
Points : 97
Points : 97
Citation:
Envoyé par iomega
Merci beaucoup de ta réponse.
Il faudrait juste extraire le "<ENOTICE COUNT="2">" mais je ne sais pas comment pourrais-tu m'aider ou me donner un exemple ?
Merci beaucoup
En javascript, ça donnerait un truc du genre

var en=document.getElementsByTagName("ENOTICE");
var total=en[0].count.value;

ou alors, plus simple

var rec=document.getElementsByTagName("RECORD");
var total=rec.length;

Après, tu dois peut etre obligatoirement récupéré le résultat en PHP...
yohan22 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/07/2007, 16h12   #5
Futur Membre du Club
 
Inscription : mars 2004
Messages : 97
Détails du profil
Informations forums :
Inscription : mars 2004
Messages : 97
Points : 15
Points : 15
Merci beaucoup mais je voudrai y faire avec php
iomega est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/07/2007, 20h45   #6
Membre expérimenté
 
Inscription : septembre 2006
Messages : 685
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 685
Points : 564
Points : 564
Code :
1
2
preg_match('#(?<=<ENOTICE COUNT=")\d+#', $xml, $n);
echo $n[0];
Xunil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/07/2007, 17h55   #7
Membre confirmé
 
Inscription : mai 2006
Messages : 196
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 196
Points : 278
Points : 278
Hum , utilise les fonctions DOM de php tu pourra même modifier ton fichier XML si tu veut avec :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
//Instance de la classe DomDocument
$dom = new DOMDocument('1.0', 'UTF-8');
 
//Ouverture du fichier XML
$cheminDuFichierXML = 'xml/monfichier.xml';
$dom->load( $cheminDuFichierXML );
 
//On récupère l'element racine, ENOTICE
$rootElement = $dom->getElementsByTagName( 'ENOTICE' );
 
//Puis la valeur de sont attribut COUNT
$countNumber = $rootElement->getAttribute( 'COUNT' );
//$countNumber possède la valeur de l'attribut COUNT dans le fichier XML.
 
//Ou encore, on récupere tous les éléments RECORD
$recordElements = $dom->getElementsByTagName( 'RECORD' );
//Et on lit l'attribut de classe LENGTH pour connaître le nombre d'éléments
//récupérer.
$countNumber = $recordElements->length;
?>
meliandah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/07/2007, 10h25   #8
Futur Membre du Club
 
Inscription : mars 2004
Messages : 97
Détails du profil
Informations forums :
Inscription : mars 2004
Messages : 97
Points : 15
Points : 15
Merci à vous tous pour vos réponse.
Une dernière question ou l'on trouve les fonctions DOM de php ?
iomega est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/07/2007, 10h27   #9
Membre Expert
 
Inscription : janvier 2005
Messages : 2 288
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 2 288
Points : 2 287
Points : 2 287
La documentation officielle de PHP est là pour ça !
Documentation de DOM
koopajah est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 21h17.


 
 
 
 
Partenaires

Hébergement Web