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 15/08/2011, 14h18   #1
Invité de passage
 
Inscription : juin 2006
Messages : 84
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 84
Points : 4
Points : 4
Par défaut Trie, limiter nombre affichage.

bonjour,
Je test actuellement simplexml mais d’après se que je vois on est assez limiter alors je passe sur dom pour pouvoir avoir plus de possibilité.

actuellement j'ai un fichier xml dont je fais simplement afficher les données dans un page php (comme avec simplexml).

maintenant je souhaiterai pouvoir organiser mes données comme par exemple trier par date, limiter le nombre d'affichages a 10 (ou plus ou moins) et c'est là, étant débutant dans se type de programmation que j'ai besoin de votre aide.

je voudrai avoir un affichage trié par date (il y a bien un champ date dans le xml (date_debut et aussi un date_fin).

Voici mon code actuel que je voudrai adapté pour avoir le trie croissant par date_debut. (avec sql pas de soucis mais avec xml je sais pas)

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
 
$fichier = 'monfichier.xml';
$dom = new DOMDocument();
if (!$dom->load($fichier)) {
    die('Impossible de charger le fichier XML');
}
 
$itemList = $dom->getElementsByTagName('sit_liste');
foreach ($itemList as $item) 
{
    $titre = $item->getElementsByTagName('NOM');
	if ($titre->length > 0) 
	{
        echo $titre->item(0)->nodeValue;
    } 
 
	else 
	{
        echo '(Sans Nom)';
    }
 
    echo '<br />'."\n";
 
    $commune = $item->getElementsByTagName('ADRPROD_LIBELLE_COMMUNE');
    if ($desc->length > 0) 
	{
        echo ' Commune : '.$commune->item(0)->nodeValue.'<br/>'."\n";
    }
 
    $debut = $item->getElementsByTagName('DATE_DEBUT');
    if ($desc->length > 0) 
	{
        echo ' DATE_DEBUT : '.$debut->item(0)->nodeValue.'<br/>'."\n";
    }
 
    $desc = $item->getElementsByTagName('COMMENTAIRE');
    if ($desc->length > 0) 
	{
        echo ' '.$desc->item(0)->nodeValue.'<br/>'."\n";
    }
 
    echo '<br/>'."\n";
}
fabrice88 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/08/2011, 19h23   #2
Expert Confirmé
 
Avatar de Séb.
 
Inscription : mars 2005
Messages : 2 823
Détails du profil
Informations personnelles :
Âge : 34
Localisation : France

Informations professionnelles :
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : mars 2005
Messages : 2 823
Points : 3 454
Points : 3 454
Citation:
Je test actuellement simplexml mais d’après se que je vois on est assez limiter alors je passe sur dom pour pouvoir avoir plus de possibilité.
A ma connaissance il n'y a pas grand chose que DOM puisse faire et pas SimpleXML.

Citation:
maintenant je souhaiterai pouvoir organiser mes données comme par exemple trier par date
Traitement à faire avec PHP. Possible avec XSLT, mais bof.

Citation:
limiter le nombre d'affichages a 10 (ou plus ou moins)
Traitement à faire avec PHP ou une requête XPath (qui est aussi dispo sous SimpleXML) type //target[position( ) = 1 and position( ) <= 10]
__________________
Un problème exposé clairement est déjà à moitié résolu
Keep It Smart and Simple
Séb. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/08/2011, 13h55   #3
Modérateur
 
Avatar de ThomasR
 
Homme Thomas Rambaud
Développeur Web
Inscription : décembre 2007
Messages : 2 140
Détails du profil
Informations personnelles :
Nom : Homme Thomas Rambaud
Âge : 25
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : décembre 2007
Messages : 2 140
Points : 2 885
Points : 2 885
Citation:
Envoyé par Séb. Voir le message
A ma connaissance il n'y a pas grand chose que DOM puisse faire et pas SimpleXML.


Traitement à faire avec PHP. Possible avec XSLT, mais bof.


Traitement à faire avec PHP ou une requête XPath (qui est aussi dispo sous SimpleXML) type //target[position( ) = 1 and position( ) <= 10]
Juste pour info, position() renvoie la position dans le jeu de résultats. Si un tri est appliqué au jeu de résultat cela se fait à postériori du selecteur, la limitation ne peut donc se faire que dans la boucle elle-même :

Fonctionnera pas :
Code :
1
2
3
4
<xsl:for-each select="//target[position( ) &lt;= 10]">
    <xsl:sort order="descending" select="sort_key" />
    <!-- ne va trier que les noeuds entre 1 et 10 -->
</xsl:for-each>
Fonctionnera :

Code :
1
2
3
4
5
6
<xsl:for-each select="//target">
    <xsl:sort order="descending" select="sort_key" />
    <xsl:if test="position() &lt;= 10">
        <!-- va trier tous les noeuds puis n'afficher que les dix premiers  -->
    </xsl:if>
</xsl:for-each>
__________________
Développeur Web, accessoirement geek (ou l'inverse)
http://thomasrambaud.com
ThomasR est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/08/2011, 15h10   #4
Invité de passage
 
Inscription : juin 2006
Messages : 84
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 84
Points : 4
Points : 4
Merci pour vos réponses.
Pour le nombre d'affichage j'ai opté pour php.
Code :
1
2
3
4
5
6
7
8
9
10
11
12
 
$i=0; 
$maxactu = 10; //nombre max actu à afficher
 
//Affichage des données du fichier XML 
foreach ($itemList as $item) 
{
 
$i++;
echo 'i = '.$i;
if ($i <= $maxactu ) {
.......
Par contre pour faire le trie en fonction des dates qui sont de le xml je bloc. j'ai essayé la fonction sort() mais je n'arrive pas a trier.
fabrice88 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/08/2011, 17h51   #5
Expert Confirmé
 
Avatar de Séb.
 
Inscription : mars 2005
Messages : 2 823
Détails du profil
Informations personnelles :
Âge : 34
Localisation : France

Informations professionnelles :
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : mars 2005
Messages : 2 823
Points : 3 454
Points : 3 454
Donne-nous des extraits significatifs et fonctionnels de ton XML et de ton PHP afin qu'on puisse voir ce qui bloque et t'aider.
__________________
Un problème exposé clairement est déjà à moitié résolu
Keep It Smart and Simple
Séb. 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 09h06.


 
 
 
 
Partenaires

Hébergement Web